summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@webtrees.net>2019-01-31 14:28:26 +0000
committerGreg Roach <fisharebest@webtrees.net>2019-01-31 19:45:07 +0000
commite5a6b4d4f6f6e7ff2fba7ae2cf27546ae68a79cc (patch)
tree6d3095048a00ab3941129f8f5231d4b9483776d2 /tests
parent3c04ac885329c9488ff9db0a765e872bf41b9781 (diff)
downloadwebtrees-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')
-rw-r--r--tests/TestCase.php5
-rw-r--r--tests/app/DatabaseTest.php2
-rw-r--r--tests/app/DateTest.php2
-rw-r--r--tests/app/DefaultUserTest.php66
-rw-r--r--tests/app/FactTest.php2
-rw-r--r--tests/app/FamilyTest.php2
-rw-r--r--tests/app/FileTest.php2
-rw-r--r--tests/app/FilterTest.php2
-rw-r--r--tests/app/FlashMessagesTest.php2
-rw-r--r--tests/app/GedcomRecordTest.php2
-rw-r--r--tests/app/GedcomTagTest.php2
-rw-r--r--tests/app/GuestUserTest.php83
-rw-r--r--tests/app/I18NTest.php2
-rw-r--r--tests/app/IndividualTest.php2
-rw-r--r--tests/app/LogTest.php2
-rw-r--r--tests/app/MailTest.php2
-rw-r--r--tests/app/MediaTest.php2
-rw-r--r--tests/app/MenuTest.php2
-rw-r--r--tests/app/NoteTest.php2
-rw-r--r--tests/app/RepositoryTest.php2
-rw-r--r--tests/app/Services/ModuleServiceTest.php6
-rw-r--r--tests/app/Services/UserServiceTest.php321
-rw-r--r--tests/app/SiteTest.php4
-rw-r--r--tests/app/SoundexTest.php2
-rw-r--r--tests/app/SourceTest.php2
-rw-r--r--tests/app/StatementTest.php2
-rw-r--r--tests/app/StatsTest.php2
-rw-r--r--tests/app/SurnameTraditionTest.php2
-rw-r--r--tests/app/TreeTest.php36
-rw-r--r--tests/app/TreeUserTest.php72
-rw-r--r--tests/app/UserTest.php235
-rw-r--r--tests/app/WebtreesTest.php2
-rw-r--r--tests/feature/EmbeddedVariablesTest.php32
-rw-r--r--tests/feature/ImportGedcomTest.php2
-rw-r--r--tests/feature/IndividualListTest.php14
-rw-r--r--tests/feature/UserAdminTest.php32
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);
}
}