DataTest.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Reports\Test\Unit\Helper;
  7. use Magento\Reports\Helper\Data;
  8. class DataTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var \Magento\Reports\Helper\Data
  12. */
  13. protected $data;
  14. /**
  15. * @var \Magento\Framework\App\Helper\Context|\PHPUnit_Framework_MockObject_MockObject
  16. */
  17. protected $contextMock;
  18. /**
  19. * @var \Magento\Reports\Model\ItemFactory|\PHPUnit_Framework_MockObject_MockObject
  20. */
  21. protected $itemFactoryMock;
  22. /**
  23. * {@inheritDoc}
  24. */
  25. protected function setUp()
  26. {
  27. $this->contextMock = $this->getMockBuilder(\Magento\Framework\App\Helper\Context::class)
  28. ->disableOriginalConstructor()
  29. ->getMock();
  30. $this->itemFactoryMock = $this->getMockBuilder(\Magento\Reports\Model\ItemFactory::class)
  31. ->setMethods(['create'])
  32. ->disableOriginalConstructor()
  33. ->getMock();
  34. $this->data = new Data(
  35. $this->contextMock,
  36. $this->itemFactoryMock
  37. );
  38. }
  39. /**
  40. * @param string $from
  41. * @param string $to
  42. * @param string $period
  43. * @param array $results
  44. * @dataProvider intervalsDataProvider
  45. * @return void
  46. */
  47. public function testGetIntervals($from, $to, $period, $results)
  48. {
  49. $this->assertEquals($this->data->getIntervals($from, $to, $period), $results);
  50. }
  51. /**
  52. * @param string $from
  53. * @param string $to
  54. * @param string $period
  55. * @param array $results
  56. * @dataProvider intervalsDataProvider
  57. * @return void
  58. */
  59. public function testPrepareIntervalsCollection($from, $to, $period, $results)
  60. {
  61. $collection = $this->getMockBuilder(\Magento\Framework\Data\Collection::class)
  62. ->disableOriginalConstructor()
  63. ->setMethods(['addItem'])
  64. ->getMock();
  65. $item = $this->getMockBuilder(\Magento\Reports\Model\Item::class)
  66. ->disableOriginalConstructor()
  67. ->setMethods(['setPeriod', 'setIsEmpty'])
  68. ->getMock();
  69. $this->itemFactoryMock->expects($this->exactly(count($results)))
  70. ->method('create')
  71. ->willReturn($item);
  72. $item->expects($this->exactly(count($results)))
  73. ->method('setIsEmpty');
  74. $collection->expects($this->exactly(count($results)))
  75. ->method('addItem');
  76. foreach ($results as $key => $result) {
  77. $item->expects($this->at($key + $key))
  78. ->method('setPeriod')
  79. ->with($result);
  80. }
  81. $this->data->prepareIntervalsCollection($collection, $from, $to, $period);
  82. }
  83. /**
  84. * @return array
  85. */
  86. public function intervalsDataProvider()
  87. {
  88. return [
  89. [
  90. 'from' => '2000-01-15 10:00:00',
  91. 'to' => '2000-01-15 11:00:00',
  92. 'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_DAY,
  93. 'results' => ['2000-01-15']
  94. ],
  95. [
  96. 'from' => '2000-01-15 10:00:00',
  97. 'to' => '2000-01-17 10:00:00',
  98. 'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_MONTH,
  99. 'results' => ['2000-01']
  100. ],
  101. [
  102. 'from' => '2000-01-15 10:00:00',
  103. 'to' => '2000-02-15 10:00:00',
  104. 'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_YEAR,
  105. 'results' => ['2000']
  106. ],
  107. [
  108. 'from' => '2000-01-15 10:00:00',
  109. 'to' => '2000-01-16 11:00:00',
  110. 'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_DAY,
  111. 'results' => ['2000-01-15', '2000-01-16']
  112. ],
  113. [
  114. 'from' => '2000-01-15 10:00:00',
  115. 'to' => '2000-02-17 10:00:00',
  116. 'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_MONTH,
  117. 'results' => ['2000-01', '2000-02']
  118. ],
  119. [
  120. 'from' => '2000-01-15 10:00:00',
  121. 'to' => '2003-02-15 10:00:00',
  122. 'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_YEAR,
  123. 'results' => ['2000', '2001', '2002', '2003']
  124. ],
  125. [
  126. 'from' => '',
  127. 'to' => '',
  128. 'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_YEAR,
  129. 'results' => []
  130. ]
  131. ];
  132. }
  133. }