From 9da7574f28577d66569bd99fa9b543f4bc6d764a Mon Sep 17 00:00:00 2001 From: Igor Nadj Date: Mon, 19 Oct 2015 15:03:25 +1300 Subject: [PATCH] ENH: allow specify database by filename --- README.md | 3 ++- code/TestSessionController.php | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 62be52b..703fade 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,8 @@ on "dev/testsession/start": (see [fixture format docs](http://doc.silverstripe.org/framework/en/topics/testing/fixtures)). 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. + * `importDatabasePath`: Absolute path to a database dump to load into a newly created temporary database. + * `importDatabaseFilename`: File name for a database dump to load, relative to `TestSessionController.database_templates_path` * `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, diff --git a/code/TestSessionController.php b/code/TestSessionController.php index 275a94d..9723ab2 100644 --- a/code/TestSessionController.php +++ b/code/TestSessionController.php @@ -94,9 +94,24 @@ class TestSessionController extends Controller { $this->environment->startTestSession($params, $id); // Optionally import database - if(!empty($params['importDatabasePath'])) { + if(!empty($params['importDatabasePath']) || !empty($params['importDatabaseFilename'])) { + $absPath = ''; + + // by path + if(!empty($params['importDatabasePath'])) { + $absPath = $params['importDatabasePath']; + + // by filename + }else if(!empty($params['importDatabaseFilename'])) { + foreach($this->getDatabaseTemplates() as $tAbsPath => $tFilename){ + if($tFilename === $params['importDatabaseFilename']){ + $absPath = $tAbsPath; + break; + } + } + } $this->environment->importDatabase( - $params['importDatabasePath'], + $absPath, !empty($params['requireDefaultRecords']) ? $params['requireDefaultRecords'] : false ); } else if(!empty($params['requireDefaultRecords']) && $params['requireDefaultRecords']) {