diff --git a/src/Sylius/Behat/Context/Api/Shop/CartContext.php b/src/Sylius/Behat/Context/Api/Shop/CartContext.php
index b70d1224119b..128c2fe802a1 100644
--- a/src/Sylius/Behat/Context/Api/Shop/CartContext.php
+++ b/src/Sylius/Behat/Context/Api/Shop/CartContext.php
@@ -148,7 +148,7 @@ public function iRemoveProductFromTheCart(ProductInterface $product, string $tok
*/
public function iDoNotHaveAccessToSeeTheSummaryOfMyCart(): void
{
- Assert::true($this->getCart()['code'] === 404);
+ Assert::same($this->getCart()['code'], 404);
}
/**
diff --git a/src/Sylius/Behat/Context/Api/Shop/CheckoutContext.php b/src/Sylius/Behat/Context/Api/Shop/CheckoutContext.php
index 32bdff5117df..272e5fd7622d 100644
--- a/src/Sylius/Behat/Context/Api/Shop/CheckoutContext.php
+++ b/src/Sylius/Behat/Context/Api/Shop/CheckoutContext.php
@@ -252,6 +252,10 @@ public function iConfirmMyOrder(): void
*/
public function iProceededWithShippingMethod(ShippingMethodInterface $shippingMethod): void
{
+ $y = $this->getCart();
+
+ $x = (string) $this->iriConverter->getItemFromIri($y['shipments'][0])->getId();
+
$this->client->request(
Request::METHOD_PATCH,
\sprintf(
@@ -276,7 +280,7 @@ public function iProceededWithShippingMethod(ShippingMethodInterface $shippingMe
*/
public function theVisitorHasNoProceedWithShippingMethodInTheCustomerCart(): void
{
- Assert::true($this->getCart()['code'] === 404);
+ Assert::same($this->getCart()['code'], 404);
}
/**
diff --git a/src/Sylius/Bundle/ApiBundle/CommandHandler/Checkout/AddressOrderHandler.php b/src/Sylius/Bundle/ApiBundle/CommandHandler/Checkout/AddressOrderHandler.php
index c1738c500c21..cd9a939bafd3 100644
--- a/src/Sylius/Bundle/ApiBundle/CommandHandler/Checkout/AddressOrderHandler.php
+++ b/src/Sylius/Bundle/ApiBundle/CommandHandler/Checkout/AddressOrderHandler.php
@@ -16,7 +16,6 @@
use Doctrine\Persistence\ObjectManager;
use SM\Factory\FactoryInterface as StateMachineFactoryInterface;
use Sylius\Bundle\ApiBundle\Command\Checkout\AddressOrder;
-use Sylius\Bundle\ApiBundle\Context\CartVisitorsCustomerContextInterface;
use Sylius\Component\Core\Model\CustomerInterface;
use Sylius\Component\Core\Model\OrderInterface;
use Sylius\Component\Core\OrderCheckoutTransitions;
@@ -43,23 +42,18 @@ final class AddressOrderHandler
/** @var StateMachineFactoryInterface */
private $stateMachineFactory;
- /** @var CartVisitorsCustomerContextInterface */
- private $cartVisitorsCustomerContext;
-
public function __construct(
OrderRepositoryInterface $orderRepository,
CustomerRepositoryInterface $customerRepository,
FactoryInterface $customerFactory,
ObjectManager $manager,
- StateMachineFactoryInterface $stateMachineFactory,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ StateMachineFactoryInterface $stateMachineFactory
) {
$this->orderRepository = $orderRepository;
$this->customerRepository = $customerRepository;
$this->customerFactory = $customerFactory;
$this->manager = $manager;
$this->stateMachineFactory = $stateMachineFactory;
- $this->cartVisitorsCustomerContext = $cartVisitorsCustomerContext;
}
public function __invoke(AddressOrder $addressOrder): OrderInterface
@@ -82,8 +76,6 @@ public function __invoke(AddressOrder $addressOrder): OrderInterface
$customer = $this->provideCustomerByEmail($addressOrder->email);
$order->setCustomer($customer);
-
- $this->cartVisitorsCustomerContext->setCartCustomerId((string) $customer->getId());
}
$order->setBillingAddress($addressOrder->billingAddress);
@@ -106,7 +98,6 @@ private function provideCustomerByEmail(?string $email): CustomerInterface
$customer = $this->customerFactory->createNew();
$customer->setEmail($email);
$this->manager->persist($customer);
- $this->manager->flush();
}
return $customer;
diff --git a/src/Sylius/Bundle/ApiBundle/CommandHandler/PickupCartHandler.php b/src/Sylius/Bundle/ApiBundle/CommandHandler/PickupCartHandler.php
index 4df1fd11d8dd..604e60b88a9c 100644
--- a/src/Sylius/Bundle/ApiBundle/CommandHandler/PickupCartHandler.php
+++ b/src/Sylius/Bundle/ApiBundle/CommandHandler/PickupCartHandler.php
@@ -16,7 +16,6 @@
use Doctrine\Persistence\ObjectManager;
use Sylius\Bundle\AdminApiBundle\Model\UserInterface;
use Sylius\Bundle\ApiBundle\Command\Cart\PickupCart;
-use Sylius\Bundle\ApiBundle\Context\CartVisitorsCustomerContextInterface;
use Sylius\Bundle\ApiBundle\Context\UserContextInterface;
use Sylius\Component\Channel\Context\ChannelContextInterface;
use Sylius\Component\Core\Model\ChannelInterface;
@@ -46,23 +45,18 @@ final class PickupCartHandler implements MessageHandlerInterface
/** @var RandomnessGeneratorInterface */
private $generator;
- /** @var CartVisitorsCustomerContextInterface */
- private $cartVisitorsCustomerContext;
-
public function __construct(
FactoryInterface $cartFactory,
ChannelContextInterface $channelContext,
UserContextInterface $userContext,
ObjectManager $orderManager,
- RandomnessGeneratorInterface $generator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ RandomnessGeneratorInterface $generator
) {
$this->cartFactory = $cartFactory;
$this->channelContext = $channelContext;
$this->userContext = $userContext;
$this->orderManager = $orderManager;
$this->generator = $generator;
- $this->cartVisitorsCustomerContext = $cartVisitorsCustomerContext;
}
public function __invoke(PickupCart $pickupCart)
@@ -83,8 +77,6 @@ public function __invoke(PickupCart $pickupCart)
$cart->setCustomer($customer);
}
- $this->cartVisitorsCustomerContext->setCartCustomerId(null);
-
$cart->setChannel($channel);
$cart->setLocaleCode($locale->getCode());
$cart->setCurrencyCode($currency->getCode());
diff --git a/src/Sylius/Bundle/ApiBundle/Context/CartVisitorsCustomerContext.php b/src/Sylius/Bundle/ApiBundle/Context/CartVisitorsCustomerContext.php
deleted file mode 100644
index 8240136e4026..000000000000
--- a/src/Sylius/Bundle/ApiBundle/Context/CartVisitorsCustomerContext.php
+++ /dev/null
@@ -1,38 +0,0 @@
-session = $session;
- }
-
- public function getCartCustomerId(): ?string
- {
- return $this->session->get('cartCustomerId');
- }
-
- public function setCartCustomerId(?string $id): void
- {
- $this->session->set('cartCustomerId', $id);
- }
-}
diff --git a/src/Sylius/Bundle/ApiBundle/Context/CartVisitorsCustomerContextInterface.php b/src/Sylius/Bundle/ApiBundle/Context/CartVisitorsCustomerContextInterface.php
deleted file mode 100644
index 946640939bb4..000000000000
--- a/src/Sylius/Bundle/ApiBundle/Context/CartVisitorsCustomerContextInterface.php
+++ /dev/null
@@ -1,22 +0,0 @@
-userContext = $userContext;
- $this->cartVisitorsCustomerContext = $cartVisitorsCustomerContext;
}
public function applyToItem(
@@ -73,19 +63,12 @@ private function applyToItemForGetMethod(
QueryBuilder $queryBuilder,
string $rootAlias
): void {
- /** @var string|null $cartCustomerId */
- $cartCustomerId = $this->cartVisitorsCustomerContext->getCartCustomerId();
-
- if ($user === null && $cartCustomerId === null) {
- $queryBuilder->andWhere(sprintf('%s.customer IS NULL', $rootAlias));
-
- return;
- }
-
- if ($user === null && $cartCustomerId !== null) {
+ if ($user === null) {
$queryBuilder
- ->andWhere(sprintf('%s.customer = :customer', $rootAlias))
- ->setParameter('customer', $cartCustomerId)
+ ->leftJoin(sprintf('%s.customer', $rootAlias), 'customer')
+ ->leftJoin('customer.user', 'user')
+ ->andWhere('user IS NULL')
+ ->orWhere(sprintf('%s.customer IS NULL', $rootAlias))
;
return;
diff --git a/src/Sylius/Bundle/ApiBundle/Doctrine/QueryItemExtension/OrderMethodsItemExtension.php b/src/Sylius/Bundle/ApiBundle/Doctrine/QueryItemExtension/OrderMethodsItemExtension.php
index 7903626b1425..1f919de3db1d 100644
--- a/src/Sylius/Bundle/ApiBundle/Doctrine/QueryItemExtension/OrderMethodsItemExtension.php
+++ b/src/Sylius/Bundle/ApiBundle/Doctrine/QueryItemExtension/OrderMethodsItemExtension.php
@@ -16,7 +16,6 @@
use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\QueryItemExtensionInterface;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
use Doctrine\ORM\QueryBuilder;
-use Sylius\Bundle\ApiBundle\Context\CartVisitorsCustomerContextInterface;
use Sylius\Bundle\ApiBundle\Context\UserContextInterface;
use Sylius\Bundle\ApiBundle\Serializer\ContextKeys;
use Sylius\Component\Core\Model\AdminUserInterface;
@@ -32,15 +31,9 @@ final class OrderMethodsItemExtension implements QueryItemExtensionInterface
/** @var UserContextInterface */
private $userContext;
- /** @var CartVisitorsCustomerContextInterface */
- private $cartVisitorsCustomerContext;
-
- public function __construct(
- UserContextInterface $userContext,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
- ) {
+ public function __construct(UserContextInterface $userContext)
+ {
$this->userContext = $userContext;
- $this->cartVisitorsCustomerContext = $cartVisitorsCustomerContext;
}
public function applyToItem(
@@ -73,23 +66,12 @@ private function applyUserRulesToItem(
string $rootAlias,
string $httpRequestMethodType
): void {
- /** @var string|null $cartCustomerId */
- $cartCustomerId = $this->cartVisitorsCustomerContext->getCartCustomerId();
-
- if ($user === null && $cartCustomerId === null) {
- $queryBuilder
- ->andWhere(sprintf('%s.customer IS NULL', $rootAlias))
- ->andWhere(sprintf('%s.state = :state', $rootAlias))
- ->setParameter('state', OrderInterface::STATE_CART)
- ;
-
- return;
- }
-
- if ($user === null && $cartCustomerId !== null) {
+ if ($user === null) {
$queryBuilder
- ->andWhere(sprintf('%s.customer = :customer', $rootAlias))
- ->setParameter('customer', $cartCustomerId)
+ ->leftJoin(sprintf('%s.customer', $rootAlias), 'customer')
+ ->leftJoin('customer.user', 'user')
+ ->andWhere('user IS NULL')
+ ->orWhere(sprintf('%s.customer IS NULL', $rootAlias))
->andWhere(sprintf('%s.state = :state', $rootAlias))
->setParameter('state', OrderInterface::STATE_CART)
;
@@ -108,9 +90,11 @@ private function applyUserRulesToItem(
return;
}
- if ($user instanceof AdminUserInterface &&
+ if (
+ $user instanceof AdminUserInterface &&
in_array('ROLE_API_ACCESS', $user->getRoles(), true) &&
- $httpRequestMethodType === Request::METHOD_DELETE) {
+ $httpRequestMethodType === Request::METHOD_DELETE
+ ) {
$queryBuilder
->andWhere(sprintf('%s.state = :state', $rootAlias))
->setParameter('state', OrderInterface::STATE_CART)
@@ -119,9 +103,11 @@ private function applyUserRulesToItem(
return;
}
- if ($user instanceof AdminUserInterface &&
+ if (
+ $user instanceof AdminUserInterface &&
in_array('ROLE_API_ACCESS', $user->getRoles(), true) &&
- $httpRequestMethodType !== Request::METHOD_DELETE) {
+ $httpRequestMethodType !== Request::METHOD_DELETE
+ ) {
//admin has also access to modified orders in states other than cart
return;
diff --git a/src/Sylius/Bundle/ApiBundle/Resources/config/services/command_handlers.xml b/src/Sylius/Bundle/ApiBundle/Resources/config/services/command_handlers.xml
index 0faceabe05da..22fccc07e46f 100644
--- a/src/Sylius/Bundle/ApiBundle/Resources/config/services/command_handlers.xml
+++ b/src/Sylius/Bundle/ApiBundle/Resources/config/services/command_handlers.xml
@@ -29,7 +29,6 @@
-
@@ -56,7 +55,6 @@
-
diff --git a/src/Sylius/Bundle/ApiBundle/Resources/config/services/data_providers.xml b/src/Sylius/Bundle/ApiBundle/Resources/config/services/data_providers.xml
index 5a060475d3e0..f1bcbba9e73f 100644
--- a/src/Sylius/Bundle/ApiBundle/Resources/config/services/data_providers.xml
+++ b/src/Sylius/Bundle/ApiBundle/Resources/config/services/data_providers.xml
@@ -67,9 +67,5 @@
-
-
-
-
diff --git a/src/Sylius/Bundle/ApiBundle/Resources/config/services/extensions.xml b/src/Sylius/Bundle/ApiBundle/Resources/config/services/extensions.xml
index 1f35aa0e696c..d1e7f424d41a 100644
--- a/src/Sylius/Bundle/ApiBundle/Resources/config/services/extensions.xml
+++ b/src/Sylius/Bundle/ApiBundle/Resources/config/services/extensions.xml
@@ -40,7 +40,6 @@
public="true"
>
-
@@ -50,7 +49,6 @@
public="true"
>
-
diff --git a/src/Sylius/Bundle/ApiBundle/spec/CommandHandler/Checkout/AddressOrderHandlerSpec.php b/src/Sylius/Bundle/ApiBundle/spec/CommandHandler/Checkout/AddressOrderHandlerSpec.php
index d3502955f5a0..e797dcc99afe 100644
--- a/src/Sylius/Bundle/ApiBundle/spec/CommandHandler/Checkout/AddressOrderHandlerSpec.php
+++ b/src/Sylius/Bundle/ApiBundle/spec/CommandHandler/Checkout/AddressOrderHandlerSpec.php
@@ -19,7 +19,6 @@
use SM\Factory\FactoryInterface as StateMachineFactoryInterface;
use SM\StateMachine\StateMachineInterface;
use Sylius\Bundle\ApiBundle\Command\Checkout\AddressOrder;
-use Sylius\Bundle\ApiBundle\Context\CartVisitorsCustomerContextInterface;
use Sylius\Component\Core\Model\AddressInterface;
use Sylius\Component\Core\Model\CustomerInterface;
use Sylius\Component\Core\Model\OrderInterface;
@@ -35,16 +34,14 @@ function let(
CustomerRepositoryInterface $customerRepository,
FactoryInterface $customerFactory,
ObjectManager $manager,
- StateMachineFactoryInterface $stateMachineFactory,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ StateMachineFactoryInterface $stateMachineFactory
): void {
$this->beConstructedWith(
$orderRepository,
$customerRepository,
$customerFactory,
$manager,
- $stateMachineFactory,
- $cartVisitorsCustomerContext
+ $stateMachineFactory
);
}
@@ -79,7 +76,6 @@ function it_handles_addressing_an_order_for_visitor(
FactoryInterface $customerFactory,
ObjectManager $manager,
StateMachineFactoryInterface $stateMachineFactory,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext,
CustomerInterface $customer,
AddressInterface $billingAddress,
AddressInterface $shippingAddress,
@@ -100,10 +96,7 @@ function it_handles_addressing_an_order_for_visitor(
$customerFactory->createNew()->willReturn($customer);
$customer->setEmail('r2d2@droid.com')->shouldBeCalled();
$manager->persist($customer)->shouldBeCalled();
- $manager->flush()->shouldBeCalled();
- $customer->getId()->willReturn('999');
$order->setCustomer($customer)->shouldBeCalled();
- $cartVisitorsCustomerContext->setCartCustomerId('999')->shouldBeCalled();
$order->setBillingAddress($billingAddress)->shouldBeCalled();
$order->setShippingAddress($shippingAddress)->shouldBeCalled();
diff --git a/src/Sylius/Bundle/ApiBundle/spec/CommandHandler/PickupCartHandlerSpec.php b/src/Sylius/Bundle/ApiBundle/spec/CommandHandler/PickupCartHandlerSpec.php
index 101538af0d77..5abcb90f83a3 100644
--- a/src/Sylius/Bundle/ApiBundle/spec/CommandHandler/PickupCartHandlerSpec.php
+++ b/src/Sylius/Bundle/ApiBundle/spec/CommandHandler/PickupCartHandlerSpec.php
@@ -16,7 +16,6 @@
use Doctrine\Persistence\ObjectManager;
use PhpSpec\ObjectBehavior;
use Sylius\Bundle\ApiBundle\Command\Cart\PickupCart;
-use Sylius\Bundle\ApiBundle\Context\CartVisitorsCustomerContextInterface;
use Sylius\Bundle\ApiBundle\Context\UserContextInterface;
use Sylius\Component\Channel\Context\ChannelContextInterface;
use Sylius\Component\Core\Model\ChannelInterface;
@@ -36,8 +35,7 @@ function let(
ChannelContextInterface $channelContext,
UserContextInterface $userContext,
ObjectManager $orderManager,
- RandomnessGeneratorInterface $generator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ RandomnessGeneratorInterface $generator
): void {
$this->beConstructedWith(
@@ -45,8 +43,7 @@ function let(
$channelContext,
$userContext,
$orderManager,
- $generator,
- $cartVisitorsCustomerContext
+ $generator
);
}
@@ -63,7 +60,6 @@ function it_picks_up_a_cart_for_logged_shop_user(
CustomerInterface $customer,
ObjectManager $orderManager,
RandomnessGeneratorInterface $generator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext,
OrderInterface $cart,
ChannelInterface $channel,
CurrencyInterface $currency,
@@ -80,8 +76,6 @@ function it_picks_up_a_cart_for_logged_shop_user(
$cart->setCustomer($customer)->shouldBeCalled();
- $cartVisitorsCustomerContext->setCartCustomerId(null)->shouldBeCalled();
-
$currency->getCode()->willReturn('USD');
$locale->getCode()->willReturn('en_US');
@@ -102,7 +96,6 @@ function it_picks_up_a_cart_for_visitor(
UserContextInterface $userContext,
ObjectManager $orderManager,
RandomnessGeneratorInterface $generator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext,
OrderInterface $cart,
ChannelInterface $channel,
CurrencyInterface $currency,
@@ -116,8 +109,6 @@ function it_picks_up_a_cart_for_visitor(
$channel->getDefaultLocale()->willReturn($locale);
$userContext->getUser()->willReturn(null);
- $cartVisitorsCustomerContext->setCartCustomerId(null)->shouldBeCalled();
-
$currency->getCode()->willReturn('USD');
$locale->getCode()->willReturn('en_US');
diff --git a/src/Sylius/Bundle/ApiBundle/spec/Doctrine/QueryItemExtension/OrderGetMethodItemExtensionSpec.php b/src/Sylius/Bundle/ApiBundle/spec/Doctrine/QueryItemExtension/OrderGetMethodItemExtensionSpec.php
index d86b87aa6701..efd920b5ab66 100644
--- a/src/Sylius/Bundle/ApiBundle/spec/Doctrine/QueryItemExtension/OrderGetMethodItemExtensionSpec.php
+++ b/src/Sylius/Bundle/ApiBundle/spec/Doctrine/QueryItemExtension/OrderGetMethodItemExtensionSpec.php
@@ -16,7 +16,6 @@
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
use Doctrine\ORM\QueryBuilder;
use PhpSpec\ObjectBehavior;
-use Sylius\Bundle\ApiBundle\Context\CartVisitorsCustomerContextInterface;
use Sylius\Bundle\ApiBundle\Context\UserContextInterface;
use Sylius\Bundle\ApiBundle\Serializer\ContextKeys;
use Sylius\Component\Core\Model\CustomerInterface;
@@ -27,26 +26,43 @@
final class OrderGetMethodItemExtensionSpec extends ObjectBehavior
{
- function let(
- UserContextInterface $userContext,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
- ): void {
- $this->beConstructedWith($userContext, $cartVisitorsCustomerContext);
+ function let(UserContextInterface $userContext): void
+ {
+ $this->beConstructedWith($userContext);
}
function it_applies_conditions_to_get_order_with_state_cart_and_without_user_if_current_user_is_null(
UserContextInterface $userContext,
QueryBuilder $queryBuilder,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn(null);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
+ $queryBuilder
+ ->leftJoin(sprintf('%s.customer', 'o'), 'customer')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
- $queryBuilder->andWhere(sprintf('%s.customer IS NULL', 'o'))->shouldBeCalled();
+ $queryBuilder
+ ->leftJoin('customer.user', 'user')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
+
+ $queryBuilder
+ ->andWhere('user IS NULL')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
+
+ $queryBuilder
+ ->orWhere(sprintf('%s.customer IS NULL', 'o'))
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
$this->applyToItem(
$queryBuilder,
@@ -63,15 +79,12 @@ function it_applies_conditions_to_get_order_with_state_cart_by_authorized_shop_u
QueryBuilder $queryBuilder,
ShopUserInterface $shopUser,
CustomerInterface $customer,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn($shopUser);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
-
$shopUser->getCustomer()->willReturn($customer);
$customer->getId()->willReturn(1);
$shopUser->getRoles()->willReturn(['ROLE_USER']);
diff --git a/src/Sylius/Bundle/ApiBundle/spec/Doctrine/QueryItemExtension/OrderMethodsItemExtensionSpec.php b/src/Sylius/Bundle/ApiBundle/spec/Doctrine/QueryItemExtension/OrderMethodsItemExtensionSpec.php
index 5411fd12fd32..9de00494b28c 100644
--- a/src/Sylius/Bundle/ApiBundle/spec/Doctrine/QueryItemExtension/OrderMethodsItemExtensionSpec.php
+++ b/src/Sylius/Bundle/ApiBundle/spec/Doctrine/QueryItemExtension/OrderMethodsItemExtensionSpec.php
@@ -16,7 +16,6 @@
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
use Doctrine\ORM\QueryBuilder;
use PhpSpec\ObjectBehavior;
-use Sylius\Bundle\ApiBundle\Context\CartVisitorsCustomerContextInterface;
use Sylius\Bundle\ApiBundle\Context\UserContextInterface;
use Sylius\Bundle\ApiBundle\Serializer\ContextKeys;
use Sylius\Component\Core\Model\AdminUserInterface;
@@ -28,25 +27,40 @@
final class OrderMethodsItemExtensionSpec extends ObjectBehavior
{
- function let(UserContextInterface $userContext, CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext): void
+ function let(UserContextInterface $userContext): void
{
- $this->beConstructedWith($userContext, $cartVisitorsCustomerContext);
+ $this->beConstructedWith($userContext);
}
function it_applies_conditions_to_delete_order_with_state_cart_and_with_null_user_and_customer_if_present_user_and_customer_are_null(
UserContextInterface $userContext,
QueryBuilder $queryBuilder,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn(null);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
+ $queryBuilder
+ ->leftJoin(sprintf('%s.customer', 'o'), 'customer')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
$queryBuilder
- ->andWhere(sprintf('%s.customer IS NULL', 'o'))
+ ->leftJoin('customer.user', 'user')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
+
+ $queryBuilder
+ ->andWhere('user IS NULL')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
+
+ $queryBuilder
+ ->orWhere(sprintf('%s.customer IS NULL', 'o'))
->shouldBeCalled()
->willReturn($queryBuilder)
;
@@ -76,17 +90,32 @@ function it_applies_conditions_to_delete_order_with_state_cart_and_with_null_use
function it_applies_conditions_to_patch_order_with_state_cart_and_with_null_user_and_customer_if_present_user_and_customer_are_null(
UserContextInterface $userContext,
QueryBuilder $queryBuilder,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn(null);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
+ $queryBuilder
+ ->leftJoin(sprintf('%s.customer', 'o'), 'customer')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
+
+ $queryBuilder
+ ->leftJoin('customer.user', 'user')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
$queryBuilder
- ->andWhere(sprintf('%s.customer IS NULL', 'o'))
+ ->andWhere('user IS NULL')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
+
+ $queryBuilder
+ ->orWhere(sprintf('%s.customer IS NULL', 'o'))
->shouldBeCalled()
->willReturn($queryBuilder)
;
@@ -116,17 +145,32 @@ function it_applies_conditions_to_patch_order_with_state_cart_and_with_null_user
function it_applies_conditions_to_put_order_with_state_cart_and_with_null_user_and_customer_if_present_user_and_customer_are_null(
UserContextInterface $userContext,
QueryBuilder $queryBuilder,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn(null);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
+ $queryBuilder
+ ->leftJoin(sprintf('%s.customer', 'o'), 'customer')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
+
+ $queryBuilder
+ ->leftJoin('customer.user', 'user')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
+
+ $queryBuilder
+ ->andWhere('user IS NULL')
+ ->shouldBeCalled()
+ ->willReturn($queryBuilder)
+ ;
$queryBuilder
- ->andWhere(sprintf('%s.customer IS NULL', 'o'))
+ ->orWhere(sprintf('%s.customer IS NULL', 'o'))
->shouldBeCalled()
->willReturn($queryBuilder)
;
@@ -158,15 +202,12 @@ function it_applies_conditions_to_put_order_with_state_cart_and_with_null_user_a
QueryBuilder $queryBuilder,
ShopUserInterface $shopUser,
CustomerInterface $customer,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn($shopUser);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn('111');
-
$shopUser->getCustomer()->willReturn($customer);
$customer->getId()->willReturn(1);
$shopUser->getRoles()->willReturn(['ROLE_USER']);
@@ -209,15 +250,12 @@ function it_applies_conditions_to_patch_order_with_state_cart_and_with_null_user
QueryBuilder $queryBuilder,
ShopUserInterface $shopUser,
CustomerInterface $customer,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn($shopUser);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn('111');
-
$shopUser->getCustomer()->willReturn($customer);
$customer->getId()->willReturn(1);
$shopUser->getRoles()->willReturn(['ROLE_USER']);
@@ -260,15 +298,12 @@ function it_applies_conditions_to_delete_order_with_state_cart_and_with_null_use
QueryBuilder $queryBuilder,
ShopUserInterface $shopUser,
CustomerInterface $customer,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn($shopUser);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn('111');
-
$shopUser->getCustomer()->willReturn($customer);
$customer->getId()->willReturn(1);
$shopUser->getRoles()->willReturn(['ROLE_USER']);
@@ -311,15 +346,12 @@ function it_applies_conditions_to_delete_order_with_state_cart_by_authorized_sho
QueryBuilder $queryBuilder,
ShopUserInterface $shopUser,
CustomerInterface $customer,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn($shopUser);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
-
$shopUser->getCustomer()->willReturn($customer);
$customer->getId()->willReturn(1);
$shopUser->getRoles()->willReturn(['ROLE_USER']);
@@ -362,15 +394,12 @@ function it_applies_conditions_to_patch_order_with_state_cart_by_authorized_shop
QueryBuilder $queryBuilder,
ShopUserInterface $shopUser,
CustomerInterface $customer,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn($shopUser);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
-
$shopUser->getCustomer()->willReturn($customer);
$customer->getId()->willReturn(1);
$shopUser->getRoles()->willReturn(['ROLE_USER']);
@@ -413,15 +442,12 @@ function it_applies_conditions_to_put_order_with_state_cart_by_authorized_shop_u
QueryBuilder $queryBuilder,
ShopUserInterface $shopUser,
CustomerInterface $customer,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn($shopUser);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
-
$shopUser->getCustomer()->willReturn($customer);
$customer->getId()->willReturn(1);
$shopUser->getRoles()->willReturn(['ROLE_USER']);
@@ -464,15 +490,12 @@ function it_throws_an_exception_when_unauthorized_shop_user_try_to_delete_order_
QueryBuilder $queryBuilder,
ShopUserInterface $shopUser,
CustomerInterface $customer,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn($shopUser);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
-
$shopUser->getCustomer()->willReturn($customer);
$customer->getId()->willReturn(1);
$shopUser->getRoles()->willReturn([]);
@@ -497,15 +520,12 @@ function it_applies_conditions_to_delete_order_with_state_cart_by_authorized_adm
UserContextInterface $userContext,
QueryBuilder $queryBuilder,
AdminUserInterface $adminUser,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn($adminUser);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
-
$adminUser->getRoles()->willReturn(['ROLE_API_ACCESS']);
$queryBuilder
@@ -534,15 +554,12 @@ function it_applies_conditions_to_patch_order_with_state_cart_by_authorized_admi
UserContextInterface $userContext,
QueryBuilder $queryBuilder,
AdminUserInterface $adminUser,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn($adminUser);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
-
$adminUser->getRoles()->willReturn(['ROLE_API_ACCESS']);
$this->applyToItem(
@@ -559,15 +576,12 @@ function it_applies_conditions_to_put_order_with_state_cart_by_authorized_admin_
UserContextInterface $userContext,
QueryBuilder $queryBuilder,
AdminUserInterface $adminUser,
- QueryNameGeneratorInterface $queryNameGenerator,
- CartVisitorsCustomerContextInterface $cartVisitorsCustomerContext
+ QueryNameGeneratorInterface $queryNameGenerator
): void {
$queryBuilder->getRootAliases()->willReturn(['o']);
$userContext->getUser()->willReturn($adminUser);
- $cartVisitorsCustomerContext->getCartCustomerId()->willReturn(null);
-
$adminUser->getRoles()->willReturn(['ROLE_API_ACCESS']);
$this->applyToItem(