From b5222a514d8503516953b2a39f68862beb5f23e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20J=C4=99drzejewski?= Date: Thu, 29 Mar 2012 00:00:07 +0200 Subject: [PATCH] fix cart operator to sum up items that are equal. --- .../Bundle/CartBundle/Operator/CartOperator.php | 2 +- .../Tests/Operator/CartOperatorTest.php | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Sylius/Bundle/CartBundle/Operator/CartOperator.php b/src/Sylius/Bundle/CartBundle/Operator/CartOperator.php index 37c5b11014..c898a0de88 100644 --- a/src/Sylius/Bundle/CartBundle/Operator/CartOperator.php +++ b/src/Sylius/Bundle/CartBundle/Operator/CartOperator.php @@ -46,7 +46,7 @@ abstract class CartOperator implements CartOperatorInterface */ public function addItem(CartInterface $cart, ItemInterface $item) { - if (0 > $cart->countItems()) { + if (false === $cart->isEmpty()) { foreach ($cart->getItems() as $existingItem) { if ($existingItem->equals($item)) { $existingItem->setQuantity($existingItem->getQuantity() + $item->getQuantity()); diff --git a/src/Sylius/Bundle/CartBundle/Tests/Operator/CartOperatorTest.php b/src/Sylius/Bundle/CartBundle/Tests/Operator/CartOperatorTest.php index 4e15a24ba1..24bd308654 100644 --- a/src/Sylius/Bundle/CartBundle/Tests/Operator/CartOperatorTest.php +++ b/src/Sylius/Bundle/CartBundle/Tests/Operator/CartOperatorTest.php @@ -32,6 +32,21 @@ class CartOperatorTest extends \PHPUnit_Framework_TestCase $cartOperator->addItem($cart, $item); } + public function testAddItemIncreasesQuantityIfThereAreItemsThatAreEqual() + { + $item = $this->getItem(); + $item->setQuantity(3); + + $cart = $this->getCart(); + + $cartOperator = $this->getCartOperator(); + $cartOperator->addItem($cart, $item); + $cartOperator->addItem($cart, $item); + + $this->assertEquals(1, $cart->countItems()); + $this->assertEquals(6, $item->getQuantity()); + } + public function testRefreshSetsTotalItems() { $cart = $this->getMockCart();