AggregateSalesReportOrderDataTest.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Test\Unit\Model\CronJob;
  7. use \Magento\Sales\Model\CronJob\AggregateSalesReportOrderData;
  8. /**
  9. * Tests Magento\Sales\Model\CronJob\AggregateSalesReportOrderDataTest
  10. */
  11. class AggregateSalesReportOrderDataTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var \Magento\Framework\Locale\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $localeResolverMock;
  17. /**
  18. * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $localeDateMock;
  21. /**
  22. * @var \Magento\Sales\Model\ResourceModel\Report\OrderFactory|\PHPUnit_Framework_MockObject_MockObject
  23. */
  24. protected $orderFactoryMock;
  25. /**
  26. * @var \Magento\Sales\Model\CronJob\AggregateSalesReportOrderData
  27. */
  28. protected $observer;
  29. protected function setUp()
  30. {
  31. $this->localeResolverMock = $this->getMockBuilder(\Magento\Framework\Locale\ResolverInterface::class)
  32. ->disableOriginalConstructor()
  33. ->getMock();
  34. $this->orderFactoryMock = $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Report\OrderFactory::class)
  35. ->disableOriginalConstructor()
  36. ->setMethods(['create'])
  37. ->getMock();
  38. $this->localeDateMock = $this->getMockBuilder(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class)
  39. ->disableOriginalConstructor()
  40. ->getMock();
  41. $this->observer = new AggregateSalesReportOrderData(
  42. $this->localeResolverMock,
  43. $this->localeDateMock,
  44. $this->orderFactoryMock
  45. );
  46. }
  47. public function testExecute()
  48. {
  49. $date = $this->setupAggregate();
  50. $orderMock = $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Report\Order::class)
  51. ->disableOriginalConstructor()
  52. ->getMock();
  53. $orderMock->expects($this->once())
  54. ->method('aggregate')
  55. ->with($date);
  56. $this->orderFactoryMock->expects($this->once())
  57. ->method('create')
  58. ->will($this->returnValue($orderMock));
  59. $this->observer->execute();
  60. }
  61. /**
  62. * Set up aggregate
  63. *
  64. * @return \DateTime
  65. */
  66. protected function setupAggregate()
  67. {
  68. $this->localeResolverMock->expects($this->once())
  69. ->method('emulate')
  70. ->with(0);
  71. $this->localeResolverMock->expects($this->once())
  72. ->method('revert');
  73. $date = (new \DateTime())->sub(new \DateInterval('PT25H'));
  74. $this->localeDateMock->expects($this->once())
  75. ->method('date')
  76. ->will($this->returnValue($date));
  77. return $date;
  78. }
  79. }