<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Customer\Test\Unit\Model\Attribute\Data; use Magento\Directory\Helper\Data as DirectoryHelper; use Magento\Eav\Model\Entity\Attribute\AbstractAttribute; class PostcodeTest extends \PHPUnit\Framework\TestCase { /** * @var DirectoryHelper|\PHPUnit_Framework_MockObject_MockObject */ protected $directoryHelperMock; /** * @var AbstractAttribute|\PHPUnit_Framework_MockObject_MockObject */ protected $attributeMock; /** * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface|\PHPUnit_Framework_MockObject_MockObject */ private $localeMock; /** * @var \Magento\Framework\Locale\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject */ private $localeResolverMock; /** * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject */ private $loggerMock; protected function setUp() { $this->localeMock = $this->getMockBuilder(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class) ->getMock(); $this->localeResolverMock = $this->getMockBuilder(\Magento\Framework\Locale\ResolverInterface::class) ->getMock(); $this->loggerMock = $this->getMockBuilder(\Psr\Log\LoggerInterface::class) ->getMock(); $this->directoryHelperMock = $this->getMockBuilder(\Magento\Directory\Helper\Data::class) ->disableOriginalConstructor() ->getMock(); $this->attributeMock = $this->getMockBuilder(\Magento\Eav\Model\Entity\Attribute\AbstractAttribute::class) ->disableOriginalConstructor() ->setMethods(['getStoreLabel']) ->getMock(); } /** * @param string $value to assign to boolean * @param bool $expected text output * @param string $countryId * @param bool $isOptional * * @dataProvider validateValueDataProvider */ public function testValidateValue($value, $expected, $countryId, $isOptional) { $storeLabel = 'Zip/Postal Code'; $this->attributeMock->expects($this->any()) ->method('getStoreLabel') ->willReturn($storeLabel); $this->directoryHelperMock->expects($this->once()) ->method('isZipCodeOptional') ->willReturnMap([ [$countryId, $isOptional], ]); $object = new \Magento\Customer\Model\Attribute\Data\Postcode( $this->localeMock, $this->loggerMock, $this->localeResolverMock, $this->directoryHelperMock ); $object->setAttribute($this->attributeMock); $object->setExtractedData(['country_id' => $countryId]); $actual = $object->validateValue($value); $this->assertEquals($expected, $actual); } /** * @return array */ public function validateValueDataProvider() { return [ ['', ['"Zip/Postal Code" is a required value.'], 'US', false], ['90034', true, 'US', false], ['', true, 'IE', true], ['90034', true, 'IE', true], ]; } }