diff --git a/README.md b/README.md index 82aed1e..78940e6 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ on "dev/testsession/start": The path should be relative to the webroot. * `createDatabase`: Create a temporary database. * `createDatabaseTemplate`: Path to a database dump to load into a newly created temporary database. + * `requireDefaultRecords`: Include default records as defined on the model classes (in PHP) * `database`: Set an alternative database name in the current browser session as a cookie. Does not actually create the database, that's usually handled by `SapphireTest::create_temp_db()`. diff --git a/code/TestSessionController.php b/code/TestSessionController.php index 9ee4bf4..34c41b0 100644 --- a/code/TestSessionController.php +++ b/code/TestSessionController.php @@ -100,6 +100,7 @@ class TestSessionController extends Controller { $dropdown->setSource($databaseTemplates) ->setEmptyString('Empty database'); } + $fields->push(new CheckboxField('requireDefaultRecords', 'Create default data?')); $fields->merge($this->getBaseFields()); $form = new Form( $this, diff --git a/code/TestSessionEnvironment.php b/code/TestSessionEnvironment.php index e5b869e..afbec73 100644 --- a/code/TestSessionEnvironment.php +++ b/code/TestSessionEnvironment.php @@ -197,7 +197,9 @@ class TestSessionEnvironment extends Object { // In case the dump involved CREATE TABLE commands, we need to ensure // the schema is still up to date $dbAdmin = new DatabaseAdmin(); - $dbAdmin->doBuild(true /*quiet*/, false /*populate*/); + $populate = (isset($state->requireDefaultRecords) && $state->requireDefaultRecords); + Versioned::set_reading_mode(''); + $dbAdmin->doBuild(true /*quiet*/, $populate); } if(isset($state->createDatabase)) unset($state->createDatabase);