AggregateSalesReportBestsellersDataTest.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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\AggregateSalesReportBestsellersData;
  8. /**
  9. * Tests Magento\Sales\Model\CronJob\AggregateSalesReportBestsellersDataTest
  10. */
  11. class AggregateSalesReportBestsellersDataTest 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\BestsellersFactory|\PHPUnit_Framework_MockObject_MockObject
  23. */
  24. protected $bestsellersFactoryMock;
  25. /**
  26. * @var \Magento\Sales\Model\CronJob\AggregateSalesReportBestsellersData
  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->bestsellersFactoryMock =
  35. $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Report\BestsellersFactory::class)
  36. ->disableOriginalConstructor()
  37. ->setMethods(['create'])
  38. ->getMock();
  39. $this->localeDateMock = $this->getMockBuilder(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class)
  40. ->disableOriginalConstructor()
  41. ->getMock();
  42. $this->observer = new AggregateSalesReportBestsellersData(
  43. $this->localeResolverMock,
  44. $this->localeDateMock,
  45. $this->bestsellersFactoryMock
  46. );
  47. }
  48. public function testExecute()
  49. {
  50. $date = $this->setupAggregate();
  51. $bestsellersMock = $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Report\Bestsellers::class)
  52. ->disableOriginalConstructor()
  53. ->getMock();
  54. $bestsellersMock->expects($this->once())
  55. ->method('aggregate')
  56. ->with($date);
  57. $this->bestsellersFactoryMock->expects($this->once())
  58. ->method('create')
  59. ->will($this->returnValue($bestsellersMock));
  60. $this->observer->execute();
  61. }
  62. /**
  63. * Set up aggregate
  64. *
  65. * @return \DateTime
  66. */
  67. protected function setupAggregate()
  68. {
  69. $this->localeResolverMock->expects($this->once())
  70. ->method('emulate')
  71. ->with(0);
  72. $this->localeResolverMock->expects($this->once())
  73. ->method('revert');
  74. $date = (new \DateTime())->sub(new \DateInterval('PT25H'));
  75. $this->localeDateMock->expects($this->once())
  76. ->method('date')
  77. ->will($this->returnValue($date));
  78. return $date;
  79. }
  80. }