diff --git a/_config/_config.yml b/_config/_config.yml index b7aee78..75ffce3 100644 --- a/_config/_config.yml +++ b/_config/_config.yml @@ -6,9 +6,6 @@ Injector: properties: filters: - '%$TestSessionRequestFilter' -Member: - extensions: - - TestSessionMemberExtension --- Name: testsession-setup --- diff --git a/code/TestSessionDatabaseState.php b/code/TestSessionDatabaseState.php deleted file mode 100644 index 04435f5..0000000 --- a/code/TestSessionDatabaseState.php +++ /dev/null @@ -1,18 +0,0 @@ - 'Varchar(255)', - 'Value' => 'Text', - ); - - private static $indexes = array( - 'Key' => true - ); -} \ No newline at end of file diff --git a/code/TestSessionEnvironment.php b/code/TestSessionEnvironment.php index 351fe29..36c0c75 100644 --- a/code/TestSessionEnvironment.php +++ b/code/TestSessionEnvironment.php @@ -38,6 +38,16 @@ class TestSessionEnvironment extends Object { */ private static $test_state_file; + public function __construct() { + parent::__construct(); + + if($this->isRunningTests()) { + $this->state = json_decode(file_get_contents(Director::getAbsFile($this->config()->test_state_file))); + } else { + $this->state = new stdClass; + } + } + /** * Tests for the existence of the file specified by $this->test_state_file */ @@ -248,8 +258,11 @@ class TestSessionEnvironment extends Object { /** * Writes $this->state JSON object into the $this->config()->test_state_file file. */ - private function persistState() { - file_put_contents(Director::getAbsFile($this->config()->test_state_file), json_encode($this->state)); + public function persistState() { + file_put_contents( + Director::getAbsFile($this->config()->test_state_file), + json_encode($this->state, JSON_PRETTY_PRINT) + ); } private function removeStateFile() { diff --git a/code/TestSessionMemberExtension.php b/code/TestSessionMemberExtension.php deleted file mode 100644 index ead8a6f..0000000 --- a/code/TestSessionMemberExtension.php +++ /dev/null @@ -1,39 +0,0 @@ -setCurrentMemberState(); - } - - public function onRegister() { - if(!SapphireTest::using_temp_db()) return; - - $this->setCurrentMemberState(); - } - - public function memberLoggedOut() { - if(!SapphireTest::using_temp_db()) return; - - $state = TestSessionDatabaseState::get()->filter('Key', 'CurrentMemberID')->removeAll(); - } - - protected function setCurrentMemberState() { - $state = TestSessionDatabaseState::get()->find('Key', 'CurrentMemberID'); - if(!$state) { - $state = new TestSessionDatabaseState(array( - 'Key' => 'CurrentMemberID' - )); - } - $state->Value = $this->owner->ID; - $state->write(); - } - -} \ No newline at end of file diff --git a/code/TestSessionRequestFilter.php b/code/TestSessionRequestFilter.php index db8bde5..1adb363 100644 --- a/code/TestSessionRequestFilter.php +++ b/code/TestSessionRequestFilter.php @@ -3,11 +3,20 @@ * Sets state previously initialized through {@link TestSessionController}. */ class TestSessionRequestFilter { + + /** + * @var TestSessionEnvironment + */ + protected $testSessionEnvironment; + + public function __construct() { + $this->testSessionEnvironment = Injector::inst()->get('testSessionEnvironment'); + } public function preRequest($req, $session, $model) { - if(!Injector::inst()->get('TestSessionEnvironment')->isRunningTests()) return; + if(!$this->testSessionEnvironment->isRunningTests()) return; - $testState = Injector::inst()->get('TestSessionEnvironment')->getState(); + $testState = $this->testSessionEnvironment->getState(); // Date and time if(isset($testState->datetime)) { @@ -38,5 +47,11 @@ class TestSessionRequestFilter { } public function postRequest() { + if(!$this->testSessionEnvironment->isRunningTests()) return; + + // Store PHP session + $state = $this->testSessionEnvironment->getState(); + $state->session = Session::get_all(); + $this->testSessionEnvironment->persistState(); } } \ No newline at end of file