mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-14 09:02:12 +00:00
2.1 KiB
2.1 KiB
| layout | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Cart flow
Picture this: A user visits your Sylius shop and exclaims, “Someone’s been using my cart! It’s full of items I didn’t add!” Let’s avoid this surprise by exploring how Sylius handles cart functionality.
In Sylius, the cart represents an order in progress that hasn’t been placed yet.
{% hint style="info" %}
Each visitor in Sylius has a cart. The cart can be cleared in three ways, by:
- placing an order
- removing items manually
- using a cart-clearing command
{% endhint %}
The cart flow varies depending on whether the user is logged in and what’s already in the cart.
First scenario:
Given there is a not logged in user
And this user adds a blue T-Shirt to the cart
And there is a customer identified by email "sylius@example.com"
And the "sylius@example.com" customer has a previously created cart with a red Cap in it
When the not logged in user logs in using "sylius@example.com" email
Then the cart created by a not logged in user should be dropped
And the cart previously created by the user identified by "sylius@example.com" should be set as the current one
And the "sylius@example.com" customer's cart should have a red Cap in it
Second scenario:
Given there is a not logged in user
And this user adds a blue T-Shirt to the cart
And there is a customer identified by email "sylius@example.com" with an empty cart
When the not logged in user logs in using "sylius@example.com" email
Then the cart created by a not logged in user should not be dropped
And the "sylius@example.com" customer's cart should have a blue T-Shirt in it
Third scenario:
Given there is a customer identified by email "sylius@example.com" with an empty cart
And this user adds a blue T-Shirt to the cart
When the user logs out
And views the cart
Then the cart should be empty
{% hint style="info" %} The cart mentioned in the third scenario will be available once the customer logs in again. {% endhint %}