diff options
| author | Greg Roach <greg@subaqua.co.uk> | 2025-12-19 12:47:30 +0000 |
|---|---|---|
| committer | Greg Roach <greg@subaqua.co.uk> | 2025-12-19 12:47:30 +0000 |
| commit | 85ca24a2537fd226aad3b96fc7dae008b2bfd51b (patch) | |
| tree | cc994cc9f40625058f02e959557db2352d7775a8 /tests | |
| parent | 0d449a2e0ca2b3ca6b17df4d18c102bdfae98d86 (diff) | |
| download | webtrees-85ca24a2537fd226aad3b96fc7dae008b2bfd51b.tar.gz webtrees-85ca24a2537fd226aad3b96fc7dae008b2bfd51b.tar.bz2 webtrees-85ca24a2537fd226aad3b96fc7dae008b2bfd51b.zip | |
Refactor edit/create/delete fact to allow facts to be added in order
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/app/GedcomRecordTest.php | 118 |
1 files changed, 116 insertions, 2 deletions
diff --git a/tests/app/GedcomRecordTest.php b/tests/app/GedcomRecordTest.php index df6270fc80..4ac353fa7c 100644 --- a/tests/app/GedcomRecordTest.php +++ b/tests/app/GedcomRecordTest.php @@ -19,13 +19,127 @@ declare(strict_types=1); namespace Fisharebest\Webtrees; +use Fisharebest\Webtrees\Contracts\UserInterface; +use Fisharebest\Webtrees\Services\GedcomImportService; +use Fisharebest\Webtrees\Services\TreeService; +use Fisharebest\Webtrees\Services\UserService; +use InvalidArgumentException; use PHPUnit\Framework\Attributes\CoversClass; #[CoversClass(GedcomRecord::class)] class GedcomRecordTest extends TestCase { - public function testClassExists(): void + protected static bool $uses_database = true; + + private UserInterface $user; + private Tree $tree; + + public function setUp(): void + { + parent::setUp(); + $user_service = new UserService(); + $this->user = $user_service->create('test', 'test', 'test', '*'); + Auth::login($this->user); + + $tree_service = new TreeService(new GedcomImportService()); + $this->tree = $tree_service->create('test', 'test'); + $this->tree->setUserPreference($this->user, UserInterface::PREF_TREE_ROLE, UserInterface::ROLE_MANAGER); + } + + public function tearDown(): void + { + $tree_service = new TreeService(new GedcomImportService()); + $tree_service->delete($this->tree); + + $user_service = new UserService(); + $user_service->delete($this->user); + + parent::tearDown(); + } + + public function testCreateFact(): void { - self::assertTrue(class_exists(GedcomRecord::class)); + $individual = $this->tree->createIndividual('0 @@ INDI'); + + $individual->createFact('1 FACT foo', false); + $individual->createFact('1 FACT foo', false); + $individual->createFact('1 FACT bar', false); + $individual->createFact('1 FACT bar', false); + + $facts = $individual->facts(['FACT']); + + $this->assertCount(4, $facts); + + $individual->createFact('1 FACT baz', false, $facts[2]->id()); + + $facts = $individual->facts(['FACT']); + + $this->assertCount(5, $facts); + $this->assertSame('1 FACT foo', $facts[0]->gedcom()); + $this->assertSame('1 FACT foo', $facts[1]->gedcom()); + $this->assertSame('1 FACT baz', $facts[2]->gedcom()); + $this->assertSame('1 FACT bar', $facts[3]->gedcom()); + $this->assertSame('1 FACT bar', $facts[4]->gedcom()); + } + + public function createFactWithInvalidData(): void + { + $this->expectException(InvalidArgumentException::class); + + $individual = $this->tree->createIndividual('0 @@ INDI'); + $individual->createFact('2 FOO bar', false); + } + + public function testDeleteFact(): void + { + $individual = $this->tree->createIndividual('0 @@ INDI'); + + $individual->createFact('1 FACT foo', false); + $individual->createFact('1 FACT foo', false); + $individual->createFact('1 FACT bar', false); + $individual->createFact('1 FACT bar', false); + + $facts = $individual->facts(['FACT']); + + $individual->deleteFact($facts[2]->id(), false); + + $facts = $individual->facts(['FACT']); + + $this->assertCount(3, $facts); + $this->assertSame('1 FACT foo', $facts[0]->gedcom()); + $this->assertSame('1 FACT foo', $facts[1]->gedcom()); + $this->assertSame('1 FACT bar', $facts[2]->gedcom()); + } + + public function testUpdateFact(): void + { + $individual = $this->tree->createIndividual('0 @@ INDI'); + + $individual->createFact('1 FACT foo', false); + $individual->createFact('1 FACT foo', false); + $individual->createFact('1 FACT bar', false); + $individual->createFact('1 FACT bar', false); + + $facts = $individual->facts(['FACT']); + + $individual->updateFact($facts[2]->id(), '1 FACT baz', false); + + $facts = $individual->facts(['FACT']); + + $this->assertCount(4, $facts); + $this->assertSame('1 FACT foo', $facts[0]->gedcom()); + $this->assertSame('1 FACT foo', $facts[1]->gedcom()); + $this->assertSame('1 FACT baz', $facts[2]->gedcom()); + $this->assertSame('1 FACT bar', $facts[3]->gedcom()); + } + + public function updateFactWithInvalidData(): void + { + $this->expectException(InvalidArgumentException::class); + + $individual = $this->tree->createIndividual('0 @@ INDI'); + $individual->createFact('1 FACT foo', false); + $facts = $individual->facts(['FACT']); + $individual->updateFact($facts[0]->id(), '2 FOO bar', false); } } |
