magento2-docker/dev/tests/integration/testsuite/Magento/Directory/Model/RegionTest.php

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'));
}
}
}