diff options
| author | Greg Roach <fisharebest@webtrees.net> | 2019-01-31 14:28:26 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@webtrees.net> | 2019-01-31 19:45:07 +0000 |
| commit | e5a6b4d4f6f6e7ff2fba7ae2cf27546ae68a79cc (patch) | |
| tree | 6d3095048a00ab3941129f8f5231d4b9483776d2 /tests | |
| parent | 3c04ac885329c9488ff9db0a765e872bf41b9781 (diff) | |
| download | webtrees-e5a6b4d4f6f6e7ff2fba7ae2cf27546ae68a79cc.tar.gz webtrees-e5a6b4d4f6f6e7ff2fba7ae2cf27546ae68a79cc.tar.bz2 webtrees-e5a6b4d4f6f6e7ff2fba7ae2cf27546ae68a79cc.zip | |
Refactor class User - use NULL-object pattern for guests and temporary users, create UserService
Diffstat (limited to 'tests')
36 files changed, 676 insertions, 278 deletions
diff --git a/tests/TestCase.php b/tests/TestCase.php index b768752063..f3edfc970c 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -17,11 +17,13 @@ declare(strict_types=1); namespace Fisharebest\Webtrees; +use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Http\Controllers\GedcomFileController; use Fisharebest\Webtrees\Module\ModuleThemeInterface; use Fisharebest\Webtrees\Module\WebtreesTheme; use Fisharebest\Webtrees\Schema\SeedDatabase; use Fisharebest\Webtrees\Services\TimeoutService; +use Fisharebest\Webtrees\Services\UserService; use Illuminate\Cache\ArrayStore; use Illuminate\Cache\Repository; use Illuminate\Database\Capsule\Manager as DB; @@ -76,7 +78,8 @@ class TestCase extends \PHPUnit\Framework\TestCase return null; }); - app()->instance(User::class, User::visitor()); + app()->instance(UserService::class, new UserService()); + app()->instance(UserInterface::class, new GuestUser()); app()->instance(Request::class, Request::createFromGlobals()); diff --git a/tests/app/DatabaseTest.php b/tests/app/DatabaseTest.php index cfd1c95304..45b6ef14f4 100644 --- a/tests/app/DatabaseTest.php +++ b/tests/app/DatabaseTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Statement */ -class DatabaseTest extends \Fisharebest\Webtrees\TestCase +class DatabaseTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/DateTest.php b/tests/app/DateTest.php index daef255651..8faeea543f 100644 --- a/tests/app/DateTest.php +++ b/tests/app/DateTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Date */ -class DateTest extends \Fisharebest\Webtrees\TestCase +class DateTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/DefaultUserTest.php b/tests/app/DefaultUserTest.php new file mode 100644 index 0000000000..8825d8a79b --- /dev/null +++ b/tests/app/DefaultUserTest.php @@ -0,0 +1,66 @@ +<?php +/** + * webtrees: online genealogy + * Copyright (C) 2019 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +declare(strict_types=1); + +namespace Fisharebest\Webtrees; + +use Fisharebest\Webtrees\Contracts\UserInterface; + +/** + * Test the DefaultUser class + */ +class DefaultUserTest extends TestCase +{ + protected static $uses_database= true; + + /** + * @covers \Fisharebest\Webtrees\DefaultUser::__construct + * @covers \Fisharebest\Webtrees\DefaultUser::id + * @covers \Fisharebest\Webtrees\DefaultUser::email + * @covers \Fisharebest\Webtrees\DefaultUser::realName + * @covers \Fisharebest\Webtrees\DefaultUser::userName + * @return void + */ + public function testDefaultUser(): void + { + $user = new DefaultUser(); + + $this->assertInstanceOf(UserInterface::class, $user); + $this->assertSame(-1, $user->id()); + $this->assertSame('DEFAULT_USER', $user->email()); + $this->assertSame('DEFAULT_USER', $user->realName()); + $this->assertSame('', $user->userName()); + } + + /** + * @covers \Fisharebest\Webtrees\DefaultUser::getPreference + * @covers \Fisharebest\Webtrees\DefaultUser::setPreference + * @return void + */ + public function testPreferences(): void + { + $user = new DefaultUser(); + + $this->assertSame('', $user->getPreference('foo')); + $this->assertSame('', $user->getPreference('foo', '')); + $this->assertSame('bar', $user->getPreference('foo', 'bar')); + + // Default users store preferences in the database + $user->setPreference('foo', 'bar'); + + $this->assertSame('bar', $user->getPreference('foo')); + } +} diff --git a/tests/app/FactTest.php b/tests/app/FactTest.php index 2764c08b9f..403bfe0d62 100644 --- a/tests/app/FactTest.php +++ b/tests/app/FactTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Fact */ -class FactTest extends \Fisharebest\Webtrees\TestCase +class FactTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/FamilyTest.php b/tests/app/FamilyTest.php index 2d9a1fa7a6..dd78ee147a 100644 --- a/tests/app/FamilyTest.php +++ b/tests/app/FamilyTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Family */ -class FamilyTest extends \Fisharebest\Webtrees\TestCase +class FamilyTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/FileTest.php b/tests/app/FileTest.php index 72ac557c3b..e7535d4cc3 100644 --- a/tests/app/FileTest.php +++ b/tests/app/FileTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class File */ -class FileTest extends \Fisharebest\Webtrees\TestCase +class FileTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/FilterTest.php b/tests/app/FilterTest.php index 6e60a729b0..7de91ed6fe 100644 --- a/tests/app/FilterTest.php +++ b/tests/app/FilterTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Filter */ -class FilterTest extends \Fisharebest\Webtrees\TestCase +class FilterTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/FlashMessagesTest.php b/tests/app/FlashMessagesTest.php index e7a474c260..ec97ec6a56 100644 --- a/tests/app/FlashMessagesTest.php +++ b/tests/app/FlashMessagesTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class FlashMessages */ -class FlashMessagesTest extends \Fisharebest\Webtrees\TestCase +class FlashMessagesTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/GedcomRecordTest.php b/tests/app/GedcomRecordTest.php index a6a957c12f..4987654283 100644 --- a/tests/app/GedcomRecordTest.php +++ b/tests/app/GedcomRecordTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class GedcomRecord */ -class GedcomRecordTest extends \Fisharebest\Webtrees\TestCase +class GedcomRecordTest extends TestCase { /** * /** diff --git a/tests/app/GedcomTagTest.php b/tests/app/GedcomTagTest.php index c3cd7fbdeb..cd109e7ef1 100644 --- a/tests/app/GedcomTagTest.php +++ b/tests/app/GedcomTagTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class GedcomTag */ -class GedcomTagTest extends \Fisharebest\Webtrees\TestCase +class GedcomTagTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/GuestUserTest.php b/tests/app/GuestUserTest.php new file mode 100644 index 0000000000..ddcf39a13d --- /dev/null +++ b/tests/app/GuestUserTest.php @@ -0,0 +1,83 @@ +<?php +/** + * webtrees: online genealogy + * Copyright (C) 2019 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +declare(strict_types=1); + +namespace Fisharebest\Webtrees; + +use Fisharebest\Webtrees\Contracts\UserInterface; + +/** + * Test the GuestUser class + */ +class GuestUserTest extends TestCase +{ + /** + * @covers \Fisharebest\Webtrees\GuestUser::__construct + * @covers \Fisharebest\Webtrees\GuestUser::id + * @covers \Fisharebest\Webtrees\GuestUser::email + * @covers \Fisharebest\Webtrees\GuestUser::realName + * @covers \Fisharebest\Webtrees\GuestUser::userName + * @return void + */ + public function testAnonymous(): void + { + $user = new GuestUser(); + + $this->assertInstanceOf(UserInterface::class, $user); + $this->assertSame(0, $user->id()); + $this->assertSame('GUEST_USER', $user->email()); + $this->assertSame('GUEST_USER', $user->realName()); + $this->assertSame('', $user->userName()); + } + + /** + * @covers \Fisharebest\Webtrees\GuestUser::__construct + * @covers \Fisharebest\Webtrees\GuestUser::id + * @covers \Fisharebest\Webtrees\GuestUser::email + * @covers \Fisharebest\Webtrees\GuestUser::realName + * @covers \Fisharebest\Webtrees\GuestUser::userName + * @return void + */ + public function testVisitor(): void + { + $user = new GuestUser('guest@example.com', 'guest user'); + + $this->assertInstanceOf(UserInterface::class, $user); + $this->assertSame(0, $user->id()); + $this->assertSame('guest@example.com', $user->email()); + $this->assertSame('guest user', $user->realName()); + $this->assertSame('', $user->userName()); + } + + /** + * @covers \Fisharebest\Webtrees\GuestUser::getPreference + * @covers \Fisharebest\Webtrees\GuestUser::setPreference + * @return void + */ + public function testPreferences(): void + { + $user = new GuestUser(); + + $this->assertSame('', $user->getPreference('foo')); + $this->assertSame('', $user->getPreference('foo', '')); + $this->assertSame('bar', $user->getPreference('foo', 'bar')); + + // Guests users store preferences in the session + $user->setPreference('foo', 'bar'); + + $this->assertSame('bar', $user->getPreference('foo')); + } +} diff --git a/tests/app/I18NTest.php b/tests/app/I18NTest.php index 3a644c96a3..e79c0a6ed4 100644 --- a/tests/app/I18NTest.php +++ b/tests/app/I18NTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class I18N */ -class I18NTest extends \Fisharebest\Webtrees\TestCase +class I18NTest extends TestCase { /** * @covers \Fisharebest\Webtrees\I18N::strtoupper diff --git a/tests/app/IndividualTest.php b/tests/app/IndividualTest.php index 98d7d06560..75ba2c337c 100644 --- a/tests/app/IndividualTest.php +++ b/tests/app/IndividualTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Individual */ -class IndividualTest extends \Fisharebest\Webtrees\TestCase +class IndividualTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/LogTest.php b/tests/app/LogTest.php index c73b1c7fac..b7127afb0f 100644 --- a/tests/app/LogTest.php +++ b/tests/app/LogTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class WT_Log */ -class LogTest extends \Fisharebest\Webtrees\TestCase +class LogTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/MailTest.php b/tests/app/MailTest.php index eee5dea09a..d6cd05f0a2 100644 --- a/tests/app/MailTest.php +++ b/tests/app/MailTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Mail */ -class MailTest extends \Fisharebest\Webtrees\TestCase +class MailTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/MediaTest.php b/tests/app/MediaTest.php index 0eaec82199..f209ba0e2c 100644 --- a/tests/app/MediaTest.php +++ b/tests/app/MediaTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Media */ -class MediaTest extends \Fisharebest\Webtrees\TestCase +class MediaTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/MenuTest.php b/tests/app/MenuTest.php index ee1b7b7cfe..0835370ecc 100644 --- a/tests/app/MenuTest.php +++ b/tests/app/MenuTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Menu */ -class MenuTest extends \Fisharebest\Webtrees\TestCase +class MenuTest extends TestCase { /** * @covers \Fisharebest\Webtrees\Menu::__construct diff --git a/tests/app/NoteTest.php b/tests/app/NoteTest.php index 08dd5e23be..54d16df63b 100644 --- a/tests/app/NoteTest.php +++ b/tests/app/NoteTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Note */ -class NoteTest extends \Fisharebest\Webtrees\TestCase +class NoteTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/RepositoryTest.php b/tests/app/RepositoryTest.php index d925e2c35e..2116ece65c 100644 --- a/tests/app/RepositoryTest.php +++ b/tests/app/RepositoryTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Repository */ -class RepositoryTest extends \Fisharebest\Webtrees\TestCase +class RepositoryTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/Services/ModuleServiceTest.php b/tests/app/Services/ModuleServiceTest.php index 6ba4af8b4f..253812cdd9 100644 --- a/tests/app/Services/ModuleServiceTest.php +++ b/tests/app/Services/ModuleServiceTest.php @@ -31,7 +31,6 @@ use Fisharebest\Webtrees\Module\ModuleThemeInterface; use Fisharebest\Webtrees\Module\TreesMenuModule; use Fisharebest\Webtrees\TestCase; use Fisharebest\Webtrees\Tree; -use Fisharebest\Webtrees\User; /** * Test the modules @@ -68,13 +67,14 @@ class ModuleServiceTest extends TestCase */ public function testFindByComponent(): void { - $tree = Tree::create('name', 'title'); + $user_service = new UserService(); + $tree = Tree::create('name', 'title'); app()->instance(Tree::class, $tree); $module_service = new ModuleService(); $tree = $this->importTree('demo.ged'); - $user = User::create('UserName', 'RealName', 'user@example.com', 'secret'); + $user = $user_service->create('UserName', 'RealName', 'user@example.com', 'secret'); $this->assertNotEmpty($module_service->findByComponent('block', $tree, $user)->all()); $this->assertNotEmpty($module_service->findByComponent('chart', $tree, $user)->all()); diff --git a/tests/app/Services/UserServiceTest.php b/tests/app/Services/UserServiceTest.php new file mode 100644 index 0000000000..c38528c8ed --- /dev/null +++ b/tests/app/Services/UserServiceTest.php @@ -0,0 +1,321 @@ +<?php +/** + * webtrees: online genealogy + * Copyright (C) 2019 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +declare(strict_types=1); + +namespace Fisharebest\Webtrees; + +use Fisharebest\Webtrees\Services\UserService; + +/** + * Test the UserService class + */ +class UserServiceTest extends TestCase +{ + protected static $uses_database = true; + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::create + * @return void + */ + public function testCreate(): void + { + $user_service = new UserService(); + + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); + + $this->assertSame(1, $user->id()); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::setUserName + * @covers \Fisharebest\Webtrees\Services\UserService::userName + * @covers \Fisharebest\Webtrees\Services\UserService::setRealName + * @covers \Fisharebest\Webtrees\Services\UserService::realName + * @covers \Fisharebest\Webtrees\Services\UserService::setEmail + * @covers \Fisharebest\Webtrees\Services\UserService::email + * @covers \Fisharebest\Webtrees\Services\UserService::setPassword + * @covers \Fisharebest\Webtrees\Services\UserService::checkPassword + * @return void + */ + public function testGettersAndSetters(): void + { + $user_service = new UserService(); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); + + $this->assertSame(1, $user->id()); + + $this->assertSame('user', $user->userName()); + $user->setUserName('foo'); + $this->assertSame('foo', $user->userName()); + + $this->assertSame('User', $user->realName()); + $user->setRealName('Foo'); + $this->assertSame('Foo', $user->realName()); + + $this->assertSame('user@example.com', $user->email()); + $user->setEmail('foo@example.com'); + $this->assertSame('foo@example.com', $user->email()); + + $this->assertTrue($user->checkPassword('secret')); + $user->setPassword('letmein'); + $this->assertTrue($user->checkPassword('letmein')); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::checkPassword + * @return void + */ + public function testCheckPasswordCaseSensitive(): void + { + $user_service = new UserService(); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); + + $this->assertTrue($user->checkPassword('secret')); + $this->assertFalse($user->checkPassword('SECRET')); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::delete + * @return void + */ + public function testDelete(): void + { + $user_service = new UserService(); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); + $user_id = $user->id(); + $user_service->delete($user); + + $this->assertNull($user_service->find($user_id)); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::setPreference + * @covers \Fisharebest\Webtrees\Services\UserService::getPreference + * @return void + */ + public function testPreferences(): void + { + $user_service = new UserService(); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); + + $this->assertSame('', $user->getPreference('foo')); + $user->setPreference('foo', 'bar'); + $this->assertSame('bar', $user->getPreference('foo')); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::find + * @return void + */ + public function testFindNonExistingUser(): void + { + $user_service = new UserService(); + $user = $user_service->find(999); + + $this->assertNull($user); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::find + * @return void + */ + public function testFindExistingUser(): void + { + $user_service = new UserService(); + $user1 = $user_service->create('user', 'User', 'user@example.com', 'secret'); + $user2 = $user_service->find($user1->id()); + + $this->assertSame($user1->id(), $user2->id()); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::findByEmail + * @return void + */ + public function testFindUserByEmail(): void + { + $user_service = new UserService(); + $user1 = $user_service->create('user', 'User', 'user@example.com', 'secret'); + $user2 = $user_service->findByEmail($user1->email()); + + $this->assertSame($user1->id(), $user2->id()); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::findByUserName + * @return void + */ + public function testFindUserByUserName(): void + { + $user_service = new UserService(); + $user1 = $user_service->create('user', 'User', 'user@example.com', 'secret'); + $user2 = $user_service->findByUserName($user1->userName()); + + $this->assertSame($user1->id(), $user2->id()); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::findByIdentifier + * @return void + */ + public function testFindUserByIdentifier(): void + { + $user_service = new UserService(); + $user1 = $user_service->create('user', 'User', 'user@example.com', 'secret'); + $user2 = $user_service->findByIdentifier($user1->userName()); + $user3 = $user_service->findByIdentifier($user1->email()); + + $this->assertSame($user1->id(), $user2->id()); + $this->assertSame($user1->id(), $user3->id()); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::findByIndividual + * @return void + */ + public function testFindUsersByIndividual(): void + { + $user_service = new UserService(); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); + Auth::login($user); + $tree = $this->importTree('demo.ged'); + $indi = $tree->createIndividual('0 @@ INDI'); + $tree->setUserPreference($user, 'gedcomid', $indi->xref()); + + $users = $user_service->findByIndividual($indi); + + $this->assertSame(1, count($users)); + $this->assertSame($user->id(), $users[0]->id()); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::all + * @return void + */ + public function testFindAllUsers(): void + { + $user_service = new UserService(); + $user1 = $user_service->create('bbbbb', 'BBBBB', 'bbbbb@example.com', 'secret'); + $user2 = $user_service->create('aaaaa', 'AAAAA', 'aaaaa@example.com', 'secret'); + + $users = $user_service->all(); + + $this->assertSame(2, $users->count()); + $this->assertSame($user2->id(), $users[0]->id()); + $this->assertSame($user1->id(), $users[1]->id()); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::administrators + * @return void + */ + public function testFindAdministrators(): void + { + $user_service = new UserService(); + $user_service->create('user', 'User', 'user@example.com', 'secret'); + + $admin = $user_service->create('admin', 'Admin', 'admin@example.com', 'secret'); + $admin->setPreference('canadmin', '1'); + + $users = $user_service->administrators(); + + $this->assertSame(1, count($users)); + $this->assertSame($admin->id(), $users[0]->id()); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::managers + * @return void + */ + public function testFindManagers(): void + { + $user_service = new UserService(); + $user1 = $user_service->create('user1', 'User1', 'user1@example.com', 'secret'); + $user2 = $user_service->create('user2', 'User2', 'user2@example.com', 'secret'); + $user3 = $user_service->create('user3', 'User3', 'user3@example.com', 'secret'); + $user4 = $user_service->create('user4', 'User4', 'user4@example.com', 'secret'); + + $tree = $this->importTree('demo.ged'); + $tree->setUserPreference($user1, 'canedit', 'admin'); + $tree->setUserPreference($user2, 'canedit', 'accept'); + $tree->setUserPreference($user3, 'canedit', 'edit'); + $tree->setUserPreference($user4, 'canedit', 'access'); + + $users = $user_service->managers(); + + $this->assertSame(1, count($users)); + $this->assertSame($user1->id(), $users[0]->id()); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::moderators + * @return void + */ + public function testFindModerators(): void + { + $user_service = new UserService(); + $user1 = $user_service->create('user1', 'User1', 'user1@example.com', 'secret'); + $user2 = $user_service->create('user2', 'User2', 'user2@example.com', 'secret'); + $user3 = $user_service->create('user3', 'User3', 'user3@example.com', 'secret'); + $user4 = $user_service->create('user4', 'User4', 'user4@example.com', 'secret'); + + $tree = $this->importTree('demo.ged'); + $tree->setUserPreference($user1, 'canedit', 'admin'); + $tree->setUserPreference($user2, 'canedit', 'accept'); + $tree->setUserPreference($user3, 'canedit', 'edit'); + $tree->setUserPreference($user4, 'canedit', 'access'); + + $users = $user_service->moderators(); + + $this->assertSame(1, count($users)); + $this->assertSame($user2->id(), $users[0]->id()); + } + + /** + * @covers \Fisharebest\Webtrees\Services\UserService::unapproved + * @covers \Fisharebest\Webtrees\Services\UserService::unverified + * @return void + */ + public function testFindUnapprovedAndUnverified(): void + { + $user_service = new UserService(); + $user1 = $user_service->create('user1', 'User1', 'user1@example.com', 'secret'); + $user2 = $user_service->create('user2', 'User2', 'user2@example.com', 'secret'); + $user3 = $user_service->create('user3', 'User3', 'user3@example.com', 'secret'); + $user4 = $user_service->create('user4', 'User4', 'user4@example.com', 'secret'); + + $user1->setPreference('verified', '0'); + $user1->setPreference('verified_by_admin', '0'); + $user2->setPreference('verified', '0'); + $user2->setPreference('verified_by_admin', '1'); + $user3->setPreference('verified', '1'); + $user3->setPreference('verified_by_admin', '0'); + $user4->setPreference('verified', '1'); + $user4->setPreference('verified_by_admin', '1'); + + $users = $user_service->unapproved(); + + $this->assertSame(2, $users->count()); + $this->assertSame($user1->id(), $users[0]->id()); + $this->assertSame($user3->id(), $users[1]->id()); + + $users = $user_service->unverified(); + + $this->assertSame(2, $users->count()); + $this->assertSame($user1->id(), $users[0]->id()); + $this->assertSame($user2->id(), $users[1]->id()); + } +} diff --git a/tests/app/SiteTest.php b/tests/app/SiteTest.php index 53871186b4..a09c0f338b 100644 --- a/tests/app/SiteTest.php +++ b/tests/app/SiteTest.php @@ -17,14 +17,12 @@ declare(strict_types=1); namespace Fisharebest\Webtrees; -use function mb_substr; use function str_repeat; -use function strlen; /** * Test the site functions */ -class SiteTest extends \Fisharebest\Webtrees\TestCase +class SiteTest extends TestCase { protected static $uses_database = true; diff --git a/tests/app/SoundexTest.php b/tests/app/SoundexTest.php index 36a83c7601..134a5ed0d5 100644 --- a/tests/app/SoundexTest.php +++ b/tests/app/SoundexTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Soundex */ -class SoundexTest extends \Fisharebest\Webtrees\TestCase +class SoundexTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/SourceTest.php b/tests/app/SourceTest.php index 24f5961510..ef263cfd7b 100644 --- a/tests/app/SourceTest.php +++ b/tests/app/SourceTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Source */ -class SourceTest extends \Fisharebest\Webtrees\TestCase +class SourceTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/StatementTest.php b/tests/app/StatementTest.php index e448c7f353..74ec90a0c7 100644 --- a/tests/app/StatementTest.php +++ b/tests/app/StatementTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Statement */ -class StatementTest extends \Fisharebest\Webtrees\TestCase +class StatementTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/StatsTest.php b/tests/app/StatsTest.php index 4e37a9e02a..5b3e8b292d 100644 --- a/tests/app/StatsTest.php +++ b/tests/app/StatsTest.php @@ -20,7 +20,7 @@ namespace Fisharebest\Webtrees; /** * Test harness for the class Stats */ -class StatsTest extends \Fisharebest\Webtrees\TestCase +class StatsTest extends TestCase { /** * Test that the class exists diff --git a/tests/app/SurnameTraditionTest.php b/tests/app/SurnameTraditionTest.php index 9ebc00b874..a86955b570 100644 --- a/tests/app/SurnameTraditionTest.php +++ b/tests/app/SurnameTraditionTest.php @@ -30,7 +30,7 @@ use Fisharebest\Webtrees\SurnameTradition\SpanishSurnameTradition; /** * Test harness for the class SurnameTradition */ -class SurnameTraditionTest extends \Fisharebest\Webtrees\TestCase +class SurnameTraditionTest extends TestCase { /** * @covers \Fisharebest\Webtrees\SurnameTradition::create diff --git a/tests/app/TreeTest.php b/tests/app/TreeTest.php index 2a002abb94..879be07c70 100644 --- a/tests/app/TreeTest.php +++ b/tests/app/TreeTest.php @@ -17,12 +17,13 @@ declare(strict_types=1); namespace Fisharebest\Webtrees; +use Fisharebest\Webtrees\Services\UserService; use function stream_get_contents; /** * Test harness for the class Tree */ -class TreeTest extends \Fisharebest\Webtrees\TestCase +class TreeTest extends TestCase { protected static $uses_database = true; @@ -70,8 +71,9 @@ class TreeTest extends \Fisharebest\Webtrees\TestCase */ public function testUserTreePreferences(): void { + $user_service = new UserService(); $tree = Tree::create('tree-name', 'Tree title'); - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $pref = $tree->getUserPreference($user, 'foo', 'default'); $this->assertSame('default', $pref); @@ -105,8 +107,9 @@ class TreeTest extends \Fisharebest\Webtrees\TestCase */ public function testCreateInvalidIndividual(): void { + $user_service = new UserService(); $tree = Tree::create('tree-name', 'Tree title'); - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $user->setPreference('canadmin', '1'); Auth::login($user); @@ -120,8 +123,9 @@ class TreeTest extends \Fisharebest\Webtrees\TestCase */ public function testCreateIndividual(): void { + $user_service = new UserService(); $tree = Tree::create('tree-name', 'Tree title'); - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $user->setPreference('canadmin', '1'); Auth::login($user); @@ -141,8 +145,9 @@ class TreeTest extends \Fisharebest\Webtrees\TestCase */ public function testCreateInvalidFamily(): void { + $user_service = new UserService(); $tree = Tree::create('tree-name', 'Tree title'); - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $user->setPreference('canadmin', '1'); Auth::login($user); @@ -156,8 +161,9 @@ class TreeTest extends \Fisharebest\Webtrees\TestCase */ public function testCreateFamily(): void { + $user_service = new UserService(); $tree = Tree::create('tree-name', 'Tree title'); - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $user->setPreference('canadmin', '1'); Auth::login($user); @@ -177,8 +183,9 @@ class TreeTest extends \Fisharebest\Webtrees\TestCase */ public function testCreateInvalidMediaObject(): void { + $user_service = new UserService(); $tree = Tree::create('tree-name', 'Tree title'); - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $user->setPreference('canadmin', '1'); Auth::login($user); @@ -192,8 +199,9 @@ class TreeTest extends \Fisharebest\Webtrees\TestCase */ public function testCreateMediaObject(): void { + $user_service = new UserService(); $tree = Tree::create('tree-name', 'Tree title'); - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $user->setPreference('canadmin', '1'); Auth::login($user); @@ -213,8 +221,9 @@ class TreeTest extends \Fisharebest\Webtrees\TestCase */ public function testCreateInvalidRecord(): void { + $user_service = new UserService(); $tree = Tree::create('tree-name', 'Tree title'); - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $user->setPreference('canadmin', '1'); Auth::login($user); @@ -228,8 +237,9 @@ class TreeTest extends \Fisharebest\Webtrees\TestCase */ public function testCreateRecord(): void { + $user_service = new UserService(); $tree = Tree::create('tree-name', 'Tree title'); - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $user->setPreference('canadmin', '1'); Auth::login($user); @@ -248,8 +258,9 @@ class TreeTest extends \Fisharebest\Webtrees\TestCase */ public function testSignificantIndividual(): void { + $user_service = new UserService(); $tree = Tree::create('tree-name', 'Tree title'); - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $user->setPreference('auto_accept', '1'); Auth::login($user); @@ -303,8 +314,9 @@ class TreeTest extends \Fisharebest\Webtrees\TestCase */ public function testHasPendingEdits(): void { + $user_service = new UserService(); $tree = $this->importTree('demo.ged'); - $user = User::create('admin', 'Administrator', 'admin@example.com', 'secret'); + $user = $user_service->create('admin', 'Administrator', 'admin@example.com', 'secret'); $user->setPreference('canadmin', '1'); Auth::login($user); diff --git a/tests/app/TreeUserTest.php b/tests/app/TreeUserTest.php new file mode 100644 index 0000000000..9303a32630 --- /dev/null +++ b/tests/app/TreeUserTest.php @@ -0,0 +1,72 @@ +<?php +/** + * webtrees: online genealogy + * Copyright (C) 2019 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +declare(strict_types=1); + +namespace Fisharebest\Webtrees; + +use Fisharebest\Webtrees\Contracts\UserInterface; + +/** + * Test the TreeUser class + */ +class TreeUserTest extends TestCase +{ + protected static $uses_database = true; + + /** + * @covers \Fisharebest\Webtrees\TreeUser::__construct + * @covers \Fisharebest\Webtrees\TreeUser::id + * @covers \Fisharebest\Webtrees\TreeUser::email + * @covers \Fisharebest\Webtrees\TreeUser::realName + * @covers \Fisharebest\Webtrees\TreeUser::userName + * @return void + */ + public function testConstructor(): void + { + $tree = Tree::create('name', 'title'); + $user = new TreeUser($tree); + + $this->assertInstanceOf(UserInterface::class, $user); + $this->assertSame(0, $user->id()); + $this->assertSame('no-reply@example.com', $user->email()); + $this->assertSame('title', $user->realName()); + $this->assertSame('', $user->userName()); + + app()->make('cache.array')->flush(); + $tree->setPreference('WEBTREES_EMAIL', 'foo@example.com'); + $this->assertSame('foo@example.com', $user->email()); + } + + /** + * @covers \Fisharebest\Webtrees\TreeUser::getPreference + * @covers \Fisharebest\Webtrees\TreeUser::setPreference + * @return void + */ + public function testPreferences(): void + { + $tree = Tree::create('name', 'title'); + $user = new TreeUser($tree); + + $this->assertSame('', $user->getPreference('foo')); + $this->assertSame('', $user->getPreference('foo', '')); + $this->assertSame('bar', $user->getPreference('foo', 'bar')); + + // Tree users do not have preferences + $user->setPreference('foo', 'bar'); + + $this->assertSame('', $user->getPreference('foo')); + } +} diff --git a/tests/app/UserTest.php b/tests/app/UserTest.php index ba69d08d69..9a6f9c14db 100644 --- a/tests/app/UserTest.php +++ b/tests/app/UserTest.php @@ -17,10 +17,12 @@ declare(strict_types=1); namespace Fisharebest\Webtrees; +use Fisharebest\Webtrees\Services\UserService; + /** * Test the user functions */ -class UserTest extends \Fisharebest\Webtrees\TestCase +class UserTest extends TestCase { protected static $uses_database = true; @@ -32,39 +34,41 @@ class UserTest extends \Fisharebest\Webtrees\TestCase */ public function testCreate(): void { - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user_service = new UserService(); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $this->assertSame(1, $user->id()); } /** * @covers \Fisharebest\Webtrees\User::setUserName - * @covers \Fisharebest\Webtrees\User::getUserName + * @covers \Fisharebest\Webtrees\User::userName * @covers \Fisharebest\Webtrees\User::setRealName - * @covers \Fisharebest\Webtrees\User::getRealName + * @covers \Fisharebest\Webtrees\User::realName * @covers \Fisharebest\Webtrees\User::setEmail - * @covers \Fisharebest\Webtrees\User::getEmail + * @covers \Fisharebest\Webtrees\User::email * @covers \Fisharebest\Webtrees\User::setPassword * @covers \Fisharebest\Webtrees\User::checkPassword * @return void */ public function testGettersAndSetters(): void { - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user_service = new UserService(); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $this->assertSame(1, $user->id()); - $this->assertSame('user', $user->getUserName()); + $this->assertSame('user', $user->userName()); $user->setUserName('foo'); - $this->assertSame('foo', $user->getUserName()); + $this->assertSame('foo', $user->userName()); - $this->assertSame('User', $user->getRealName()); + $this->assertSame('User', $user->realName()); $user->setRealName('Foo'); - $this->assertSame('Foo', $user->getRealName()); + $this->assertSame('Foo', $user->realName()); - $this->assertSame('user@example.com', $user->getEmail()); + $this->assertSame('user@example.com', $user->email()); $user->setEmail('foo@example.com'); - $this->assertSame('foo@example.com', $user->getEmail()); + $this->assertSame('foo@example.com', $user->email()); $this->assertTrue($user->checkPassword('secret')); $user->setPassword('letmein'); @@ -77,7 +81,8 @@ class UserTest extends \Fisharebest\Webtrees\TestCase */ public function testCheckPasswordCaseSensitive(): void { - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user_service = new UserService(); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $this->assertTrue($user->checkPassword('secret')); $this->assertFalse($user->checkPassword('SECRET')); @@ -89,11 +94,12 @@ class UserTest extends \Fisharebest\Webtrees\TestCase */ public function testDelete(): void { - $user = User::create('user', 'User', 'user@example.com', 'secret'); - $user_id = $user->id(); - $user->delete(); + $user_service = new UserService(); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); + $user_id = $user->id(); + $user_service->delete($user); - $this->assertNull(User::find($user_id)); + $this->assertNull($user_service->find($user_id)); } /** @@ -103,202 +109,11 @@ class UserTest extends \Fisharebest\Webtrees\TestCase */ public function testPreferences(): void { - $user = User::create('user', 'User', 'user@example.com', 'secret'); + $user_service = new UserService(); + $user = $user_service->create('user', 'User', 'user@example.com', 'secret'); $this->assertSame('', $user->getPreference('foo')); $user->setPreference('foo', 'bar'); $this->assertSame('bar', $user->getPreference('foo')); } - - /** - * @covers \Fisharebest\Webtrees\User::find - * @return void - */ - public function testFindNonExistingUser(): void - { - $user = User::find(999); - - $this->assertNull($user); - } - - /** - * @covers \Fisharebest\Webtrees\User::find - * @return void - */ - public function testFindExistingUser(): void - { - $user1 = User::create('user', 'User', 'user@example.com', 'secret'); - $user2 = User::find($user1->id()); - - $this->assertSame($user1->id(), $user2->id()); - } - - /** - * @covers \Fisharebest\Webtrees\User::findByEmail - * @return void - */ - public function testFindUserByEmail(): void - { - $user1 = User::create('user', 'User', 'user@example.com', 'secret'); - $user2 = User::findByEmail($user1->getEmail()); - - $this->assertSame($user1->id(), $user2->id()); - } - - /** - * @covers \Fisharebest\Webtrees\User::findByUserName - * @return void - */ - public function testFindUserByUserName(): void - { - $user1 = User::create('user', 'User', 'user@example.com', 'secret'); - $user2 = User::findByUserName($user1->getUserName()); - - $this->assertSame($user1->id(), $user2->id()); - } - - /** - * @covers \Fisharebest\Webtrees\User::findByIdentifier - * @return void - */ - public function testFindUserByIdentifier(): void - { - $user1 = User::create('user', 'User', 'user@example.com', 'secret'); - $user2 = User::findByIdentifier($user1->getUsername()); - $user3 = User::findByIdentifier($user1->getEmail()); - - $this->assertSame($user1->id(), $user2->id()); - $this->assertSame($user1->id(), $user3->id()); - } - - /** - * @covers \Fisharebest\Webtrees\User::findByIndividual - * @return void - */ - public function testFindUsersByIndividual(): void - { - $user = User::create('user', 'User', 'user@example.com', 'secret'); - Auth::login($user); - $tree = $this->importTree('demo.ged'); - $indi = $tree->createIndividual('0 @@ INDI'); - $tree->setUserPreference($user, 'gedcomid', $indi->xref()); - - $users = User::findByIndividual($indi); - - $this->assertSame(1, count($users)); - $this->assertSame($user->id(), $users[0]->id()); - } - - /** - * @covers \Fisharebest\Webtrees\User::all - * @return void - */ - public function testFindAllUsers(): void - { - $user1 = User::create('bbbbb', 'BBBBB', 'bbbbb@example.com', 'secret'); - $user2 = User::create('aaaaa', 'AAAAA', 'aaaaa@example.com', 'secret'); - - $users = User::all(); - - $this->assertSame(2, $users->count()); - $this->assertSame($user2->id(), $users[0]->id()); - $this->assertSame($user1->id(), $users[1]->id()); - } - - /** - * @covers \Fisharebest\Webtrees\User::administrators - * @return void - */ - public function testFindAdministrators(): void - { - User::create('user', 'User', 'user@example.com', 'secret'); - - $admin = User::create('admin', 'Admin', 'admin@example.com', 'secret'); - $admin->setPreference('canadmin', '1'); - - $users = User::administrators(); - - $this->assertSame(1, count($users)); - $this->assertSame($admin->id(), $users[0]->id()); - } - - /** - * @covers \Fisharebest\Webtrees\User::managers - * @return void - */ - public function testFindManagers(): void - { - $user1 = User::create('user1', 'User1', 'user1@example.com', 'secret'); - $user2 = User::create('user2', 'User2', 'user2@example.com', 'secret'); - $user3 = User::create('user3', 'User3', 'user3@example.com', 'secret'); - $user4 = User::create('user4', 'User4', 'user4@example.com', 'secret'); - - $tree = $this->importTree('demo.ged'); - $tree->setUserPreference($user1, 'canedit', 'admin'); - $tree->setUserPreference($user2, 'canedit', 'accept'); - $tree->setUserPreference($user3, 'canedit', 'edit'); - $tree->setUserPreference($user4, 'canedit', 'access'); - - $users = User::managers(); - - $this->assertSame(1, count($users)); - $this->assertSame($user1->id(), $users[0]->id()); - } - - /** - * @covers \Fisharebest\Webtrees\User::moderators - * @return void - */ - public function testFindModerators(): void - { - $user1 = User::create('user1', 'User1', 'user1@example.com', 'secret'); - $user2 = User::create('user2', 'User2', 'user2@example.com', 'secret'); - $user3 = User::create('user3', 'User3', 'user3@example.com', 'secret'); - $user4 = User::create('user4', 'User4', 'user4@example.com', 'secret'); - - $tree = $this->importTree('demo.ged'); - $tree->setUserPreference($user1, 'canedit', 'admin'); - $tree->setUserPreference($user2, 'canedit', 'accept'); - $tree->setUserPreference($user3, 'canedit', 'edit'); - $tree->setUserPreference($user4, 'canedit', 'access'); - - $users = User::moderators(); - - $this->assertSame(1, count($users)); - $this->assertSame($user2->id(), $users[0]->id()); - } - - /** - * @covers \Fisharebest\Webtrees\User::unapproved - * @covers \Fisharebest\Webtrees\User::unverified - * @return void - */ - public function testFindUnapprovedAndUnverified(): void - { - $user1 = User::create('user1', 'User1', 'user1@example.com', 'secret'); - $user2 = User::create('user2', 'User2', 'user2@example.com', 'secret'); - $user3 = User::create('user3', 'User3', 'user3@example.com', 'secret'); - $user4 = User::create('user4', 'User4', 'user4@example.com', 'secret'); - - $user1->setPreference('verified', '0'); - $user1->setPreference('verified_by_admin', '0'); - $user2->setPreference('verified', '0'); - $user2->setPreference('verified_by_admin', '1'); - $user3->setPreference('verified', '1'); - $user3->setPreference('verified_by_admin', '0'); - $user4->setPreference('verified', '1'); - $user4->setPreference('verified_by_admin', '1'); - - $users = User::unapproved(); - - $this->assertSame(2, $users->count()); - $this->assertSame($user1->id(), $users[0]->id()); - $this->assertSame($user3->id(), $users[1]->id()); - - $users = User::unverified(); - - $this->assertSame(2, $users->count()); - $this->assertSame($user1->id(), $users[0]->id()); - $this->assertSame($user2->id(), $users[1]->id()); - } } diff --git a/tests/app/WebtreesTest.php b/tests/app/WebtreesTest.php index 965624ef88..68d51afcd7 100644 --- a/tests/app/WebtreesTest.php +++ b/tests/app/WebtreesTest.php @@ -26,7 +26,7 @@ use function set_error_handler; /** * Test the Webtrees class */ -class WebtreesTest extends \Fisharebest\Webtrees\TestCase +class WebtreesTest extends TestCase { /** * @covers \Fisharebest\Webtrees\Webtrees::init diff --git a/tests/feature/EmbeddedVariablesTest.php b/tests/feature/EmbeddedVariablesTest.php index 157b8c0c9b..0f33bc58c6 100644 --- a/tests/feature/EmbeddedVariablesTest.php +++ b/tests/feature/EmbeddedVariablesTest.php @@ -17,22 +17,48 @@ declare(strict_types=1); namespace Fisharebest\Webtrees; +use Fisharebest\Webtrees\Services\ModuleService; +use Fisharebest\Webtrees\Services\UserService; + /** * Test the user functions * * @coversNothing */ -class ImportGedcomTest extends \Fisharebest\Webtrees\TestCase +class EmbeddedVariablesTest extends TestCase { protected static $uses_database = true; /** * @return void */ - public function testImportTrees(): void + public function testAllEmbeddedVariables(): void { + global $tree; // For Date::display() + $tree = $this->importTree('demo.ged'); - $this->assertSame(1, $tree->id()); + $statistics = new Statistics(new ModuleService(), $tree, new UserService()); + + $text = $statistics->embedTags('#getAllTagsTable#'); + + $this->assertNotEquals('#getAllTagsTable#', $text); + } + + /** + * @return void + */ + public function testAllEmbeddedVariablesWithEmptyTree(): void + { + global $tree; // For Date::display() + + $tree = Tree::create('name', 'title'); + $tree->deleteGenealogyData(false); + + $statistics = new Statistics(new ModuleService(), $tree, new UserService()); + + $text = $statistics->embedTags('#getAllTagsTable#'); + + $this->assertNotEquals('#getAllTagsTable#', $text); } } diff --git a/tests/feature/ImportGedcomTest.php b/tests/feature/ImportGedcomTest.php index 157b8c0c9b..d69c536f58 100644 --- a/tests/feature/ImportGedcomTest.php +++ b/tests/feature/ImportGedcomTest.php @@ -22,7 +22,7 @@ namespace Fisharebest\Webtrees; * * @coversNothing */ -class ImportGedcomTest extends \Fisharebest\Webtrees\TestCase +class ImportGedcomTest extends TestCase { protected static $uses_database = true; diff --git a/tests/feature/IndividualListTest.php b/tests/feature/IndividualListTest.php index 3f2b645a72..d454034cf7 100644 --- a/tests/feature/IndividualListTest.php +++ b/tests/feature/IndividualListTest.php @@ -19,8 +19,6 @@ namespace Fisharebest\Webtrees; use Fisharebest\Localization\Locale\LocaleEnUs; use Fisharebest\Webtrees\Http\Controllers\ListController; -use Fisharebest\Webtrees\Module\ModuleThemeInterface; -use Fisharebest\Webtrees\Module\WebtreesTheme; use Fisharebest\Webtrees\Services\IndividualListService; use Fisharebest\Webtrees\Services\LocalizationService; use Symfony\Component\HttpFoundation\Request; @@ -31,7 +29,7 @@ use Symfony\Component\HttpFoundation\Response; * * @coversNothing */ -class IndividualListTest extends \Fisharebest\Webtrees\TestCase +class IndividualListTest extends TestCase { protected static $uses_database = true; @@ -53,23 +51,23 @@ class IndividualListTest extends \Fisharebest\Webtrees\TestCase $individual_list_service = new IndividualListService($localization_service, $tree); $controller = new ListController($individual_list_service, $localization_service); - $request = new Request(['route' => 'individual-list']); + $request = new Request(['route' => 'individual-list']); $response = $controller->individualList($request, $tree, $user); $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); - $request = new Request(['route' => 'individual-list', 'alpha' => 'B']); + $request = new Request(['route' => 'individual-list', 'alpha' => 'B']); $response = $controller->individualList($request, $tree, $user); $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); - $request = new Request(['route' => 'individual-list', 'alpha' => ',']); + $request = new Request(['route' => 'individual-list', 'alpha' => ',']); $response = $controller->individualList($request, $tree, $user); $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); - $request = new Request(['route' => 'individual-list', 'alpha' => '@']); + $request = new Request(['route' => 'individual-list', 'alpha' => '@']); $response = $controller->individualList($request, $tree, $user); $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); - $request = new Request(['route' => 'individual-list', 'surname' => 'BRAUN']); + $request = new Request(['route' => 'individual-list', 'surname' => 'BRAUN']); $response = $controller->individualList($request, $tree, $user); $this->assertSame(Response::HTTP_OK, $response->getStatusCode()); } diff --git a/tests/feature/UserAdminTest.php b/tests/feature/UserAdminTest.php index a8f91b8222..2733ade15b 100644 --- a/tests/feature/UserAdminTest.php +++ b/tests/feature/UserAdminTest.php @@ -18,13 +18,13 @@ declare(strict_types=1); namespace Fisharebest\Webtrees; use Fisharebest\Webtrees\Http\Controllers\AdminUsersController; -use Fisharebest\Webtrees\Services\DatatablesService; +use Fisharebest\Webtrees\Services\UserService; use Symfony\Component\HttpFoundation\Request; /** * Test the user administration pages */ -class UserAdminTest extends \Fisharebest\Webtrees\TestCase +class UserAdminTest extends TestCase { protected static $uses_database = true; @@ -35,8 +35,9 @@ class UserAdminTest extends \Fisharebest\Webtrees\TestCase */ public function testUserDetailsAreShownOnUserAdminPage(): void { - $admin = User::create('AdminName', 'Administrator', 'admin@example.com', 'secret'); - $user = User::create('UserName', 'RealName', 'user@example.com', 'secret'); + $user_service = new UserService(); + $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); + $user_service->create('UserName', 'RealName', 'user@example.com', 'secret'); $controller = app()->make(AdminUsersController::class); $response = app()->dispatch($controller, 'data'); @@ -56,8 +57,9 @@ class UserAdminTest extends \Fisharebest\Webtrees\TestCase */ public function testFilteringUserAdminPage(): void { - $admin = User::create('AdminName', 'Administrator', 'admin@example.com', 'secret'); - $user = User::create('UserName', 'RealName', 'user@example.com', 'secret'); + $user_service = new UserService(); + $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); + $user_service->create('UserName', 'RealName', 'user@example.com', 'secret'); $request = new Request(['search' => ['value' => 'admin']]); app()->instance(Request::class, $request); @@ -79,8 +81,9 @@ class UserAdminTest extends \Fisharebest\Webtrees\TestCase */ public function testPaginatingUserAdminPage(): void { - $admin = User::create('AdminName', 'Administrator', 'admin@example.com', 'secret'); - $user = User::create('UserName', 'RealName', 'user@example.com', 'secret'); + $user_service = new UserService(); + $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); + $user_service->create('UserName', 'RealName', 'user@example.com', 'secret'); $request = new Request(['length' => 1]); app()->instance(Request::class, $request); @@ -98,16 +101,17 @@ class UserAdminTest extends \Fisharebest\Webtrees\TestCase */ public function testSortingUserAdminPage(): void { - $admin = User::create('AdminName', 'Administrator', 'admin@example.com', 'secret'); - $user = User::create('UserName', 'RealName', 'user@example.com', 'secret'); + $user_service = new UserService(); + $user_service->create('AdminName', 'Administrator', 'admin@example.com', 'secret'); + $user_service->create('UserName', 'RealName', 'user@example.com', 'secret'); $request = new Request(['order' => [['column' => 2, 'dir' => 'asc']]]); app()->instance(Request::class, $request); $controller = app()->make(AdminUsersController::class); $response = app()->dispatch($controller, 'data'); - $pos1 = strpos($response->getContent(), 'AdminName'); - $pos2 = strpos($response->getContent(), 'UserName'); + $pos1 = strpos($response->getContent(), 'AdminName'); + $pos2 = strpos($response->getContent(), 'UserName'); $this->assertLessThan($pos2, $pos1); $request = new Request(['order' => [['column' => 2, 'dir' => 'desc']]]); @@ -115,8 +119,8 @@ class UserAdminTest extends \Fisharebest\Webtrees\TestCase $controller = app()->make(AdminUsersController::class); $response = app()->dispatch($controller, 'data'); - $pos1 = strpos($response->getContent(), 'AdminName'); - $pos2 = strpos($response->getContent(), 'UserName'); + $pos1 = strpos($response->getContent(), 'AdminName'); + $pos2 = strpos($response->getContent(), 'UserName'); $this->assertGreaterThan($pos2, $pos1); } } |
