118 lines
3.7 KiB
PHP
Executable File
118 lines
3.7 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\Directory\Model;
|
|
|
|
use Magento\Directory\Model\ResourceModel\Region\CollectionFactory as RegionCollectionFactory;
|
|
use Magento\Directory\Setup\Patch\Data\UpdateRegionNamesForSwitzerland as SwitzerlandRegionData;
|
|
use Magento\Framework\AppInterface;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use PHPUnit\Framework\ExpectationFailedException;
|
|
use PHPUnit\Framework\TestCase;
|
|
use SebastianBergmann\RecursionContext\InvalidArgumentException;
|
|
use Magento\Framework\Exception\LocalizedException;
|
|
|
|
class RegionTest extends TestCase
|
|
{
|
|
/**
|
|
* @var Country
|
|
*/
|
|
private $country;
|
|
|
|
/**
|
|
* @var RegionCollectionFactory
|
|
*/
|
|
private $regionCollectionFactory;
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
protected function setUp(): void
|
|
{
|
|
$this->country = Bootstrap::getObjectManager()->create(Country::class);
|
|
$this->regionCollectionFactory = Bootstrap::getObjectManager()->create(RegionCollectionFactory::class);
|
|
}
|
|
|
|
/**
|
|
* Verify country has regions.
|
|
*
|
|
* @param string $countryId
|
|
* @dataProvider getCountryIdDataProvider
|
|
*
|
|
* @throws ExpectationFailedException
|
|
* @throws InvalidArgumentException
|
|
* @throws LocalizedException
|
|
*/
|
|
public function testCountryHasRegions(string $countryId): void
|
|
{
|
|
$country = $this->country->loadByCode($countryId);
|
|
$region = $country->getRegions()->getItems();
|
|
|
|
$this->assertNotEmpty($region, 'Country ' . $countryId . ' not have regions');
|
|
}
|
|
|
|
/**
|
|
* Data provider for testCountryHasRegions
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getCountryIdDataProvider(): array
|
|
{
|
|
return [
|
|
['countryId' => 'US'],
|
|
['countryId' => 'CA'],
|
|
['countryId' => 'CN'],
|
|
['countryId' => 'IN'],
|
|
['countryId' => 'AU'],
|
|
['countryId' => 'BE'],
|
|
['countryId' => 'CO'],
|
|
['countryId' => 'MX'],
|
|
['countryId' => 'PL'],
|
|
['countryId' => 'IT'],
|
|
['countryId' => 'BG'],
|
|
['countryId' => 'AR'],
|
|
['countryId' => 'BO'],
|
|
['countryId' => 'CL'],
|
|
['countryId' => 'EC'],
|
|
['countryId' => 'GY'],
|
|
['countryId' => 'PY'],
|
|
['countryId' => 'PE'],
|
|
['countryId' => 'SR'],
|
|
['countryId' => 'VE'],
|
|
['countryId' => 'PT'],
|
|
['countryId' => 'IS'],
|
|
['countryId' => 'SE'],
|
|
['countryId' => 'GR'],
|
|
['countryId' => 'DK'],
|
|
['countryId' => 'AL'],
|
|
['countryId' => 'BY'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Verify updated Switzerland regions
|
|
*
|
|
* @throws ExpectationFailedException
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function testUpdatedSwitzerlandRegions(): void
|
|
{
|
|
$regionCollection = $this->regionCollectionFactory->create();
|
|
$regionCollection->addCountryFilter(SwitzerlandRegionData::SWITZERLAND_COUNTRY_CODE);
|
|
$regionCollection->addRegionCodeFilter(
|
|
array_keys(SwitzerlandRegionData::SWITZERLAND_COUNTRY_REGION_DATA_TO_UPDATE)
|
|
);
|
|
$regionCollection->addBindParam(':region_locale', AppInterface::DISTRO_LOCALE_CODE);
|
|
foreach ($regionCollection->getItems() as $regionItem) {
|
|
$code = $regionItem->getData('code');
|
|
$expectRegionName = SwitzerlandRegionData::SWITZERLAND_COUNTRY_REGION_DATA_TO_UPDATE[$code] ?? null;
|
|
$this->assertEquals($expectRegionName, $regionItem->getData('default_name'));
|
|
$this->assertEquals($expectRegionName, $regionItem->getData('name'));
|
|
}
|
|
}
|
|
}
|