1323788f4SGreg Roach<?php 23976b470SGreg Roach 3323788f4SGreg Roach/** 4323788f4SGreg Roach * webtrees: online genealogy 589f7189bSGreg Roach * Copyright (C) 2021 webtrees development team 6323788f4SGreg Roach * This program is free software: you can redistribute it and/or modify 7323788f4SGreg Roach * it under the terms of the GNU General Public License as published by 8323788f4SGreg Roach * the Free Software Foundation, either version 3 of the License, or 9323788f4SGreg Roach * (at your option) any later version. 10323788f4SGreg Roach * This program is distributed in the hope that it will be useful, 11323788f4SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 12323788f4SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13323788f4SGreg Roach * GNU General Public License for more details. 14323788f4SGreg Roach * You should have received a copy of the GNU General Public License 1589f7189bSGreg Roach * along with this program. If not, see <https://www.gnu.org/licenses/>. 16323788f4SGreg Roach */ 17fcfa147eSGreg Roach 18e7f56f2aSGreg Roachdeclare(strict_types=1); 19e7f56f2aSGreg Roach 2084e2cf4eSGreg Roachnamespace Fisharebest\Webtrees\SurnameTradition; 21c1010edaSGreg Roach 22*cb7a42eaSGreg Roachuse Fisharebest\Webtrees\Fact; 23*cb7a42eaSGreg Roachuse Fisharebest\Webtrees\Individual; 243cfcc809SGreg Roachuse Fisharebest\Webtrees\TestCase; 25*cb7a42eaSGreg Roachuse Illuminate\Support\Collection; 263cfcc809SGreg Roach 27323788f4SGreg Roach/** 2817d74f3aSGreg Roach * Test harness for the class DefaultSurnameTradition 29323788f4SGreg Roach */ 303cfcc809SGreg Roachclass DefaultSurnameTraditionTest extends TestCase 31c1010edaSGreg Roach{ 32c4943cffSGreg Roach private SurnameTraditionInterface $surname_tradition; 33323788f4SGreg Roach 34323788f4SGreg Roach /** 35323788f4SGreg Roach * Test whether married surnames are used 3617d74f3aSGreg Roach * 3715d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\DefaultSurnameTradition 3852348eb8SGreg Roach * 3952348eb8SGreg Roach * @return void 40323788f4SGreg Roach */ 419b802b22SGreg Roach public function testMarriedSurnames(): void 42c1010edaSGreg Roach { 435e933c21SGreg Roach self::assertFalse($this->surname_tradition->hasMarriedNames()); 44323788f4SGreg Roach } 45323788f4SGreg Roach 46323788f4SGreg Roach /** 47c1ec7145SGreg Roach * Test whether surnames are used 4817d74f3aSGreg Roach * 4915d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\DefaultSurnameTradition 5052348eb8SGreg Roach * 5152348eb8SGreg Roach * @return void 52c1ec7145SGreg Roach */ 539b802b22SGreg Roach public function testSurnames(): void 54c1010edaSGreg Roach { 555e933c21SGreg Roach self::assertTrue($this->surname_tradition->hasSurnames()); 56c1ec7145SGreg Roach } 57c1ec7145SGreg Roach 58c1ec7145SGreg Roach /** 59323788f4SGreg Roach * Test new child names 6017d74f3aSGreg Roach * 6115d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\DefaultSurnameTradition 6252348eb8SGreg Roach * 6352348eb8SGreg Roach * @return void 64323788f4SGreg Roach */ 659b802b22SGreg Roach public function testNewChildNames(): void 66c1010edaSGreg Roach { 67*cb7a42eaSGreg Roach $father_fact = $this->createStub(Fact::class); 68*cb7a42eaSGreg Roach $father_fact->expects(self::any())->method('value')->willReturn('Chris /White/'); 69323788f4SGreg Roach 70*cb7a42eaSGreg Roach $father = $this->createStub(Individual::class); 71*cb7a42eaSGreg Roach $father->expects(self::any())->method('facts')->willReturn(new Collection([$father])); 72323788f4SGreg Roach 73*cb7a42eaSGreg Roach $mother_fact = $this->createStub(Fact::class); 74*cb7a42eaSGreg Roach $mother_fact->expects(self::any())->method('value')->willReturn('Chris /White/'); 75*cb7a42eaSGreg Roach 76*cb7a42eaSGreg Roach $mother = $this->createStub(Individual::class); 77*cb7a42eaSGreg Roach $mother->expects(self::any())->method('facts')->willReturn(new Collection([$mother_fact])); 78*cb7a42eaSGreg Roach 795e933c21SGreg Roach self::assertSame( 80*cb7a42eaSGreg Roach ["1 NAME //\n2 TYPE birth"], 81*cb7a42eaSGreg Roach $this->surname_tradition->newChildNames($father, $mother, 'M') 82*cb7a42eaSGreg Roach ); 83*cb7a42eaSGreg Roach 84*cb7a42eaSGreg Roach self::assertSame( 85*cb7a42eaSGreg Roach ["1 NAME //\n2 TYPE birth"], 86*cb7a42eaSGreg Roach $this->surname_tradition->newChildNames($father, $mother, 'F') 87*cb7a42eaSGreg Roach ); 88*cb7a42eaSGreg Roach 89*cb7a42eaSGreg Roach self::assertSame( 90*cb7a42eaSGreg Roach ["1 NAME //\n2 TYPE birth"], 91*cb7a42eaSGreg Roach $this->surname_tradition->newChildNames($father, $mother, 'U') 92323788f4SGreg Roach ); 93323788f4SGreg Roach } 94323788f4SGreg Roach 95323788f4SGreg Roach /** 96323788f4SGreg Roach * Test new parent names 9717d74f3aSGreg Roach * 9815d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\DefaultSurnameTradition 9952348eb8SGreg Roach * 10052348eb8SGreg Roach * @return void 101323788f4SGreg Roach */ 1029b802b22SGreg Roach public function testNewParentNames(): void 103c1010edaSGreg Roach { 104*cb7a42eaSGreg Roach $fact = $this->createStub(Fact::class); 105*cb7a42eaSGreg Roach $fact->expects(self::any())->method('value')->willReturn('Chris /White/'); 106323788f4SGreg Roach 107*cb7a42eaSGreg Roach $individual = $this->createStub(Individual::class); 108*cb7a42eaSGreg Roach $individual->expects(self::any())->method('facts')->willReturn(new Collection([$fact])); 109323788f4SGreg Roach 1105e933c21SGreg Roach self::assertSame( 111*cb7a42eaSGreg Roach ["1 NAME //\n2 TYPE birth"], 112*cb7a42eaSGreg Roach $this->surname_tradition->newParentNames($individual, 'M') 113*cb7a42eaSGreg Roach ); 114*cb7a42eaSGreg Roach 115*cb7a42eaSGreg Roach self::assertSame( 116*cb7a42eaSGreg Roach ["1 NAME //\n2 TYPE birth"], 117*cb7a42eaSGreg Roach $this->surname_tradition->newParentNames($individual, 'F') 118*cb7a42eaSGreg Roach ); 119*cb7a42eaSGreg Roach 120*cb7a42eaSGreg Roach self::assertSame( 121*cb7a42eaSGreg Roach ["1 NAME //\n2 TYPE birth"], 122*cb7a42eaSGreg Roach $this->surname_tradition->newParentNames($individual, 'U') 123323788f4SGreg Roach ); 124323788f4SGreg Roach } 125323788f4SGreg Roach 126323788f4SGreg Roach /** 127323788f4SGreg Roach * Test new spouse names 12817d74f3aSGreg Roach * 12915d603e7SGreg Roach * @covers \Fisharebest\Webtrees\SurnameTradition\DefaultSurnameTradition 13052348eb8SGreg Roach * 13152348eb8SGreg Roach * @return void 132323788f4SGreg Roach */ 1339b802b22SGreg Roach public function testNewSpouseNames(): void 134c1010edaSGreg Roach { 135*cb7a42eaSGreg Roach $fact = $this->createStub(Fact::class); 136*cb7a42eaSGreg Roach $fact->expects(self::any())->method('value')->willReturn('Chris /White/'); 137*cb7a42eaSGreg Roach 138*cb7a42eaSGreg Roach $individual = $this->createStub(Individual::class); 139*cb7a42eaSGreg Roach $individual->expects(self::any())->method('facts')->willReturn(new Collection([$fact])); 140*cb7a42eaSGreg Roach 1415e933c21SGreg Roach self::assertSame( 142*cb7a42eaSGreg Roach ["1 NAME //\n2 TYPE birth"], 143*cb7a42eaSGreg Roach $this->surname_tradition->newSpouseNames($individual, 'M') 144323788f4SGreg Roach ); 145*cb7a42eaSGreg Roach 146*cb7a42eaSGreg Roach self::assertSame( 147*cb7a42eaSGreg Roach ["1 NAME //\n2 TYPE birth"], 148*cb7a42eaSGreg Roach $this->surname_tradition->newSpouseNames($individual, 'F') 149*cb7a42eaSGreg Roach ); 150*cb7a42eaSGreg Roach 151*cb7a42eaSGreg Roach self::assertSame( 152*cb7a42eaSGreg Roach ["1 NAME //\n2 TYPE birth"], 153*cb7a42eaSGreg Roach $this->surname_tradition->newSpouseNames($individual, 'U') 154*cb7a42eaSGreg Roach ); 155*cb7a42eaSGreg Roach } 156*cb7a42eaSGreg Roach 157*cb7a42eaSGreg Roach /** 158*cb7a42eaSGreg Roach * Prepare the environment for these tests 159*cb7a42eaSGreg Roach * 160*cb7a42eaSGreg Roach * @return void 161*cb7a42eaSGreg Roach */ 162*cb7a42eaSGreg Roach protected function setUp(): void 163*cb7a42eaSGreg Roach { 164*cb7a42eaSGreg Roach parent::setUp(); 165*cb7a42eaSGreg Roach 166*cb7a42eaSGreg Roach $this->surname_tradition = new DefaultSurnameTradition(); 167323788f4SGreg Roach } 168323788f4SGreg Roach} 169