15 use PHPUnit_Framework_MockObject_MockObject as MockObject;
17 use Psr\Log\LoggerInterface;
27 private static $customerId = 1;
33 private static $eurAmount = 100;
39 private static $uahAmount = 270;
45 private static $usdAmount = 50;
50 private $objectManager;
55 private $filterBuilder;
75 private $orderRepository;
80 private $searchCriteriaBuilder;
94 $this->orderRepository = $this->getMockBuilder(OrderRepositoryInterface::class)
95 ->getMockForAbstractClass();
97 $this->logger = $this->getMockBuilder(LoggerInterface::class)
98 ->getMockForAbstractClass();
100 $this->filterBuilder = $this->getMockBuilder(FilterBuilder::class)
101 ->disableOriginalConstructor()
104 $this->searchCriteriaBuilder = $this->getMockBuilder(SearchCriteriaBuilder::class)
105 ->disableOriginalConstructor()
108 $this->model = $this->objectManager->getObject(CustomerOrders::class, [
109 'filterBuilder' => $this->filterBuilder,
110 'orderRepository' => $this->orderRepository,
111 'searchCriteriaBuilder' => $this->searchCriteriaBuilder,
112 'logger' => $this->logger
115 $this->initCurrencies();
116 $this->initOrderRepository();
118 $this->objectManager->setBackwardCompatibleProperty(
121 [
'EUR' => $this->eurCurrency,
'UAH' => $this->uahCurrency]
130 $this->eurCurrency->expects($this->once())
132 ->with(self::$eurAmount,
'USD')
135 $this->uahCurrency->expects($this->once())
137 ->with(self::$uahAmount,
'USD')
142 static::assertEquals(3, $actual[
'aggregateOrderCount']);
143 static::assertEquals(169.35, $actual[
'aggregateOrderDollars']);
152 $this->eurCurrency->expects($this->once())
154 ->with(self::$eurAmount,
'USD')
157 $this->uahCurrency->expects($this->once())
159 ->with(self::$uahAmount,
'USD')
160 ->willThrowException(
new \Exception());
162 $this->logger->expects($this->once())
167 $this->assertNull($actual[
'aggregateOrderCount']);
168 $this->assertNull($actual[
'aggregateOrderDollars']);
174 private function initOrderRepository()
176 $this->filterBuilder->expects($this->once())
179 $this->filterBuilder->expects($this->once())
182 $filter = $this->getMockBuilder(\
Magento\Framework\Api\Filter::class)
183 ->disableOriginalConstructor()
185 $this->filterBuilder->expects($this->once())
187 ->willReturn($filter);
190 ->disableOriginalConstructor()
192 $this->searchCriteriaBuilder->expects($this->once())
196 $orderSearchResult = $this->getMockBuilder(OrderSearchResultInterface::class)
197 ->getMockForAbstractClass();
198 $orderSearchResult->expects($this->once())
200 ->willReturn($this->getOrders());
201 $this->orderRepository->expects($this->once())
203 ->willReturn($orderSearchResult);
210 private function initCurrencies()
212 $this->eurCurrency = $this->getMockBuilder(Currency::class)
213 ->disableOriginalConstructor()
214 ->setMethods([
'convert'])
217 $this->uahCurrency = $this->getMockBuilder(Currency::class)
218 ->disableOriginalConstructor()
219 ->setMethods([
'convert'])
227 private function getOrders()
229 $eurOrder = $this->getMockBuilder(Order::class)
230 ->disableOriginalConstructor()
231 ->setMethods([
'getBaseGrandTotal',
'getBaseCurrencyCode'])
234 $eurOrder->expects($this->once())
235 ->method(
'getBaseGrandTotal')
236 ->willReturn(self::$eurAmount);
237 $eurOrder->expects($this->once())
238 ->method(
'getBaseCurrencyCode')
241 $uahOrder = $this->getMockBuilder(Order::class)
242 ->disableOriginalConstructor()
243 ->setMethods([
'getBaseGrandTotal',
'getBaseCurrencyCode'])
246 $uahOrder->expects($this->once())
247 ->method(
'getBaseGrandTotal')
248 ->willReturn(self::$uahAmount);
249 $uahOrder->expects($this->once())
250 ->method(
'getBaseCurrencyCode')
253 $usdOrder = $this->getMockBuilder(Order::class)
254 ->disableOriginalConstructor()
255 ->setMethods([
'getBaseGrandTotal',
'getBaseCurrencyCode'])
258 $usdOrder->expects($this->once())
259 ->method(
'getBaseGrandTotal')
260 ->willReturn(self::$usdAmount);
261 $usdOrder->expects($this->once())
262 ->method(
'getBaseCurrencyCode')
265 return [$usdOrder, $eurOrder, $uahOrder];
testGetCountAndTotalAmount()
testGetCountAndTotalAmountNegative()