PostcodeTest.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Test\Unit\Model\Attribute\Data;
  7. use Magento\Directory\Helper\Data as DirectoryHelper;
  8. use Magento\Eav\Model\Entity\Attribute\AbstractAttribute;
  9. class PostcodeTest extends \PHPUnit\Framework\TestCase
  10. {
  11. /**
  12. * @var DirectoryHelper|\PHPUnit_Framework_MockObject_MockObject
  13. */
  14. protected $directoryHelperMock;
  15. /**
  16. * @var AbstractAttribute|\PHPUnit_Framework_MockObject_MockObject
  17. */
  18. protected $attributeMock;
  19. /**
  20. * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface|\PHPUnit_Framework_MockObject_MockObject
  21. */
  22. private $localeMock;
  23. /**
  24. * @var \Magento\Framework\Locale\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject
  25. */
  26. private $localeResolverMock;
  27. /**
  28. * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
  29. */
  30. private $loggerMock;
  31. protected function setUp()
  32. {
  33. $this->localeMock = $this->getMockBuilder(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class)
  34. ->getMock();
  35. $this->localeResolverMock = $this->getMockBuilder(\Magento\Framework\Locale\ResolverInterface::class)
  36. ->getMock();
  37. $this->loggerMock = $this->getMockBuilder(\Psr\Log\LoggerInterface::class)
  38. ->getMock();
  39. $this->directoryHelperMock = $this->getMockBuilder(\Magento\Directory\Helper\Data::class)
  40. ->disableOriginalConstructor()
  41. ->getMock();
  42. $this->attributeMock = $this->getMockBuilder(\Magento\Eav\Model\Entity\Attribute\AbstractAttribute::class)
  43. ->disableOriginalConstructor()
  44. ->setMethods(['getStoreLabel'])
  45. ->getMock();
  46. }
  47. /**
  48. * @param string $value to assign to boolean
  49. * @param bool $expected text output
  50. * @param string $countryId
  51. * @param bool $isOptional
  52. *
  53. * @dataProvider validateValueDataProvider
  54. */
  55. public function testValidateValue($value, $expected, $countryId, $isOptional)
  56. {
  57. $storeLabel = 'Zip/Postal Code';
  58. $this->attributeMock->expects($this->any())
  59. ->method('getStoreLabel')
  60. ->willReturn($storeLabel);
  61. $this->directoryHelperMock->expects($this->once())
  62. ->method('isZipCodeOptional')
  63. ->willReturnMap([
  64. [$countryId, $isOptional],
  65. ]);
  66. $object = new \Magento\Customer\Model\Attribute\Data\Postcode(
  67. $this->localeMock,
  68. $this->loggerMock,
  69. $this->localeResolverMock,
  70. $this->directoryHelperMock
  71. );
  72. $object->setAttribute($this->attributeMock);
  73. $object->setExtractedData(['country_id' => $countryId]);
  74. $actual = $object->validateValue($value);
  75. $this->assertEquals($expected, $actual);
  76. }
  77. /**
  78. * @return array
  79. */
  80. public function validateValueDataProvider()
  81. {
  82. return [
  83. ['', ['"Zip/Postal Code" is a required value.'], 'US', false],
  84. ['90034', true, 'US', false],
  85. ['', true, 'IE', true],
  86. ['90034', true, 'IE', true],
  87. ];
  88. }
  89. }