From c71cba93e2ebde8839194446e7fe0160089e58ba Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 24 Nov 2013 21:44:51 +0100 Subject: [PATCH] Coupon : Adding unit tests --- .../Thelia/Tests/Coupon/CouponManagerTest.php | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php index c36ce97ae..bf4b9f1e9 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php @@ -241,6 +241,61 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $this->assertEquals($expected, $actual); } + /** + * @covers Thelia\Coupon\CouponManager::getDiscount + * @covers Thelia\Coupon\CouponManager::isCouponRemovingPostage + * @covers Thelia\Coupon\CouponManager::sortCoupons + * @covers Thelia\Coupon\CouponManager::getEffect + */ + public function testGetDiscountGreaterThanCartAmount() + { + $stubFacade = $this->generateFacadeStub(12.25); + $stubFacade->expects($this->any()) + ->method('getCheckoutPostagePrice') + ->will($this->returnValue(8.30)); + + $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->setAmount(21.00); + $coupon1 = $couponFactory->buildCouponFromModel($model1); + + $model2 = $this->generateCouponModel($stubFacade, $conditionFactory); + $model2->setCode('XMAS2')->setIsRemovingPostage(false)->setAmount(21.50)->setIsCumulative(false); + $coupon2 = $couponFactory->buildCouponFromModel($model2); + + $stubFacade->expects($this->any()) + ->method('getCurrentCoupons') + ->will($this->returnValue(array($coupon1, $coupon2))); + + $couponManager = new CouponManager($stubContainer); + $couponManager->addAvailableCoupon($coupon1); + $couponManager->addAvailableCoupon($coupon2); + $actual = $couponManager->getDiscount(); + $expected = 12.25; + + $this->assertEquals($expected, $actual); + } + /** * @covers Thelia\Coupon\CouponManager::addAvailableCoupon * @covers Thelia\Coupon\CouponManager::getAvailableCoupons