100225b98SGreg Roach<?php 200225b98SGreg Roach/** 300225b98SGreg Roach * webtrees: online genealogy 48fcd0d32SGreg Roach * Copyright (C) 2019 webtrees development team 500225b98SGreg Roach * This program is free software: you can redistribute it and/or modify 600225b98SGreg Roach * it under the terms of the GNU General Public License as published by 700225b98SGreg Roach * the Free Software Foundation, either version 3 of the License, or 800225b98SGreg Roach * (at your option) any later version. 900225b98SGreg Roach * This program is distributed in the hope that it will be useful, 1000225b98SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 1100225b98SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1200225b98SGreg Roach * GNU General Public License for more details. 1300225b98SGreg Roach * You should have received a copy of the GNU General Public License 1400225b98SGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>. 1500225b98SGreg Roach */ 16e7f56f2aSGreg Roachdeclare(strict_types=1); 17e7f56f2aSGreg Roach 1800225b98SGreg Roachnamespace Fisharebest\Webtrees\Census; 1900225b98SGreg Roach 2000225b98SGreg Roachuse Fisharebest\Webtrees\Date; 21ddf438a5SGreg Roachuse Fisharebest\Webtrees\Fact; 22ddf438a5SGreg Roachuse Fisharebest\Webtrees\Family; 23ddf438a5SGreg Roachuse Fisharebest\Webtrees\Individual; 24*39ca88baSGreg Roachuse Illuminate\Support\Collection; 2500225b98SGreg Roachuse Mockery; 2600225b98SGreg Roach 2700225b98SGreg Roach/** 2800225b98SGreg Roach * Test harness for the class CensusColumnConditionFrenchVeuve 2900225b98SGreg Roach */ 3084e2cf4eSGreg Roachclass CensusColumnConditionFrenchVeuveTest extends \Fisharebest\Webtrees\TestCase 31c1010edaSGreg Roach{ 3200225b98SGreg Roach /** 3300225b98SGreg Roach * Delete mock objects 3452348eb8SGreg Roach * 3552348eb8SGreg Roach * @return void 3600225b98SGreg Roach */ 37c1010edaSGreg Roach public function tearDown() 38c1010edaSGreg Roach { 3900225b98SGreg Roach Mockery::close(); 4000225b98SGreg Roach } 4100225b98SGreg Roach 4200225b98SGreg Roach /** 4315d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 4415d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 4552348eb8SGreg Roach * 4652348eb8SGreg Roach * @return void 4700225b98SGreg Roach */ 489b802b22SGreg Roach public function testNoSpouseFamiliesMale(): void 49c1010edaSGreg Roach { 50ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 51*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('M'); 52*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection()); 5300225b98SGreg Roach $individual->shouldReceive('getEstimatedBirthDate')->andReturn(new Date('1800')); 5400225b98SGreg Roach 55ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 5600225b98SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 5700225b98SGreg Roach 5800225b98SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 5900225b98SGreg Roach 60342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 6100225b98SGreg Roach } 6200225b98SGreg Roach 6300225b98SGreg Roach /** 6415d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 6515d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 6652348eb8SGreg Roach * 6752348eb8SGreg Roach * @return void 6800225b98SGreg Roach */ 699b802b22SGreg Roach public function testNoSpouseFamiliesFemale(): void 70c1010edaSGreg Roach { 71ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 72*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('F'); 73*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection()); 7400225b98SGreg Roach $individual->shouldReceive('getEstimatedBirthDate')->andReturn(new Date('1800')); 7500225b98SGreg Roach 76ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 7700225b98SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 7800225b98SGreg Roach 7900225b98SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 8000225b98SGreg Roach 81342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 8200225b98SGreg Roach } 8300225b98SGreg Roach 8400225b98SGreg Roach /** 8515d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 8615d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 8752348eb8SGreg Roach * 8852348eb8SGreg Roach * @return void 8900225b98SGreg Roach */ 909b802b22SGreg Roach public function testNoFamilyFactsMale(): void 91c1010edaSGreg Roach { 92ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 9300225b98SGreg Roach $family->shouldReceive('getMarriageDate')->andReturn(new Date('')); 94*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['MARR'])->andReturn(new Collection()); 9500225b98SGreg Roach 96ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 97*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection([$family])); 982a6fda60SGreg Roach $individual->shouldReceive('getEstimatedBirthDate')->andReturn(new Date('1800')); 99*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('M'); 10000225b98SGreg Roach 101ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 10200225b98SGreg Roach 10300225b98SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 10400225b98SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 10500225b98SGreg Roach 106342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 10700225b98SGreg Roach } 10800225b98SGreg Roach 10900225b98SGreg Roach /** 11015d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 11115d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 11252348eb8SGreg Roach * 11352348eb8SGreg Roach * @return void 11400225b98SGreg Roach */ 1159b802b22SGreg Roach public function testNoFamilyFactsFemale(): void 116c1010edaSGreg Roach { 117ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 11800225b98SGreg Roach $family->shouldReceive('getMarriageDate')->andReturn(new Date('')); 119*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['MARR'])->andReturn(new Collection()); 12000225b98SGreg Roach 121ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 122*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection([$family])); 1232a6fda60SGreg Roach $individual->shouldReceive('getEstimatedBirthDate')->andReturn(new Date('1800')); 124*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('F'); 12500225b98SGreg Roach 126ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 12700225b98SGreg Roach 12800225b98SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 12900225b98SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 13000225b98SGreg Roach 131342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 13200225b98SGreg Roach } 13300225b98SGreg Roach 13400225b98SGreg Roach /** 13515d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 13615d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 13752348eb8SGreg Roach * 13852348eb8SGreg Roach * @return void 13900225b98SGreg Roach */ 1409b802b22SGreg Roach public function testSpouseDeadMale(): void 141c1010edaSGreg Roach { 142ddf438a5SGreg Roach $fact = Mockery::mock(Fact::class); 1432a6fda60SGreg Roach 144ddf438a5SGreg Roach $spouse = Mockery::mock(Individual::class); 145e76c0cf0SGreg Roach $spouse->shouldReceive('getDeathDate')->andReturn(new Date('1820')); 146e76c0cf0SGreg Roach 147ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 148e76c0cf0SGreg Roach $family->shouldReceive('getMarriageDate')->andReturn(new Date('')); 149*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['MARR'])->andReturn(new Collection([$fact])); 150*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['DIV'])->andReturn(new Collection()); 151*39ca88baSGreg Roach $family->shouldReceive('spouse')->andReturn($spouse); 152e76c0cf0SGreg Roach 153ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 154*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('M'); 155*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection([$family])); 156e76c0cf0SGreg Roach 157ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 158e76c0cf0SGreg Roach 159e76c0cf0SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 160e76c0cf0SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 161e76c0cf0SGreg Roach 162342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 163e76c0cf0SGreg Roach } 164e76c0cf0SGreg Roach 165e76c0cf0SGreg Roach /** 16615d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 16715d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 16852348eb8SGreg Roach * 16952348eb8SGreg Roach * @return void 170e76c0cf0SGreg Roach */ 1719b802b22SGreg Roach public function testSpouseDeadFemale(): void 172c1010edaSGreg Roach { 173ddf438a5SGreg Roach $fact = Mockery::mock(Fact::class); 1742a6fda60SGreg Roach 175ddf438a5SGreg Roach $spouse = Mockery::mock(Individual::class); 176e76c0cf0SGreg Roach $spouse->shouldReceive('getDeathDate')->andReturn(new Date('1820')); 177e76c0cf0SGreg Roach 178ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 179e76c0cf0SGreg Roach $family->shouldReceive('getMarriageDate')->andReturn(new Date('')); 180*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['MARR'])->andReturn(new Collection([$fact])); 181*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['DIV'])->andReturn(new Collection()); 182*39ca88baSGreg Roach $family->shouldReceive('spouse')->andReturn($spouse); 183e76c0cf0SGreg Roach 184ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 185*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('F'); 186*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection([$family])); 187e76c0cf0SGreg Roach 188ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 189e76c0cf0SGreg Roach 190e76c0cf0SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 191e76c0cf0SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 192e76c0cf0SGreg Roach 193342dcecdSGreg Roach $this->assertSame('1', $column->generate($individual, $individual)); 194e76c0cf0SGreg Roach } 195e76c0cf0SGreg Roach 196e76c0cf0SGreg Roach /** 19715d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 19815d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 19952348eb8SGreg Roach * 20052348eb8SGreg Roach * @return void 201e76c0cf0SGreg Roach */ 2029b802b22SGreg Roach public function testNoFamilyUnmarriedMale(): void 203c1010edaSGreg Roach { 204ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 20500225b98SGreg Roach $family->shouldReceive('getMarriageDate')->andReturn(new Date('')); 206*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['MARR'])->andReturn(new Collection()); 20700225b98SGreg Roach 208ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 209*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('M'); 210*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection([$family])); 21100225b98SGreg Roach $individual->shouldReceive('getEstimatedBirthDate')->andReturn(new Date('1800')); 21200225b98SGreg Roach 213ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 21400225b98SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 21500225b98SGreg Roach 21600225b98SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 21700225b98SGreg Roach 218342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 21900225b98SGreg Roach } 22000225b98SGreg Roach 22100225b98SGreg Roach /** 22215d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 22315d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 22452348eb8SGreg Roach * 22552348eb8SGreg Roach * @return void 22600225b98SGreg Roach */ 2279b802b22SGreg Roach public function testNoFamilyUnmarriedFemale(): void 228c1010edaSGreg Roach { 229ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 23000225b98SGreg Roach $family->shouldReceive('getMarriageDate')->andReturn(new Date('')); 231*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['MARR'])->andReturn(new Collection()); 23200225b98SGreg Roach 233ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 234*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('F'); 235*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection([$family])); 23600225b98SGreg Roach $individual->shouldReceive('getEstimatedBirthDate')->andReturn(new Date('1800')); 23700225b98SGreg Roach 238ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 23900225b98SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 24000225b98SGreg Roach 24100225b98SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 24200225b98SGreg Roach 243342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 24400225b98SGreg Roach } 24500225b98SGreg Roach 24600225b98SGreg Roach /** 24715d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 24815d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 24952348eb8SGreg Roach * 25052348eb8SGreg Roach * @return void 25100225b98SGreg Roach */ 2529b802b22SGreg Roach public function testChildMale(): void 253c1010edaSGreg Roach { 254ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 25500225b98SGreg Roach $family->shouldReceive('getMarriageDate')->andReturn(new Date('')); 256*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['MARR'])->andReturn(new Collection()); 25700225b98SGreg Roach 258ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 259*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('M'); 260*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection([$family])); 26100225b98SGreg Roach $individual->shouldReceive('getEstimatedBirthDate')->andReturn(new Date('1820')); 26200225b98SGreg Roach 263ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 26400225b98SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 26500225b98SGreg Roach 26600225b98SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 26700225b98SGreg Roach 268342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 26900225b98SGreg Roach } 27000225b98SGreg Roach 27100225b98SGreg Roach /** 27215d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 27315d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 27452348eb8SGreg Roach * 27552348eb8SGreg Roach * @return void 27600225b98SGreg Roach */ 2779b802b22SGreg Roach public function testChildFemale(): void 278c1010edaSGreg Roach { 279ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 28000225b98SGreg Roach $family->shouldReceive('getMarriageDate')->andReturn(new Date('')); 281*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['MARR'])->andReturn(new Collection()); 28200225b98SGreg Roach 283ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 284*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('F'); 285*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection([$family])); 28600225b98SGreg Roach $individual->shouldReceive('getEstimatedBirthDate')->andReturn(new Date('1820')); 28700225b98SGreg Roach 288ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 28900225b98SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 29000225b98SGreg Roach 29100225b98SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 29200225b98SGreg Roach 293342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 29400225b98SGreg Roach } 29500225b98SGreg Roach 29600225b98SGreg Roach /** 29715d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 29815d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 29952348eb8SGreg Roach * 30052348eb8SGreg Roach * @return void 30100225b98SGreg Roach */ 3029b802b22SGreg Roach public function testDivorcedMale(): void 303c1010edaSGreg Roach { 304ddf438a5SGreg Roach $fact = Mockery::mock(Fact::class); 30500225b98SGreg Roach 306ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 30700225b98SGreg Roach $family->shouldReceive('getMarriageDate')->andReturn(new Date('')); 308*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['MARR'])->andReturn(new Collection([$fact])); 309*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['DIV'])->andReturn(new Collection([$fact])); 31000225b98SGreg Roach 311ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 312*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('M'); 313*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection([$family])); 31400225b98SGreg Roach 315ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 31600225b98SGreg Roach 31700225b98SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 31800225b98SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 31900225b98SGreg Roach 320342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 32100225b98SGreg Roach } 32200225b98SGreg Roach 32300225b98SGreg Roach /** 32415d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnConditionFrenchVeuve 32515d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumnCondition 32652348eb8SGreg Roach * 32752348eb8SGreg Roach * @return void 32800225b98SGreg Roach */ 3299b802b22SGreg Roach public function testDivorcedFemale(): void 330c1010edaSGreg Roach { 331ddf438a5SGreg Roach $fact = Mockery::mock(Fact::class); 33200225b98SGreg Roach 333ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 33400225b98SGreg Roach $family->shouldReceive('getMarriageDate')->andReturn(new Date('')); 335*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['MARR'])->andReturn(new Collection([$fact])); 336*39ca88baSGreg Roach $family->shouldReceive('facts')->with(['DIV'])->andReturn(new Collection([$fact])); 33700225b98SGreg Roach 338ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 339*39ca88baSGreg Roach $individual->shouldReceive('sex')->andReturn('F'); 340*39ca88baSGreg Roach $individual->shouldReceive('spouseFamilies')->andReturn(new Collection([$family])); 34100225b98SGreg Roach 342ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 34300225b98SGreg Roach 34400225b98SGreg Roach $column = new CensusColumnConditionFrenchVeuve($census, '', ''); 34500225b98SGreg Roach $census->shouldReceive('censusDate')->andReturn('30 JUN 1830'); 34600225b98SGreg Roach 347342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 34800225b98SGreg Roach } 34900225b98SGreg Roach} 350