25 private $dateTimeFactory;
30 private $orderRepository;
35 private $caseManagement;
40 private $createGuaranteeAbility;
48 $this->orderRepository = $this->getMockBuilder(OrderRepositoryInterface::class)
49 ->getMockForAbstractClass();
50 $this->caseManagement = $this->getMockBuilder(CaseManagement::class)
51 ->disableOriginalConstructor()
55 $this->caseManagement,
56 $this->orderRepository,
57 $this->dateTimeFactory
61 public function testIsAvailableSuccess()
64 $orderCreatedAt = $this->getDateAgo(6);
67 $case = $this->getMockBuilder(CaseInterface::class)
68 ->disableOriginalConstructor()
70 $case->expects($this->once())
71 ->method(
'isGuaranteeEligible')
74 $this->caseManagement->expects($this->once())
75 ->method(
'getByOrderId')
80 $order = $this->getMockBuilder(OrderInterface::class)
81 ->getMockForAbstractClass();
82 $order->expects($this->once())
85 $order->expects($this->once())
86 ->method(
'getCreatedAt')
87 ->willReturn($orderCreatedAt);
89 $this->orderRepository->expects($this->once())
94 $this->assertTrue($this->createGuaranteeAbility->isAvailable($orderId));
104 $this->caseManagement->expects($this->once())
105 ->method(
'getByOrderId')
109 $this->assertFalse($this->createGuaranteeAbility->isAvailable($orderId));
115 public function testIsAvailableWithGuarantyEligibleFalse()
120 $case = $this->getMockBuilder(CaseInterface::class)
121 ->disableOriginalConstructor()
123 $case->expects($this->once())
124 ->method(
'isGuaranteeEligible')
127 $this->caseManagement->expects($this->once())
128 ->method(
'getByOrderId')
132 $this->assertFalse($this->createGuaranteeAbility->isAvailable($orderId));
138 public function testIsAvailableWithNullOrder()
143 $case = $this->getMockBuilder(CaseInterface::class)
144 ->disableOriginalConstructor()
146 $case->expects($this->once())
147 ->method(
'isGuaranteeEligible')
150 $this->caseManagement->expects($this->once())
151 ->method(
'getByOrderId')
155 $this->orderRepository->expects($this->once())
160 $this->assertFalse($this->createGuaranteeAbility->isAvailable($orderId));
169 public function testIsAvailableWithCanceledOrder($state)
174 $case = $this->getMockBuilder(CaseInterface::class)
175 ->disableOriginalConstructor()
177 $case->expects($this->once())
178 ->method(
'isGuaranteeEligible')
181 $this->caseManagement->expects($this->once())
182 ->method(
'getByOrderId')
187 $order = $this->getMockBuilder(OrderInterface::class)
188 ->getMockForAbstractClass();
189 $order->expects($this->once())
191 ->willReturn($state);
193 $this->orderRepository->expects($this->once())
198 $this->assertFalse($this->createGuaranteeAbility->isAvailable($orderId));
211 public function testIsAvailableWithOldOrder()
214 $orderCreatedAt = $this->getDateAgo(8);
217 $case = $this->getMockBuilder(CaseInterface::class)
218 ->disableOriginalConstructor()
220 $case->expects($this->once())
221 ->method(
'isGuaranteeEligible')
224 $this->caseManagement->expects($this->once())
225 ->method(
'getByOrderId')
230 $order = $this->getMockBuilder(OrderInterface::class)
231 ->getMockForAbstractClass();
232 $order->expects($this->once())
235 $order->expects($this->once())
236 ->method(
'getCreatedAt')
237 ->willReturn($orderCreatedAt);
239 $this->orderRepository->expects($this->once())
244 $this->assertFalse($this->createGuaranteeAbility->isAvailable($orderId));
253 private function getDateAgo($days)
255 $createdAtTime = $this->dateTimeFactory->create(
'now',
new \DateTimeZone(
'UTC'));
256 $createdAtTime->sub(
new \DateInterval(
'P' . $days .
'D'));
258 return $createdAtTime->format(
'Y-m-d h:i:s');
testIsAvailableWithNullCase()
isAvailableWithCanceledOrderDataProvider()