DateTest.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Eav\Test\Unit\Model\Attribute\Data;
  7. class DateTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\Eav\Model\Attribute\Data\Date
  11. */
  12. protected $model;
  13. /**
  14. * @var \PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $timezoneMock;
  17. protected function setUp()
  18. {
  19. $this->timezoneMock = $this->createMock(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class);
  20. $loggerMock = $this->createMock(\Psr\Log\LoggerInterface::class);
  21. $localeResolverMock = $this->createMock(\Magento\Framework\Locale\ResolverInterface::class);
  22. $this->model = new \Magento\Eav\Model\Attribute\Data\Date(
  23. $this->timezoneMock,
  24. $loggerMock,
  25. $localeResolverMock
  26. );
  27. }
  28. /**
  29. * @covers \Magento\Eav\Model\Attribute\Data\Date::outputValue
  30. *
  31. * @param string $format
  32. * @param mixed $value
  33. * @param mixed $expectedResult
  34. * @param int $callTimes
  35. * @dataProvider outputValueDataProvider
  36. */
  37. public function testOutputValue($format, $value, $callTimes, $expectedResult)
  38. {
  39. $entityMock = $this->createMock(\Magento\Framework\Model\AbstractModel::class);
  40. $entityMock->expects($this->once())->method('getData')->will($this->returnValue($value));
  41. $attributeMock = $this->createPartialMock(\Magento\Eav\Model\Attribute::class, ['getInputFilter', '__wakeup']);
  42. $attributeMock->expects($this->exactly($callTimes))->method('getInputFilter')->will($this->returnValue(false));
  43. $this->model->setEntity($entityMock);
  44. $this->model->setAttribute($attributeMock);
  45. $this->assertEquals($expectedResult, $this->model->outputValue($format));
  46. }
  47. /**
  48. * @return array
  49. */
  50. public function outputValueDataProvider()
  51. {
  52. return [
  53. [
  54. 'format' => \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_TEXT,
  55. 'value' => 'value',
  56. 'callTimes' => 1,
  57. 'expectedResult' => 'value',
  58. ],
  59. [
  60. 'format' => \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_TEXT,
  61. 'value' => false,
  62. 'callTimes' => 0,
  63. 'expectedResult' => false
  64. ],
  65. ];
  66. }
  67. /**
  68. * @covers \Magento\Eav\Model\Attribute\Data\Date::validateValue
  69. *
  70. * @param mixed $value
  71. * @param array $rules
  72. * @param mixed $originalValue
  73. * @param bool $isRequired
  74. * @param array $expectedResult
  75. * @dataProvider validateValueDataProvider
  76. */
  77. public function testValidateValue($value, $rules, $originalValue, $isRequired, $expectedResult)
  78. {
  79. $entityMock = $this->createMock(\Magento\Framework\Model\AbstractModel::class);
  80. $entityMock->expects($this->any())->method('getDataUsingMethod')->will($this->returnValue($originalValue));
  81. $attributeMock = $this->createMock(\Magento\Eav\Model\Attribute::class);
  82. $attributeMock->expects($this->any())->method('getStoreLabel')->will($this->returnValue('Label'));
  83. $attributeMock->expects($this->any())->method('getIsRequired')->will($this->returnValue($isRequired));
  84. $attributeMock->expects($this->any())->method('getValidateRules')->will($this->returnValue($rules));
  85. $this->model->setEntity($entityMock);
  86. $this->model->setAttribute($attributeMock);
  87. $this->assertEquals($expectedResult, $this->model->validateValue($value));
  88. }
  89. /**
  90. * @return array
  91. */
  92. public function validateValueDataProvider()
  93. {
  94. return [
  95. [
  96. 'value' => false,
  97. 'rules' => [],
  98. 'originalValue' => false,
  99. 'isRequired' => true,
  100. 'expectedResult' => ['"Label" is a required value.'],
  101. ],
  102. [
  103. 'value' => 'value',
  104. 'rules' => [],
  105. 'originalValue' => 'value',
  106. 'isRequired' => false,
  107. 'expectedResult' => true,
  108. ],
  109. [
  110. 'value' => null,
  111. 'rules' => [],
  112. 'originalValue' => '',
  113. 'isRequired' => false,
  114. 'expectedResult' => true,
  115. ],
  116. [
  117. 'value' => '2000-01-01',
  118. 'rules' => ['date_range_min' => strtotime('2001-01-01'),'date_range_max' => strtotime('2002-01-01')],
  119. 'originalValue' => '',
  120. 'isRequired' => false,
  121. 'expectedResult' => ['Please enter a valid date between 01/01/2001 and 01/01/2002 at Label.'],
  122. ],
  123. [
  124. 'value' => '2000-01-01',
  125. 'rules' => ['date_range_min' => strtotime('2001-01-01')],
  126. 'originalValue' => '',
  127. 'isRequired' => false,
  128. 'expectedResult' => ['Please enter a valid date equal to or greater than 01/01/2001 at Label.'],
  129. ],
  130. [
  131. 'value' => '2010-01-01',
  132. 'rules' => ['date_range_max' => strtotime('2001-01-01')],
  133. 'originalValue' => '',
  134. 'isRequired' => false,
  135. 'expectedResult' => ['Please enter a valid date less than or equal to 01/01/2001 at Label.'],
  136. ],
  137. ];
  138. }
  139. /**
  140. * @covers \Magento\Eav\Model\Attribute\Data\Date::compactValue
  141. *
  142. * @param string $value
  143. * @param string $expectedResult
  144. * @dataProvider compactValueDataProvider
  145. */
  146. public function testCompactValue($value, $expectedResult)
  147. {
  148. $entityMock = $this->createMock(\Magento\Framework\Model\AbstractModel::class);
  149. $entityMock->expects($this->once())->method('setDataUsingMethod')->with('attrCode', $expectedResult);
  150. $attributeMock = $this->createMock(\Magento\Eav\Model\Attribute::class);
  151. $attributeMock->expects($this->any())->method('getAttributeCode')->will($this->returnValue('attrCode'));
  152. $this->model->setAttribute($attributeMock);
  153. $this->model->setEntity($entityMock);
  154. $this->model->compactValue($value);
  155. }
  156. /**
  157. * @return array
  158. */
  159. public function compactValueDataProvider()
  160. {
  161. return [
  162. ['value' => 'value', 'expectedResult' => 'value'],
  163. ['value' => '', 'expectedResult' => null]
  164. ];
  165. }
  166. /**
  167. * @covers \Magento\Eav\Model\Attribute\Data\Date::compactValue
  168. */
  169. public function testCompactValueWithFalseValue()
  170. {
  171. $entityMock = $this->createMock(\Magento\Framework\Model\AbstractModel::class);
  172. $entityMock->expects($this->never())->method('setDataUsingMethod');
  173. $this->model->setEntity($entityMock);
  174. $this->model->compactValue(false);
  175. }
  176. }