TimezonesTest.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Migration\Handler;
  7. class TimezoneTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @param $timeAndOffset array
  11. * @param $expected array
  12. * @return void
  13. * @dataProvider dataProviderTimeAndOffsets
  14. */
  15. public function testHandle($timeAndOffset, $expected)
  16. {
  17. list($value, $offset, $dataType) = array_values($timeAndOffset);
  18. $newValue = $expected['datetime'];
  19. $fieldName = 'fieldname';
  20. /** @var \Migration\ResourceModel\Record|\PHPUnit_Framework_MockObject_MockObject $recordToHandle */
  21. $recordToHandle = $this->createPartialMock(
  22. \Migration\ResourceModel\Record::class,
  23. ['getValue', 'setValue', 'getFields', 'getStructure']
  24. );
  25. $structure = $this->getMockBuilder(\Migration\ResourceModel\Structure::class)
  26. ->disableOriginalConstructor()
  27. ->setMethods(['getFields'])
  28. ->getMock();
  29. $structure->expects($this->any())->method('getFields')->willReturn([
  30. $fieldName => ['DATA_TYPE' => $dataType]
  31. ]);
  32. $recordToHandle->expects($this->any())->method('getValue')->willReturn($value);
  33. $recordToHandle->expects($this->any())->method('setValue')->with($fieldName, $newValue);
  34. $recordToHandle->expects($this->any())->method('getFields')->will($this->returnValue([$fieldName]));
  35. $recordToHandle->expects($this->any())->method('getStructure')->will($this->returnValue($structure));
  36. $oppositeRecord = $this->getMockBuilder(\Migration\ResourceModel\Record::class)
  37. ->disableOriginalConstructor()
  38. ->getMock();
  39. $handler = new Timezone($offset);
  40. $handler->setField($fieldName);
  41. $this->assertNull($handler->handle($recordToHandle, $oppositeRecord));
  42. }
  43. /**
  44. * @return array
  45. */
  46. public function dataProviderTimeAndOffsets()
  47. {
  48. return [
  49. [
  50. [
  51. 'datetime' => '2015-10-06 12:56:36',
  52. 'offset' => '',
  53. 'DATA_TYPE' => \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
  54. ],
  55. [
  56. 'datetime' => '2015-10-06 12:56:36',
  57. ],
  58. ],
  59. [
  60. [
  61. 'datetime' => '2015-10-06 12:56:36',
  62. 'offset' => '0',
  63. 'DATA_TYPE' => \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
  64. ],
  65. [
  66. 'datetime' => '2015-10-06 12:56:36',
  67. ],
  68. ],
  69. [
  70. [
  71. 'datetime' => '2015-10-06 12:56:36',
  72. 'offset' => '+3',
  73. 'DATA_TYPE' => \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
  74. ],
  75. [
  76. 'datetime' => '2015-10-06 15:56:36',
  77. ],
  78. ],
  79. [
  80. [
  81. 'datetime' => '2015-10-06 12:56:36',
  82. 'offset' => '+12',
  83. 'DATA_TYPE' => \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
  84. ],
  85. [
  86. 'datetime' => '2015-10-07 00:56:36',
  87. ],
  88. ],
  89. [
  90. [
  91. 'datetime' => '2015-10-06 12:56:36',
  92. 'offset' => '-14',
  93. 'DATA_TYPE' => \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
  94. ],
  95. [
  96. 'datetime' => '2015-10-05 22:56:36',
  97. ],
  98. ],
  99. [
  100. [
  101. 'datetime' => '2015-10-06 12:56:36',
  102. 'offset' => '-14',
  103. 'DATA_TYPE' => \Magento\Framework\DB\Ddl\Table::TYPE_DATETIME,
  104. ],
  105. [
  106. 'datetime' => '2015-10-05 22:56:36',
  107. ],
  108. ],
  109. [
  110. [
  111. 'datetime' => '1447683513',
  112. 'offset' => '1',
  113. 'DATA_TYPE' => Timezone::TYPE_INT,
  114. ],
  115. [
  116. 'datetime' => '1447687113',
  117. ],
  118. ],
  119. [
  120. [
  121. 'datetime' => '1447679914',
  122. 'offset' => '-1',
  123. 'DATA_TYPE' => Timezone::TYPE_INT,
  124. ],
  125. [
  126. 'datetime' => '1447676314',
  127. ],
  128. ],
  129. [
  130. [
  131. 'datetime' => '1447679914',
  132. 'offset' => '3',
  133. 'DATA_TYPE' => \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
  134. ],
  135. [
  136. 'datetime' => '1447690714',
  137. ],
  138. ],
  139. ];
  140. }
  141. }