1a53db70dSGreg Roach<?php 2a53db70dSGreg Roach/** 3a53db70dSGreg Roach * webtrees: online genealogy 48fcd0d32SGreg Roach * Copyright (C) 2019 webtrees development team 5a53db70dSGreg Roach * This program is free software: you can redistribute it and/or modify 6a53db70dSGreg Roach * it under the terms of the GNU General Public License as published by 7a53db70dSGreg Roach * the Free Software Foundation, either version 3 of the License, or 8a53db70dSGreg Roach * (at your option) any later version. 9a53db70dSGreg Roach * This program is distributed in the hope that it will be useful, 10a53db70dSGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 11a53db70dSGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12a53db70dSGreg Roach * GNU General Public License for more details. 13a53db70dSGreg Roach * You should have received a copy of the GNU General Public License 14a53db70dSGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>. 15a53db70dSGreg Roach */ 16e7f56f2aSGreg Roachdeclare(strict_types=1); 17e7f56f2aSGreg Roach 18a53db70dSGreg Roachnamespace Fisharebest\Webtrees\Census; 19a53db70dSGreg Roach 20ddf438a5SGreg Roachuse Fisharebest\Webtrees\Family; 21ddf438a5SGreg Roachuse Fisharebest\Webtrees\Individual; 2252348eb8SGreg Roachuse Fisharebest\Webtrees\Place; 23*392561bbSGreg Roachuse Illuminate\Support\Collection; 24a53db70dSGreg Roachuse Mockery; 25a53db70dSGreg Roach 26a53db70dSGreg Roach/** 27a53db70dSGreg Roach * Test harness for the class CensusColumnMotherBirthPlace 28a53db70dSGreg Roach */ 2984e2cf4eSGreg Roachclass CensusColumnMotherBirthPlaceTest extends \Fisharebest\Webtrees\TestCase 30c1010edaSGreg Roach{ 31a53db70dSGreg Roach /** 32a53db70dSGreg Roach * Delete mock objects 3352348eb8SGreg Roach * 3452348eb8SGreg Roach * @return void 35a53db70dSGreg Roach */ 36c1010edaSGreg Roach public function tearDown() 37c1010edaSGreg Roach { 38a53db70dSGreg Roach Mockery::close(); 39a53db70dSGreg Roach } 40a53db70dSGreg Roach 41a53db70dSGreg Roach /** 4216d0b7f7SRico Sonntag * Get place mock. 4316d0b7f7SRico Sonntag * 4416d0b7f7SRico Sonntag * @param string $place Gedcom Place 4516d0b7f7SRico Sonntag * 4652348eb8SGreg Roach * @return Place 4716d0b7f7SRico Sonntag */ 4852348eb8SGreg Roach private function getPlaceMock($place): Place 49c1010edaSGreg Roach { 5016d0b7f7SRico Sonntag $placeParts = explode(', ', $place); 5116d0b7f7SRico Sonntag 52ddf438a5SGreg Roach $placeMock = Mockery::mock(Place::class); 53*392561bbSGreg Roach $placeMock->shouldReceive('gedcomName')->andReturn($place); 54*392561bbSGreg Roach $placeMock->shouldReceive('lastParts')->andReturn(new Collection($placeParts)); 5516d0b7f7SRico Sonntag 5616d0b7f7SRico Sonntag return $placeMock; 5716d0b7f7SRico Sonntag } 5816d0b7f7SRico Sonntag 5916d0b7f7SRico Sonntag /** 6015d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnMotherBirthPlace 6115d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumn 6252348eb8SGreg Roach * 6352348eb8SGreg Roach * @return void 64a53db70dSGreg Roach */ 659b802b22SGreg Roach public function testSameCountry(): void 66c1010edaSGreg Roach { 67ddf438a5SGreg Roach $mother = Mockery::mock(Individual::class); 6816d0b7f7SRico Sonntag $mother->shouldReceive('getBirthPlace')->andReturn($this->getPlaceMock('London, England')); 69a53db70dSGreg Roach 70ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 71a53db70dSGreg Roach $family->shouldReceive('getWife')->andReturn($mother); 72a53db70dSGreg Roach 73ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 74a53db70dSGreg Roach $individual->shouldReceive('getPrimaryChildFamily')->andReturn($family); 75a53db70dSGreg Roach 76ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 77a53db70dSGreg Roach $census->shouldReceive('censusPlace')->andReturn('England'); 78a53db70dSGreg Roach 79a53db70dSGreg Roach $column = new CensusColumnMotherBirthPlace($census, '', ''); 80a53db70dSGreg Roach 81342dcecdSGreg Roach $this->assertSame('London', $column->generate($individual, $individual)); 82a53db70dSGreg Roach } 83a53db70dSGreg Roach 84a53db70dSGreg Roach /** 8515d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnMotherBirthPlace 8615d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumn 8752348eb8SGreg Roach * 8852348eb8SGreg Roach * @return void 89a53db70dSGreg Roach */ 909b802b22SGreg Roach public function testDifferentCountry(): void 91c1010edaSGreg Roach { 92ddf438a5SGreg Roach $mother = Mockery::mock(Individual::class); 9316d0b7f7SRico Sonntag $mother->shouldReceive('getBirthPlace')->andReturn($this->getPlaceMock('London, England')); 94a53db70dSGreg Roach 95ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 96a53db70dSGreg Roach $family->shouldReceive('getWife')->andReturn($mother); 97a53db70dSGreg Roach 98ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 99a53db70dSGreg Roach $individual->shouldReceive('getPrimaryChildFamily')->andReturn($family); 100a53db70dSGreg Roach 101ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 102a53db70dSGreg Roach $census->shouldReceive('censusPlace')->andReturn('Ireland'); 103a53db70dSGreg Roach 104a53db70dSGreg Roach $column = new CensusColumnMotherBirthPlace($census, '', ''); 105a53db70dSGreg Roach 106342dcecdSGreg Roach $this->assertSame('London, England', $column->generate($individual, $individual)); 107a53db70dSGreg Roach } 108a53db70dSGreg Roach 109a53db70dSGreg Roach /** 11015d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnMotherBirthPlace 11115d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumn 11252348eb8SGreg Roach * 11352348eb8SGreg Roach * @return void 114a53db70dSGreg Roach */ 1159b802b22SGreg Roach public function testPlaceNoParent(): void 116c1010edaSGreg Roach { 117ddf438a5SGreg Roach $family = Mockery::mock(Family::class); 118a53db70dSGreg Roach $family->shouldReceive('getWife')->andReturn(null); 119a53db70dSGreg Roach 120ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 121a53db70dSGreg Roach $individual->shouldReceive('getPrimaryChildFamily')->andReturn($family); 122a53db70dSGreg Roach 123ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 124a53db70dSGreg Roach $census->shouldReceive('censusPlace')->andReturn('England'); 125a53db70dSGreg Roach 126a53db70dSGreg Roach $column = new CensusColumnMotherBirthPlace($census, '', ''); 127a53db70dSGreg Roach 128342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 129a53db70dSGreg Roach } 130a53db70dSGreg Roach 131a53db70dSGreg Roach /** 13215d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\CensusColumnMotherBirthPlace 13315d603e7SGreg Roach * @covers \Fisharebest\Webtrees\Census\AbstractCensusColumn 13452348eb8SGreg Roach * 13552348eb8SGreg Roach * @return void 136a53db70dSGreg Roach */ 1379b802b22SGreg Roach public function testPlaceNoParentFamily(): void 138c1010edaSGreg Roach { 139ddf438a5SGreg Roach $individual = Mockery::mock(Individual::class); 140a53db70dSGreg Roach $individual->shouldReceive('getPrimaryChildFamily')->andReturn(null); 141a53db70dSGreg Roach 142ddf438a5SGreg Roach $census = Mockery::mock(CensusInterface::class); 143a53db70dSGreg Roach $census->shouldReceive('censusPlace')->andReturn('England'); 144a53db70dSGreg Roach 145a53db70dSGreg Roach $column = new CensusColumnMotherBirthPlace($census, '', ''); 146a53db70dSGreg Roach 147342dcecdSGreg Roach $this->assertSame('', $column->generate($individual, $individual)); 148a53db70dSGreg Roach } 149a53db70dSGreg Roach} 150