/** * @covers Thelia\Coupon\CouponManager::getDiscount * @covers Thelia\Coupon\CouponManager::isCouponRemovingPostage * @covers Thelia\Coupon\CouponManager::sortCoupons * @covers Thelia\Coupon\CouponManager::getEffect */ public function testGetDiscountCumulativeRemovingPostage() { $stubFacade = $this->generateFacadeStub(); $stubContainer = $this->getMock('\\Symfony\\Component\\DependencyInjection\\Container'); $conditionFactory = new ConditionFactory($stubContainer); $conditions = new ConditionCollection(); $stubConditionFactory = $this->getMockBuilder('\\Thelia\\Condition\\ConditionFactory')->disableOriginalConstructor()->getMock(); $stubConditionFactory->expects($this->any())->method('unserializeConditionCollection')->will($this->returnValue($conditions)); $couponManager = new RemoveXAmount($stubFacade); $stubContainer->expects($this->any())->method('get')->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory, clone $couponManager, $stubConditionFactory, $stubFacade)); $stubContainer->expects($this->any())->method('has')->will($this->returnValue(true)); $couponFactory = new CouponFactory($stubContainer); $model1 = $this->generateCouponModel($stubFacade, $conditionFactory); $model1->setCode('XMAS')->setIsRemovingPostage(false)->setAmount(21.0); $coupon1 = $couponFactory->buildCouponFromModel($model1); $model2 = $this->generateCouponModel($stubFacade, $conditionFactory); $model2->setCode('XMAS2')->setIsRemovingPostage(true)->setAmount(21.5); $coupon2 = $couponFactory->buildCouponFromModel($model2); $stubFacade->expects($this->any())->method('getCurrentCoupons')->will($this->returnValue(array($coupon1, $coupon2))); $stubFacade->expects($this->any())->method('getCheckoutPostagePrice')->will($this->returnValue(8.300000000000001)); $stubFacade->expects($this->any())->method('getCartTotalTaxPrice')->will($this->returnValue(122.53)); $couponManager = new CouponManager($stubContainer); $couponManager->addAvailableCoupon($coupon1); $couponManager->addAvailableCoupon($coupon2); $actual = $couponManager->getDiscount(); $expected = 21 + 21.5; $order = new Order(); $order->setChoosenDeliveryAddress(1); $order->setDeliveryModuleId(1); $this->assertEquals($expected, $actual); $this->assertTrue($couponManager->isCouponRemovingPostage($order)); }