/** * {@inheritdoc} */ public function getCart() { try { $channel = $this->channelContext->getChannel(); } catch (ChannelNotFoundException $exception) { throw new CartNotFoundException($exception); } if (!$this->session->has(sprintf('%s.%s', $this->sessionKeyName, $channel->getCode()))) { throw new CartNotFoundException('Sylius was not able to find the cart in session'); } $cart = $this->orderRepository->findCartByChannel($this->session->get(sprintf('%s.%s', $this->sessionKeyName, $channel->getCode())), $channel); if (null === $cart) { $this->session->remove(sprintf('%s.%s', $this->sessionKeyName, $channel->getCode())); throw new CartNotFoundException('Sylius was not able to find the cart in session'); } return $cart; }
function it_throws_cart_not_found_exception_and_removes_id_from_session_when_cart_was_not_found(SessionInterface $session, OrderRepositoryInterface $orderRepository, ChannelContextInterface $channelContext, ChannelInterface $channel) { $channelContext->getChannel()->willReturn($channel); $channel->getCode()->willReturn('Poland'); $session->has('session_key_name.Poland')->willReturn(true); $session->get('session_key_name.Poland')->willReturn(12345); $orderRepository->findCartByChannel(12345, $channel)->willReturn(null); $session->remove('session_key_name.Poland')->shouldBeCalled(); $this->shouldThrow(CartNotFoundException::class)->during('getCart'); }