Skip to content

Commit

Permalink
Improvements to the unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
lukasbestle authored and bastianallgeier committed Oct 7, 2019
1 parent fdba72b commit 09c9b2c
Showing 1 changed file with 40 additions and 33 deletions.
73 changes: 40 additions & 33 deletions tests/Cms/Users/UserTest.php
Expand Up @@ -239,56 +239,63 @@ public function testUserModel()

User::$models = [];
}
public function testLoginHooks()

public function testLoginLogoutHooks()
{
$phpUnit = $this;

$phpunit = $this;

$calls = 0;
$logoutSession = false;
$app = new App([
'users' => [
['email' => 'test@getkirby.com']
],
'hooks' => [
'user.login:before' => function ($user, $session) use ($phpUnit) {
$phpUnit->assertEquals('test@getkirby.com', $user->email());
$phpUnit->assertEquals($session, S::instance());
'user.login:before' => function ($user, $session) use ($phpunit, &$calls) {
$phpunit->assertEquals('test@getkirby.com', $user->email());
$phpunit->assertEquals($session, S::instance());

$calls += 1;
},
'user.login:after' => function ($user, $session) use ($phpUnit) {
$phpUnit->assertEquals('test@getkirby.com', $user->email());
$phpUnit->assertEquals($session, S::instance());
}
]
]);
'user.login:after' => function ($user, $session) use ($phpunit, &$calls) {
$phpunit->assertEquals('test@getkirby.com', $user->email());
$phpunit->assertEquals($session, S::instance());

$user = $app->user('test@getkirby.com');
$user->loginPasswordless();
$user->logout();
}
$calls += 2;
},
'user.logout:before' => function ($user, $session) use ($phpunit, &$calls) {
$phpunit->assertEquals('test@getkirby.com', $user->email());
$phpunit->assertEquals($session, S::instance());

public function testLogoutHooks()
{
$phpUnit = $this;

$app = new App([
'users' => [
['email' => 'test@getkirby.com']
],
'hooks' => [
'user.logout:before' => function ($user, $session) use ($phpUnit) {
$phpUnit->assertEquals('test@getkirby.com', $user->email());
$phpUnit->assertEquals($session, S::instance());
$calls += 4;
},
'user.logout:after' => function ($user, $session) use ($phpUnit) {
$phpUnit->assertEquals('test@getkirby.com', $user->email());
if ($session !== null) {
$phpUnit->assertEquals($session, S::instance());
'user.logout:after' => function ($user, $session) use ($phpunit, &$calls, &$logoutSession) {
$phpunit->assertEquals('test@getkirby.com', $user->email());

if ($logoutSession === true) {
$phpunit->assertEquals($session, S::instance());
$phpunit->assertEquals('value', S::instance()->get('some'));
} else {
$phpunit->assertNull($session);
}

$calls += 8;
}
]
]);

// without prepopulated session
$user = $app->user('test@getkirby.com');
$user->loginPasswordless();
$user->logout();

// with a session with another value
S::instance()->set('some', 'value');
$logoutSession = true;
$user->loginPasswordless();
$user->logout();

// each hook needs to be called exactly twice
$this->assertEquals((1 + 2 + 4 + 8) * 2, $calls);
}
}

0 comments on commit 09c9b2c

Please sign in to comment.