diff --git a/_config/_config.yml b/_config/_config.yml index 425ffd9..b28182d 100644 --- a/_config/_config.yml +++ b/_config/_config.yml @@ -5,4 +5,7 @@ Injector: RequestProcessor: properties: filters: - - '%$TestSessionRequestFilter' \ No newline at end of file + - '%$TestSessionRequestFilter' +Member: + extensions: + - TestSessionMemberExtension \ No newline at end of file diff --git a/code/TestSessionDatabaseState.php b/code/TestSessionDatabaseState.php new file mode 100644 index 0000000..04435f5 --- /dev/null +++ b/code/TestSessionDatabaseState.php @@ -0,0 +1,18 @@ + 'Varchar(255)', + 'Value' => 'Text', + ); + + private static $indexes = array( + 'Key' => true + ); +} \ No newline at end of file diff --git a/code/TestSessionMemberExtension.php b/code/TestSessionMemberExtension.php new file mode 100644 index 0000000..e209bd7 --- /dev/null +++ b/code/TestSessionMemberExtension.php @@ -0,0 +1,29 @@ +find('Key', 'CurrentMemberID'); + if(!$state) { + $state = new TestSessionDatabaseState(array( + 'Key' => 'CurrentMemberID' + )); + } + $state->Value = $this->owner->ID; + $state->write(); + } + + public function memberLoggedOut() { + if(!SapphireTest::using_temp_db()) return; + + $state = TestSessionDatabaseState::get()->filter('Key', 'CurrentMemberID')->removeAll(); + } + +} \ No newline at end of file