localeResolverMock = $this->getMockBuilder(\Magento\Framework\Locale\ResolverInterface::class) ->disableOriginalConstructor() ->getMock(); $this->orderFactoryMock = $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Report\OrderFactory::class) ->disableOriginalConstructor() ->setMethods(['create']) ->getMock(); $this->localeDateMock = $this->getMockBuilder(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class) ->disableOriginalConstructor() ->getMock(); $this->observer = new AggregateSalesReportOrderData( $this->localeResolverMock, $this->localeDateMock, $this->orderFactoryMock ); } public function testExecute() { $date = $this->setupAggregate(); $orderMock = $this->getMockBuilder(\Magento\Sales\Model\ResourceModel\Report\Order::class) ->disableOriginalConstructor() ->getMock(); $orderMock->expects($this->once()) ->method('aggregate') ->with($date); $this->orderFactoryMock->expects($this->once()) ->method('create') ->will($this->returnValue($orderMock)); $this->observer->execute(); } /** * Set up aggregate * * @return \DateTime */ protected function setupAggregate() { $this->localeResolverMock->expects($this->once()) ->method('emulate') ->with(0); $this->localeResolverMock->expects($this->once()) ->method('revert'); $date = (new \DateTime())->sub(new \DateInterval('PT25H')); $this->localeDateMock->expects($this->once()) ->method('date') ->will($this->returnValue($date)); return $date; } }