[UPMERGE] 2.0 -> payment-request (#17024)

This PR has been generated automatically.
For more details see
[upmerge_pr.yaml](/Sylius/Sylius/blob/1.13/.github/workflows/upmerge_pr.yaml).

**Remember!** The upmerge should always be merged with using `Merge pull
request` button.

In case of conflicts, please resolve them manually with usign the
following commands:
```
git fetch upstream
gh pr checkout <this-pr-number>
git merge upstream/payment-request -m "Resolve conflicts between 2.0 and payment-request"
```

If you use other name for the upstream remote, please replace `upstream`
with the name of your remote pointing to the `Sylius/Sylius` repository.

Once the conflicts are resolved, please run `git merge --continue` and
push the changes to this PR.
This commit is contained in:
Grzegorz Sadowski 2024-09-26 14:36:00 +02:00 committed by GitHub
commit a2051f9744
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
128 changed files with 553 additions and 3470 deletions

View file

@ -9,7 +9,7 @@
},
{
"php": "8.3",
"symfony": "^7.0",
"symfony": "^7.1",
"api-platform": "^3.3"
}
]
@ -25,7 +25,7 @@
},
{
"php": "8.3",
"symfony": "^7.0",
"symfony": "^7.1",
"mariadb": "11.4.3",
"dbal": "^3.0",
"state_machine_adapter": "symfony_workflow"
@ -44,7 +44,7 @@
},
{
"php": "8.3",
"symfony": "^7.0",
"symfony": "^7.1",
"api-platform": "^3.3",
"mysql": "8.4",
"twig": "^3.3",
@ -69,7 +69,7 @@
},
{
"php": "8.3",
"symfony": "^7.0",
"symfony": "^7.1",
"postgres": "16.4"
}
]
@ -89,7 +89,7 @@
},
{
"php": "8.3",
"symfony": "^7.0"
"symfony": "^7.1"
}
]
}
@ -97,18 +97,18 @@
"full": {
"static-checks": {
"php": ["8.2", "8.3"],
"symfony": ["^6.4", "^7.0"],
"symfony": ["^6.4", "^7.1"],
"api-platform": ["^3.3"]
},
"e2e-mariadb": {
"php": ["8.2", "8.3"],
"symfony": ["^6.4", "^7.0"],
"symfony": ["^6.4", "^7.1"],
"mariadb": ["10.11.9", "11.4.3"],
"state_machine_adapter": ["winzou_state_machine", "symfony_workflow"]
},
"e2e-mysql": {
"php": ["8.2", "8.3"],
"symfony": ["^6.4", "^7.0"],
"symfony": ["^6.4", "^7.1"],
"api-platform": ["^3.3"],
"mysql": ["8.0", "8.4"],
"twig": ["^3.3"],
@ -126,7 +126,7 @@
},
"e2e-pgsql": {
"php": ["8.2", "8.3"],
"symfony": ["^6.4", "^7.0"],
"symfony": ["^6.4", "^7.1"],
"postgres": ["14.13", "15.8", "16.4"]
},
"frontend": {
@ -138,7 +138,7 @@
},
"packages": {
"php": ["8.2", "8.3"],
"symfony": ["^6.4", "^7.0"]
"symfony": ["^6.4", "^7.1"]
}
}
}

View file

@ -86,58 +86,58 @@
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"sylius/theme-bundle": "^2.3",
"sylius/twig-hooks": "~0.3.0",
"symfony/asset": "^6.4.0 || ^7.0",
"symfony/asset": "^6.4.0 || ^7.1",
"symfony/cache-contracts": "^2.5 || ^3.0",
"symfony/clock": "^6.4.0 || ^7.0",
"symfony/config": "^6.4.0 || ^7.0",
"symfony/console": "^6.4.1 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/clock": "^6.4.0 || ^7.1",
"symfony/config": "^6.4.0 || ^7.1",
"symfony/console": "^6.4.1 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/deprecation-contracts": "^3.1",
"symfony/doctrine-bridge": "^6.4.0 || ^7.0",
"symfony/doctrine-messenger": "^6.4.1 || ^7.0",
"symfony/event-dispatcher": "^6.4.0 || ^7.0",
"symfony/expression-language": "^6.4.0 || ^7.0",
"symfony/filesystem": "^6.4.0 || ^7.0",
"symfony/finder": "^6.4.0 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0",
"symfony/framework-bundle": "^6.4.1 || ^7.0",
"symfony/http-client": "^6.4.0 || ^7.0",
"symfony/http-foundation": "^6.4.0 || ^7.0",
"symfony/http-kernel": "^6.4.1 || ^7.0",
"symfony/intl": "^6.4.0 || ^7.0",
"symfony/mailer": "^6.4.0 || ^7.0",
"symfony/messenger": "^6.4.0 || ^7.0",
"symfony/doctrine-bridge": "^6.4.0 || ^7.1",
"symfony/doctrine-messenger": "^6.4.1 || ^7.1",
"symfony/event-dispatcher": "^6.4.0 || ^7.1",
"symfony/expression-language": "^6.4.0 || ^7.1",
"symfony/filesystem": "^6.4.0 || ^7.1",
"symfony/finder": "^6.4.0 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1",
"symfony/framework-bundle": "^6.4.1 || ^7.1",
"symfony/http-client": "^6.4.0 || ^7.1",
"symfony/http-foundation": "^6.4.0 || ^7.1",
"symfony/http-kernel": "^6.4.1 || ^7.1",
"symfony/intl": "^6.4.0 || ^7.1",
"symfony/mailer": "^6.4.0 || ^7.1",
"symfony/messenger": "^6.4.0 || ^7.1",
"symfony/monolog-bundle": "^3.8.0",
"symfony/options-resolver": "^6.4.0 || ^7.0",
"symfony/password-hasher": "^6.4.0 || ^7.0",
"symfony/options-resolver": "^6.4.0 || ^7.1",
"symfony/password-hasher": "^6.4.0 || ^7.1",
"symfony/polyfill-iconv": "^1.28",
"symfony/polyfill-intl-icu": "^1.28",
"symfony/polyfill-mbstring": "^1.28",
"symfony/process": "^6.4.0 || ^7.0",
"symfony/property-access": "^6.4.0 || ^7.0",
"symfony/property-info": "^6.4.0 || ^7.0",
"symfony/proxy-manager-bridge": "^6.4.0 || ^7.0",
"symfony/routing": "^6.4.1 || ^7.0",
"symfony/security-bundle": "^6.4.0 || ^7.0",
"symfony/security-core": "^6.4.0 || ^7.0",
"symfony/security-csrf": "^6.4.0 || ^7.0",
"symfony/security-http": "^6.4.0 || ^7.0",
"symfony/serializer": "^6.4.0 || ^7.0",
"symfony/process": "^6.4.0 || ^7.1",
"symfony/property-access": "^6.4.0 || ^7.1",
"symfony/property-info": "^6.4.0 || ^7.1",
"symfony/proxy-manager-bridge": "^6.4.0 || ^7.1",
"symfony/routing": "^6.4.1 || ^7.1",
"symfony/security-bundle": "^6.4.0 || ^7.1",
"symfony/security-core": "^6.4.0 || ^7.1",
"symfony/security-csrf": "^6.4.0 || ^7.1",
"symfony/security-http": "^6.4.0 || ^7.1",
"symfony/serializer": "^6.4.0 || ^7.1",
"symfony/service-contracts": "^2.5 || ^3.0",
"symfony/stimulus-bundle": "^2.12",
"symfony/string": "^6.4.0 || ^7.0",
"symfony/string": "^6.4.0 || ^7.1",
"symfony/templating": "^6.4.0",
"symfony/translation": "^6.4.0 || ^7.0",
"symfony/translation": "^6.4.0 || ^7.1",
"symfony/translation-contracts": "^3.3",
"symfony/twig-bundle": "^6.4.0 || ^7.0",
"symfony/uid": "^6.4.0 || ^7.0",
"symfony/twig-bundle": "^6.4.0 || ^7.1",
"symfony/uid": "^6.4.0 || ^7.1",
"symfony/ux-autocomplete": "^2.17",
"symfony/ux-live-component": "^2.17",
"symfony/ux-twig-component": "^2.17",
"symfony/validator": "^6.4.0 || ^7.0",
"symfony/validator": "^6.4.0 || ^7.1",
"symfony/webpack-encore-bundle": "^2.1",
"symfony/workflow": "^6.4.0 || ^7.0",
"symfony/yaml": "^6.4.0 || ^7.0",
"symfony/workflow": "^6.4.0 || ^7.1",
"symfony/yaml": "^6.4.0 || ^7.1",
"symfonycasts/dynamic-forms": "v0.1.1",
"twig/extra-bundle": "^3.13.0",
"twig/intl-extra": "^3.13.0",
@ -229,12 +229,12 @@
"robertfausk/behat-panther-extension": "^1.1",
"sylius-labs/coding-standard": "^4.2",
"sylius-labs/suite-tags-extension": "~0.1",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/debug-bundle": "^6.4.0 || ^7.0",
"symfony/dotenv": "^6.4.0 || ^7.0",
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/debug-bundle": "^6.4.0 || ^7.1",
"symfony/dotenv": "^6.4.0 || ^7.1",
"symfony/flex": "^2.4",
"symfony/runtime": "^6.4 || ^7.0",
"symfony/web-profiler-bundle": "^6.4 || ^7.0",
"symfony/runtime": "^6.4 || ^7.1",
"symfony/web-profiler-bundle": "^6.4 || ^7.1",
"symplify/monorepo-builder": "^11.0"
},
"suggest": {
@ -258,7 +258,7 @@
"extra": {
"symfony": {
"allow-contrib": false,
"require": "^7.0"
"require": "^7.1"
},
"branch-alias": {
"dev-main": "2.0-dev"

View file

@ -8,7 +8,7 @@ Feature: Blocking login for disabled administrators
Given the store operates on a single channel in "United States"
And there is an administrator "admin@example.com" identified by "sylius"
@ui @api
@api @ui
Scenario: Sign in with email and password
Given this administrator account is disabled
And I want to log in
@ -17,7 +17,7 @@ Feature: Blocking login for disabled administrators
And I log in
Then I should not be logged in
@ui @api
@api @ui
Scenario: Revoking the access while administrator is logged in
Given I am logged in as "admin@example.com" administrator
When this administrator account becomes disabled

View file

@ -11,7 +11,7 @@ Feature: Adding a new channel with menu taxon
And the store classifies its products as "Clothes" and "Guns"
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a new channel with menu taxon
When I want to create a new channel
And I specify its code as "MOBILE"

View file

@ -14,7 +14,7 @@ Feature: Holding inventory units during checkout
And there is a customer "sylius@example.com" that placed an order "#00000022"
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Holding inventory units
Given the customer bought 3 "Iron Maiden T-Shirt" products
And the customer chose "Free" shipping method to "United States" with "Offline" payment
@ -22,7 +22,7 @@ Feature: Holding inventory units during checkout
Then 3 units of this product should be on hold
And 5 units of this product should be on hand
@ui @api
@api @ui
Scenario: Release hold units after order has been paid
Given the customer bought 3 "Iron Maiden T-Shirt" products
And the customer chose "Free" shipping method to "United States" with "Offline" payment

View file

@ -17,7 +17,7 @@ Feature: Validation of decreasing inventory below on hold validation
And the customer chose "Free" shipping method to "United States" with "Cash on Delivery" payment
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Decreasing inventory when order was placed
When I want to modify the "Wyborowa Vodka Exquisite" product variant
And I change its quantity of inventory to 2
@ -25,7 +25,7 @@ Feature: Validation of decreasing inventory below on hold validation
Then I should be notified that on hand quantity must be greater than the number of on hold units
And this variant should have a 5 item currently in stock
@ui @api
@api @ui
Scenario: Decreasing inventory when order was cancelled
Given the order "#00000023" was cancelled
When I want to modify the "Wyborowa Vodka Exquisite" product variant
@ -34,7 +34,7 @@ Feature: Validation of decreasing inventory below on hold validation
Then I should be notified that it has been successfully edited
And this variant should have a 2 item currently in stock
@ui @api
@api @ui
Scenario: Decreasing inventory when order was paid
Given the order "#00000023" is already paid
When I want to modify the "Wyborowa Vodka Exquisite" product variant

View file

@ -18,7 +18,7 @@ Feature: Inventory releasing on order cancellation
And the store allows paying with "Cash on Delivery"
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Verify the reserved inventory is back in stock after cancellation of a new order
Given there is a customer "john.doe@gmail.com" that placed an order "#00000022"
And the customer bought 3 units of "Green" variant of product "T-Shirt banana"
@ -28,7 +28,7 @@ Feature: Inventory releasing on order cancellation
Then the variant "Green" should have 5 items on hand
And the "Green" variant should have 0 items on hold
@ui @api
@api @ui
Scenario: Verify the reserved inventory and quantity of product's items is back in stock after cancellation of paid order
Given there is a customer "john.doe@gmail.com" that placed an order "#00000022"
And the customer bought 3 units of "Green" variant of product "T-Shirt banana"
@ -39,7 +39,7 @@ Feature: Inventory releasing on order cancellation
Then the variant "Green" should have 5 items on hand
And the "Green" variant should have 0 items on hold
@ui @api
@api @ui
Scenario: Verify the reserved inventory is back in stock after cancellation of a new order with two variants of product
Given there is a customer "john.doe@gmail.com" that placed an order "#00000023"
And the customer bought 3 units of "Green" variant of product "T-Shirt banana"
@ -52,7 +52,7 @@ Feature: Inventory releasing on order cancellation
And the variant "Red" should have 5 items on hand
And the "Red" variant should have 0 items on hold
@ui @api
@api @ui
Scenario: Verify the reserved inventory and quantity of product's items is back in stock after cancellation of paid order with two variants of product
Given there is a customer "john.doe@gmail.com" that placed an order "#00000023"
And the customer bought 3 units of "Green" variant of product "T-Shirt banana"
@ -66,7 +66,7 @@ Feature: Inventory releasing on order cancellation
And the variant "Red" should have 5 items on hand
And the "Red" variant should have 0 items on hold
@ui @api
@api @ui
Scenario: Verify the reserved inventory is back in stock after cancellation of a new order with two variants of different products
Given there is a customer "john.doe@gmail.com" that placed an order "#00000024"
And the customer bought 3 units of "Green" variant of product "T-Shirt banana"
@ -78,7 +78,7 @@ Feature: Inventory releasing on order cancellation
And the "Yellow" variant of "Skirt watermelon" product should have 5 items on hand
And the "Yellow" variant of "Skirt watermelon" product should have 0 items on hold
@ui @api
@api @ui
Scenario: Verify the reserved inventory and quantity of product's items is back in stock after cancellation of paid order with two variants of different products
Given there is a customer "john.doe@gmail.com" that placed an order "#00000024"
And the customer bought 3 units of "Green" variant of product "T-Shirt banana"
@ -91,7 +91,7 @@ Feature: Inventory releasing on order cancellation
And the "Yellow" variant of "Skirt watermelon" product should have 5 items on hand
And the "Yellow" variant of "Skirt watermelon" product should have 0 items on hold
@ui @api
@api @ui
Scenario: Verify the reserved inventory and quantity of product's items is back in stock after cancellation of a refunded order
Given there is a customer "john.doe@gmail.com" that placed an order "#00000022"
And the customer bought 3 units of "Green" variant of product "T-Shirt banana"

View file

@ -15,7 +15,7 @@ Feature: Seeing product's variant with specify quantity of items on hand
And the store allows paying with "Cash on Delivery"
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Seeing decreased quantity of product's items in selected variant after order payment
Given there is a customer "lucy@teamlucifer.com" that placed an order "#00000666"
And the customer bought 3 units of "Green" variant of product "T-Shirt banana"
@ -25,7 +25,7 @@ Feature: Seeing product's variant with specify quantity of items on hand
When I view all variants of the product "T-Shirt banana"
Then the variant "Green" should have 2 items on hand
@ui @api
@api @ui
Scenario: Seeing decreased quantity of product's items from different variants after order payment
Given there is a customer "lucy@teamlucifer.com" that placed an order "#00000666"
And the customer bought 3 units of "Yellow" variant of product "T-Shirt banana"

View file

@ -12,7 +12,7 @@ Feature: Accessing payment's order from the payment index
And there is an "#00000001" order with "Apple" product
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Accessing payment's order from the payment
Given I am browsing payments
When I go to the details of the first payment's order

View file

@ -12,19 +12,19 @@ Feature: Browsing payments
And there is an "#00000001" order with "Apple" product
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Browsing payments and their states
When I browse payments
Then I should see a single payment in the list
And the payment of the "#00000001" order should be "New" for "amba@fatima.org"
@ui @api
@api @ui
Scenario: Not seeing payments in cart state
Given the customer "customer@example.com" added "Apple" product to the cart
When I browse payments
Then I should see a single payment in the list
@ui @api
@api @ui
Scenario: Payments are sorted by newest as default
Given there is an "#00000002" order with "Apple" product ordered later
When I browse payments

View file

@ -15,7 +15,7 @@ Feature: Filtering payments by channel
And there is an "#00000002" order with "Orange" product in "Canada" channel
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Filtering payments by channel on index
When I browse payments
And I choose "Canada" as a channel filter

View file

@ -17,7 +17,7 @@ Feature: Filtering payments by state
And there is a "Failed" "#00000006" order with "Apple" product
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Filtering payments in state "New"
When I browse payments
And I choose "new" as a payment state
@ -28,7 +28,7 @@ Feature: Filtering payments by state
And I should see also the payment of the "#00000006" order
But I should not see the payment of the "#00000002" order
@ui @api
@api @ui
Scenario: Filtering payments in state "Completed"
When I browse payments
And I choose "completed" as a payment state
@ -37,7 +37,7 @@ Feature: Filtering payments by state
And I should see the payment of the "#00000002" order
But I should not see the payment of the "#00000003" order
@ui @api
@api @ui
Scenario: Filtering payments in state "Processing"
When I browse payments
And I choose "processing" as a payment state
@ -46,7 +46,7 @@ Feature: Filtering payments by state
And I should see the payment of the "#00000003" order
But I should not see the payment of the "#00000004" order
@ui @api
@api @ui
Scenario: Filtering payments in state "Refunded"
When I browse payments
And I choose "refunded" as a payment state
@ -55,7 +55,7 @@ Feature: Filtering payments by state
And I should see the payment of the "#00000004" order
But I should not see the payment of the "#00000005" order
@ui @api
@api @ui
Scenario: Filtering payments in state "Cancelled"
When I browse payments
And I choose "cancelled" as a payment state
@ -64,7 +64,7 @@ Feature: Filtering payments by state
And I should see the payment of the "#00000005" order
But I should not see the payment of the "#00000006" order
@ui @api
@api @ui
Scenario: Filtering payments in state "Failed"
When I browse payments
And I choose "failed" as a payment state

View file

@ -12,7 +12,7 @@ Feature: Completing a payment from its list
And there is an "#00000001" order with "Apple" product
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Completing a payment from payments index
When I browse payments
And I complete the payment of order "#00000001"

View file

@ -68,7 +68,7 @@ Feature: Adding a new product
And the product "Dice Brewing" should not have shipping required
And the product "Dice Brewing" should appear in the store
@ui @api
@api @ui
Scenario: Adding a new configurable product without options
When I want to create a new configurable product
And I specify its code as "WHISKEY_GENTLEMEN"
@ -78,7 +78,7 @@ Feature: Adding a new product
Then I should be notified that it has been successfully created
And the product "Gentleman Jack" should appear in the store
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a new configurable product
Given the store has a product option "Bottle size" with a code "bottle_size"
And this product option has the "0.7" option value with code "bottle_size_medium"

View file

@ -8,7 +8,7 @@ Feature: Browsing products
Given the store has "Dice Brewing" and "Eclipse" products
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Browsing defined products
When I want to browse products
Then I should see 2 products in the list

View file

@ -11,7 +11,7 @@ Feature: Deleting a product
And this product has one review from customer "john@doe.com"
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Deleted product disappears from the product catalog
When I delete the "Toyota GT86 model" product
Then I should be notified that it has been successfully deleted

View file

@ -9,7 +9,7 @@ Feature: Deleting a product with its reviews
And this product has one review from customer "john@doe.com"
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Deleted product reviews disappear from the product catalog
When I delete the "Toyota GT86 model" product
Then I should be notified that it has been successfully deleted

View file

@ -9,7 +9,7 @@ Feature: Editing a product
And the store has a product "Dice Brewing"
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Being unable to change code of an existing product
When I want to modify the "Dice Brewing" product
Then I should not be able to edit its code
@ -49,7 +49,7 @@ Feature: Editing a product
And it should be priced at $7.50 for channel "United States"
And its original price should be "$15.00" for channel "United States"
@ui @api
@api @ui
Scenario: Renaming a configurable product
Given the store has a "Wyborowa Vodka" configurable product
When I want to modify this product
@ -58,7 +58,7 @@ Feature: Editing a product
Then I should be notified that it has been successfully edited
And this product name should be "Sobieski Vodka" in "English (United States)" locale
@ui @api
@api @ui
Scenario: Renaming a configurable product with option
Given the store has a "Wyborowa Vodka" configurable product
And the store has a product option "Bottle size" with a code "bottle_size"
@ -69,7 +69,7 @@ Feature: Editing a product
Then I should be notified that it has been successfully edited
And this product name should be "Sobieski Vodka" in "English (United States)" locale
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Changing options of configurable product without any variant defined
Given the store has a "Marvel's T-Shirt" configurable product
And the store has a product option "T-Shirt size" with a code "t_shirt_size"
@ -81,7 +81,7 @@ Feature: Editing a product
Then I should be notified that it has been successfully edited
And this product should have a "T-Shirt color" option
@ui @api
@api @ui
Scenario: Being unable to change options of an existing product
Given the store has a "Marvel's T-Shirt" configurable product
And the store has a product option "T-Shirt size" with a code "t_shirt_size"
@ -91,7 +91,7 @@ Feature: Editing a product
When I want to modify the "Marvel's T-Shirt" product
Then I should not be able to edit its options
@ui @api
@api @ui
Scenario: Enabling product in channel when all its variants already have specified price in this channel
Given the store operates on another channel named "Mobile"
And the store has a "7 Wonders" configurable product

View file

@ -8,7 +8,7 @@ Feature: Editing product's slug
Given the store operates on a single channel in "United States"
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Creating a product with an autogenerated slug
When I want to create a new configurable product
And I specify its code as "BOARD_MANSION_OF_MADNESS"
@ -17,7 +17,7 @@ Feature: Editing product's slug
And I add it
Then the slug of the "Mansion of Madness" product should be "mansion-of-madness"
@ui @api
@api @ui
Scenario: Creating a product with a custom slug
When I want to create a new configurable product
And I specify its code as "BOARD_MANSION_OF_MADNESS"
@ -26,7 +26,7 @@ Feature: Editing product's slug
And I add it
Then the slug of the "Mansion of Madness" product should be "mom-board-game"
@ui @api
@api @ui
Scenario: Prevent from editing a slug while changing a product name
Given the store has a product "Mansion of Madness"
When I want to modify this product

View file

@ -10,7 +10,7 @@ Feature: Editing product's slug in multiple locales
And the store is also available in "Polish (Poland)"
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Creating a product with custom slugs
When I want to create a new configurable product
And I specify its code as "PUG_PUGGINTON_PLUSHIE"
@ -22,7 +22,7 @@ Feature: Editing product's slug in multiple locales
Then the slug of the "Pug Pugginton Plushie" product should be "sir-pugginton" in the "English (United States)" locale
And the slug of the "Pug Pugginton Plushie" product should be "pan-mopsinski" in the "Polish (Poland)" locale
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Creating a product with autogenerated slugs
When I want to create a new configurable product
And I specify its code as "PUG_PUGGINTON_PLUSHIE"

View file

@ -13,7 +13,7 @@ Feature: Filtering products by a channel
And I am logged in as an administrator
And I am browsing products
@ui @api
@api @ui
Scenario: Filtering products by a chosen channel
When I choose "Web-EU" as a channel filter
And I filter
@ -22,7 +22,7 @@ Feature: Filtering products by a channel
And I should see a product with name "MacBook Pro"
But I should not see any product with name "HP Spectre"
@ui @api
@api @ui
Scenario: Filtering products by a chosen channel
When I choose "Web-US" as a channel filter
And I filter

View file

@ -9,7 +9,7 @@ Feature: Adding a new product with a float attribute
And the store has a non-translatable float product attribute "Display Size"
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a float attribute to a product
When I want to create a new configurable product
And I specify its code as "display_size"

View file

@ -10,7 +10,7 @@ Feature: Adding a new product with an integer attribute
And the store has a non-translatable integer product attribute "Weight"
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding an integer attribute to product
When I want to create a new configurable product
And I specify its code as "44_MAGNUM"
@ -23,7 +23,7 @@ Feature: Adding a new product with an integer attribute
And the product "44 Magnum" should appear in the store
And attribute "Production year" of product "44 Magnum" should be 1955
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding an integer non-translatable attribute to product
When I want to create a new configurable product
And I specify its code as "44_MAGNUM"

View file

@ -10,7 +10,7 @@ Feature: Adding a new product with a percent attribute
And the store has a non-translatable percent product attribute "Accuracy"
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a percent attribute to product
When I want to create a new configurable product
And I specify its code as "44_MAGNUM"
@ -23,7 +23,7 @@ Feature: Adding a new product with a percent attribute
And the product "44 Magnum" should appear in the store
And attribute "Awesomeness rating" of product "44 Magnum" should be 80
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a non-translatable percent attribute to product
When I want to create a new configurable product
And I specify its code as "44_MAGNUM"

View file

@ -9,7 +9,7 @@ Feature: Adding a new product with a select attribute
And the store has a non-translatable select product attribute "Mug material" with value "Ceramic"
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a product with a select attribute with choices in different locales
When I want to create a new configurable product
And I specify its code as "mug"

View file

@ -11,7 +11,7 @@ Feature: Adding a new product with text attribute
And the store has a non-translatable text product attribute "Author"
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a text attribute to product
When I want to create a new configurable product
And I specify its code as "44_MAGNUM"
@ -24,7 +24,7 @@ Feature: Adding a new product with text attribute
And the product "44 Magnum" should appear in the store
And attribute "Gun caliber" of product "44 Magnum" should be "11 mm"
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a non-translatable text attribute to product
When I want to create a new configurable product
And I specify its code as "44_MAGNUM"
@ -37,7 +37,7 @@ Feature: Adding a new product with text attribute
And the product "44 Magnum" should appear in the store
And non-translatable attribute "Author" of product "44 Magnum" should be "Colt"
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding and removing text attributes on product create page
When I want to create a new configurable product
And I specify its code as "44_MAGNUM"

View file

@ -14,7 +14,7 @@ Feature: Adding select attributes in different locales to a product
And this product attribute's "Ceramic" value is labeled "Ceramika" in the "Polish (Poland)" locale
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a product with a select attribute with choices in different locales
When I want to create a new configurable product
And I specify its code as "mug"

View file

@ -12,7 +12,7 @@ Feature: Adding text attributes in different locales to a product
And the store has a text product attribute "Mug material"
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a product with a text attribute in different locales
When I want to create a new configurable product
And I specify its code as "mug"
@ -27,7 +27,7 @@ Feature: Adding text attributes in different locales to a product
And attribute "Mug material" of product "PHP Mug" should be "Wood" in "English (United States)" locale
And attribute "Mug material" of product "PHP Mug" should be "Drewno" in "Polish (Poland)" locale
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a text attribute in different locales to an existing product
When I want to modify the "Symfony Mug" product
And I add the "Mug material" attribute

View file

@ -10,7 +10,7 @@ Feature: Adding attributes to an existing product
And the store has a text product attribute "Overall length"
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding a text attribute to an existing product
When I want to modify the "44 Magnum" product
And I add the "Overall length" attribute to it
@ -19,7 +19,7 @@ Feature: Adding attributes to an existing product
Then I should be notified that it has been successfully edited
And attribute "Overall length" of product "44 Magnum" should be "30.5 cm"
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding another text attribute to an existing product
Given this product has a text attribute "Gun caliber" with value "11 mm" in "English (United States)" locale
When I want to modify the "44 Magnum" product
@ -30,7 +30,7 @@ Feature: Adding attributes to an existing product
And attribute "Gun caliber" of product "44 Magnum" should be "11 mm"
And attribute "Overall length" of product "44 Magnum" should be "30.5 cm"
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding and removing text attributes on product update page
When I want to modify the "44 Magnum" product
And I add the "Overall length" attribute to it
@ -40,7 +40,7 @@ Feature: Adding attributes to an existing product
Then I should be notified that it has been successfully edited
And product "44 Magnum" should not have a "Overall length" attribute
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Adding and removing after saving text attributes on product update page
Given this product has a text attribute "Gun caliber" with value "11 mm" in "English (United States)" locale
When I want to modify the "44 Magnum" product

View file

@ -22,7 +22,7 @@ Feature: Products validation
Then I should be notified that code is required
And product with name "Dice Brewing" should not be added
@no-ui @api
@api @no-ui
Scenario: Trying to add product translation in unexisting locale
When I want to modify the "Symfony Mug" product
And I name it "Symfony tasse" in "French (France)" locale
@ -88,7 +88,7 @@ Feature: Products validation
Then I should be notified that price must be defined for "Web-GB" channel
And product with code "BOARD_DICE_BREWING" should not be added
@ui @api
@api @ui
Scenario: Adding a new configurable product without specifying its code
When I want to create a new configurable product
And I name it "Dice Brewing" in "English (United States)" locale
@ -96,7 +96,7 @@ Feature: Products validation
Then I should be notified that code is required
And product with name "Dice Brewing" should not be added
@ui @api
@api @ui
Scenario: Adding a new configurable product with too long code
When I want to create a new configurable product
And I name it "Dice Brewing" in "English (United States)" locale
@ -104,7 +104,7 @@ Feature: Products validation
And I try to add it
Then I should be notified that code is too long
@ui @api
@api @ui
Scenario: Adding a new configurable product with duplicated code
Given the store has a product "7 Wonders" with code "AWESOME_GAME"
When I want to create a new configurable product
@ -115,7 +115,7 @@ Feature: Products validation
Then I should be notified that code has to be unique
And product with name "Dice Brewing" should not be added
@ui @api
@api @ui
Scenario: Adding a new configurable product without specifying its name
When I want to create a new configurable product
And I specify its code as "BOARD_DICE_BREWING"
@ -124,7 +124,7 @@ Feature: Products validation
Then I should be notified that name is required
And product with code "BOARD_DICE_BREWING" should not be added
@ui @api
@api @ui
Scenario: Trying to set too long meta keywords for a product
Given the store has a "Dice Brewing" product
When I want to modify this product
@ -132,7 +132,7 @@ Feature: Products validation
And I try to save my changes
Then I should be notified that meta keywords are too long
@ui @api
@api @ui
Scenario: Trying to set too long meta keywords for a product
Given the store has a "Dice Brewing" product
When I want to modify this product
@ -140,7 +140,7 @@ Feature: Products validation
And I try to save my changes
Then I should be notified that meta description is too long
@ui @api
@api @ui
Scenario: Trying to remove name from existing product
Given the store has a "Dice Brewing" product
When I want to modify this product
@ -149,7 +149,7 @@ Feature: Products validation
Then I should be notified that name is required
And this product should still be named "Dice Brewing"
@ui @api
@api @ui
Scenario: Trying to enable a configurable product in another channel without specifying the variant prices for it
Given the store has a "7 Wonders" configurable product
And this product has "7 Wonders: Cities" variant priced at "$30.00"
@ -160,7 +160,7 @@ Feature: Products validation
And I save my changes
Then I should be notified that I have to define product variants' prices for newly assigned channels first
@ui @api
@api @ui
Scenario: Adding a new product with duplicated slug
Given the store has a "7 Wonders" configurable product with "7-wonders" slug
When I want to create a new configurable product
@ -171,7 +171,7 @@ Feature: Products validation
Then I should be notified that slug has to be unique
And product with code "7-WONDERS-BABEL" should not be added
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Trying to add a new product with a text attribute without specifying its value in default locale
When I want to create a new configurable product
And I specify its code as "X-18-MUG"
@ -183,7 +183,7 @@ Feature: Products validation
Then I should be notified that I have to define the "Mug material" attribute in "English (United States)" locale
And product with code "X-18-MUG" should not be added
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Trying to add a new product with a text attribute without specifying its value in additional locale with proper length
When I want to create a new configurable product
And I specify its code as "X-18-MUG"
@ -195,7 +195,7 @@ Feature: Products validation
Then I should be notified that the "Mug material" attribute in "Polish (Poland)" locale should be longer than 3
And product with code "X-18-MUG" should not be added
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Trying to add a text attribute in different locales to an existing product without specifying its value in default locale
When I want to modify the "Symfony Mug" product
And I add the "Mug material" attribute
@ -204,7 +204,7 @@ Feature: Products validation
And I save my changes
Then I should be notified that I have to define the "Mug material" attribute in "English (United States)" locale
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Trying to add a text attribute in different locales to an existing product without specifying its value in additional locale with proper length
When I want to modify the "Symfony Mug" product
And I add the "Mug material" attribute

View file

@ -9,7 +9,7 @@ Feature: Select taxon for a new product
And the store classifies its products as "T-Shirts", "Accessories", "Funny" and "Sad"
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Specifying main taxon for configurable product
When I want to create a new configurable product
And I specify its code as "WHISKEY_GENTLEMEN"

View file

@ -11,7 +11,7 @@ Feature: Select taxon for an existing product
And the store has a product "T-Shirt Batman"
And I am logged in as an administrator
@ui @mink:chromedriver @api
@api @ui @mink:chromedriver
Scenario: Specifying main taxon for configurable product
When I want to modify the "T-Shirt Banana" product
And I choose main taxon "T-Shirts"

View file

@ -16,14 +16,14 @@ Feature: Sorting listed products
And this product is named "Ekstremalny Mops" in the "Polish" locale
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Products are sorted by ascending codes by default
Given I am browsing products
Then I should see 3 products in the list
And I should see a product with code "L_PUG"
But the first product on the list should have code "B_PUG"
@ui @api
@api @ui
Scenario: Changing the codes sorting order
Given I am browsing products
When I switch the way products are sorted descending by code
@ -31,7 +31,7 @@ Feature: Sorting listed products
And I should see a product with code "B_PUG"
But the first product on the list should have code "X_PUG"
@ui @api
@api @ui
Scenario: Products can be sorted by their names
Given I am browsing products
When I start sorting products by name
@ -39,7 +39,7 @@ Feature: Sorting listed products
And I should see a product with name "Xtreme Pug"
But the first product on the list should have name "Berserk Pug"
@ui @api
@api @ui
Scenario: Changing the names sorting order
Given I am browsing products
When the products are already sorted ascending by name
@ -48,7 +48,7 @@ Feature: Sorting listed products
And I should see a product with name "Berserk Pug"
But the first product on the list should have name "Xtreme Pug"
@ui @api
@api @ui
Scenario: Sort products ascending by name from chosen locale translations
When I change my locale to "Polish (Poland)"
And I browse products
@ -56,7 +56,7 @@ Feature: Sorting listed products
Then I should see 3 products in the list
And the first product on the list should have name "Ekstremalny Mops"
@ui @api
@api @ui
Scenario: Sort products descending by name from chosen locale translations
When I change my locale to "Polish (Poland)"
And I browse products
@ -65,7 +65,7 @@ Feature: Sorting listed products
Then I should see 3 products in the list
And the first product on the list should have name "Szałowy Mops"
@ui @api @no-postgres
@api @ui @no-postgres
Scenario: Missing translations are sorted as first when sorting by name ascending
When I change my locale to "Polish"
And I browse products
@ -74,7 +74,7 @@ Feature: Sorting listed products
And the first product on the list shouldn't have a name
And the last product on the list should have name "Ekstremalny Mops"
@ui @api @no-postgres
@api @ui @no-postgres
Scenario: Missing translation are sorted as last when sorting by name descending
When I change my locale to "Polish"
And I browse products

View file

@ -10,7 +10,7 @@ Feature: Viewing product's non translatable attributes on edit page
And this product has non-translatable percent attribute "crit chance" with value 10%
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Viewing product's attributes defined in different locales
When I modify the "Iron Pickaxe" product
And I should see non-translatable attribute "crit chance" with value 10%

View file

@ -15,27 +15,27 @@ Feature: Browsing variants affected by catalog promotions
And this product has "Sylius T-Shirt" variant priced at "$15.00"
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Browsing product variants affected by a catalog promotion applied on variants
Given there is a catalog promotion "PHP T-Shirt promotion" that reduces price by "50%" and applies on "PHP T-Shirt" variant
When I browse variants affected by catalog promotion "PHP T-Shirt promotion"
Then there should be 1 product variant on the list
And it should be the "PHP T-Shirt" product variant
@ui @api
@api @ui
Scenario: Browsing product variants affected by a catalog promotion applied on products
Given there is a catalog promotion "T-Shirt promotion" that reduces price by "20%" and applies on "T-Shirt" product
When I browse variants affected by catalog promotion "T-Shirt promotion"
Then there should be 2 product variants on the list
And it should be "PHP T-Shirt" and "Sylius T-Shirt" product variants
@ui @api
@api @ui
Scenario: Browsing product variants affected by a catalog promotion applied on taxons
Given there is a catalog promotion "Clothes promotion" that reduces price by "10%" and applies on "Clothes" taxon
When I browse variants affected by catalog promotion "Clothes promotion"
Then there should be 3 product variants on the list
@ui @api
@api @ui
Scenario: Browsing product variants affected by a catalog promotion when its scope overlaps with an exclusive promotion
Given there is a catalog promotion "T-Shirt promotion" that reduces price by "20%" and applies on "T-Shirt" product
And there is an exclusive catalog promotion "Sylius T-Shirt promotion" with priority 100 that reduces price by "30%" and applies on "Sylius T-Shirt" variant

View file

@ -17,7 +17,7 @@ Feature: Filtering catalog promotions by channel
And this catalog promotion is also available in the "Web-EU" channel
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Filtering catalog promotions by a chosen channel
When I browse catalog promotions
And I filter by "Web-EU" channel

View file

@ -14,7 +14,7 @@ Feature: Filtering catalog promotions by end date
And this catalog promotion operates between "2021-07-01" and "2022-05-04"
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Filtering catalog promotions from end date
When I browse catalog promotions
And I filter by end date from "2022-05-01"
@ -22,7 +22,7 @@ Feature: Filtering catalog promotions by end date
And I should see a catalog promotion with name "Spring sale"
But I should not see a catalog promotion with name "Winter sale"
@ui @api
@api @ui
Scenario: Filtering catalog promotions up to end date
When I browse catalog promotions
And I filter by end date up to "2022-05-01"
@ -30,7 +30,7 @@ Feature: Filtering catalog promotions by end date
And I should see a catalog promotion with name "Winter sale"
But I should not see a catalog promotion with name "Surprise sale"
@ui @api
@api @ui
Scenario: Filtering catalog promotions in an end date range
When I browse catalog promotions
And I filter by end date from "2022-04-02" up to "2022-05-03"

View file

@ -12,28 +12,28 @@ Feature: Filtering catalog promotions by search
And I am logged in as an administrator
And I am browsing catalog promotions
@ui @api
@api @ui
Scenario: Filtering catalog promotions by full name
When I search by "Surprise sale" name
Then I should see a catalog promotion with name "Surprise sale"
But I should not see a catalog promotion with name "Hunter sale"
And I should not see a catalog promotion with name "Winter sale"
@ui @api
@api @ui
Scenario: Filtering catalog promotions by partial name
When I search by "ter sale" name
Then I should see a catalog promotion with name "Hunter sale"
And I should see a catalog promotion with name "Winter sale"
But I should not see a catalog promotion with name "Surprise sale"
@ui @api
@api @ui
Scenario: Filtering catalog promotions by full code
When I search by "surprise-sale" code
Then I should see a catalog promotion with name "Surprise sale"
But I should not see a catalog promotion with name "Hunter sale"
And I should not see a catalog promotion with name "Winter sale"
@ui @api
@api @ui
Scenario: Filtering catalog promotions by partial code
When I search by "sale-1" code
Then I should see a catalog promotion with name "Surprise sale"

View file

@ -14,7 +14,7 @@ Feature: Filtering catalog promotions by start date
And this catalog promotion operates between "2021-07-01" and "2022-05-04"
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Filtering catalog promotions from start date
When I browse catalog promotions
And I filter by start date from "2021-12-20"
@ -22,7 +22,7 @@ Feature: Filtering catalog promotions by start date
And I should see a catalog promotion with name "Spring sale"
But I should not see a catalog promotion with name "Surprise sale"
@ui @api
@api @ui
Scenario: Filtering catalog promotions up to start date
When I browse catalog promotions
And I filter by start date up to "2021-12-20"
@ -30,7 +30,7 @@ Feature: Filtering catalog promotions by start date
And I should see a catalog promotion with name "Surprise sale"
But I should not see a catalog promotion with name "Spring sale"
@ui @api
@api @ui
Scenario: Filtering catalog promotions in a start date range
When I browse catalog promotions
And I filter by start date from "2021-08-20" up to "2022-01-01"

View file

@ -16,7 +16,7 @@ Feature: Filtering catalog promotions by status
And this catalog promotion is disabled
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Filtering enabled catalog promotions
When I browse catalog promotions
And I filter enabled catalog promotions
@ -25,7 +25,7 @@ Feature: Filtering catalog promotions by status
But I should not see a catalog promotion with name "Surprise sale"
And I should not see a catalog promotion with name "Special sale"
@ui @api
@api @ui
Scenario: Filtering active catalog promotions
When I browse catalog promotions
And I filter by active state
@ -34,7 +34,7 @@ Feature: Filtering catalog promotions by status
But I should not see a catalog promotion with name "Surprise sale"
And I should not see a catalog promotion with name "Special sale"
@ui @api
@api @ui
Scenario: Filtering inactive catalog promotions
When I browse catalog promotions
And I filter by inactive state

View file

@ -24,7 +24,7 @@ Feature: Resetting an administrator's password
Then I should be notified that email with reset instruction has been sent
But "does-not-exist@example.com" should receive no emails
@ui @api
@api @ui
Scenario: Changing my administrator's password
Given I have already received a resetting password email
When I follow the instructions to reset my password
@ -34,7 +34,7 @@ Feature: Resetting an administrator's password
Then I should be notified that my password has been successfully changed
And I should be able to log in as "sylius@example.com" authenticated by "newp@ssw0rd" password
@ui @api
@api @ui
Scenario: Trying to change my administrator's password twice without sending a new password reset request
Given I have already received an administrator's password resetting email
When I follow the instructions to reset my password

View file

@ -7,14 +7,14 @@ Feature: Resetting an administrator's password validation
Background:
Given there is an administrator "sylius@example.com" identified by "sylius"
@ui @api
@api @ui
Scenario: Trying to reset my administrator's password without specifying email
When I want to reset password
And I do not specify an email
And I try to reset it
Then I should be notified that the email is required
@ui @api
@api @ui
Scenario: Trying to reset my administrator's password with an empty value
Given I have already received an administrator's password resetting email
When I follow the instructions to reset my password
@ -23,14 +23,14 @@ Feature: Resetting an administrator's password validation
And I try to reset it
Then I should be notified that the new password is required
@ui @api
@api @ui
Scenario: Trying to reset my administrator's password with an invalid email
When I want to reset password
And I specify email as "sylius@examplecom"
And I try to reset it
Then I should be notified that the email is not valid
@ui @api
@api @ui
Scenario: Trying to reset my administrator's password with a wrong confirmation password
Given I have already received an administrator's password resetting email
When I follow the instructions to reset my password
@ -39,7 +39,7 @@ Feature: Resetting an administrator's password validation
And I try to reset it
Then I should be notified that the entered passwords do not match
@ui @api
@api @ui
Scenario: Trying to reset my administrator's password with a too short password
Given I have already received an administrator's password resetting email
When I follow the instructions to reset my password

View file

@ -9,7 +9,7 @@ Feature: Signing in to the administration panel
And there is a user "ted@example.com" identified by "bear"
And there is an administrator "admin@example.com" identified by "sylius"
@ui @api
@api @ui
Scenario: Sign in with email and password
When I want to log in
And I specify the username as "admin@example.com"
@ -17,7 +17,7 @@ Feature: Signing in to the administration panel
And I log in
Then I should be logged in
@ui @api
@api @ui
Scenario: Sign in with bad credentials
When I want to log in
And I specify the username as "admin@example.com"
@ -26,7 +26,7 @@ Feature: Signing in to the administration panel
Then I should be notified about bad credentials
And I should not be logged in
@ui @api
@api @ui
Scenario: Sign in using customer account
When I want to log in
And I specify the username as "ted@example.com"

View file

@ -10,7 +10,7 @@ Feature: Deleting a tax rate
And the store has "United States Sales Tax" tax rate of 20% for "Sports gear" within the "US" zone
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Deleted tax rate should disappear from the registry
When I delete tax rate "United States Sales Tax"
Then I should be notified that it has been successfully deleted

View file

@ -8,7 +8,7 @@ Feature: Adding a new administrator
Given the store operates on a single channel in "United States"
And I am logged in as an administrator
@ui @api
@api @ui
Scenario: Adding a new administrator
When I want to create a new administrator
And I specify its email as "l.skywalker@gmail.com"
@ -19,7 +19,7 @@ Feature: Adding a new administrator
Then I should be notified that it has been successfully created
And the administrator "l.skywalker@gmail.com" should appear in the store
@ui @api
@api @ui
Scenario: Adding a new administrator and log in with its credentials
When I want to create a new administrator
And I specify its email as "l.skywalker@gmail.com"

View file

@ -7,7 +7,7 @@ Feature: Adding an avatar to an administrator
Background:
Given I am logged in as an administrator
@ui @api
@api @ui
Scenario: Adding an avatar to administrator account
Given I am editing my details
When I upload the "troll.jpg" image as my avatar

View file

@ -7,7 +7,7 @@ Feature: Administrator validation
Background:
Given I am logged in as an administrator
@ui @api
@api @ui
Scenario: Trying to add a new administrator without email and name
When I want to create a new administrator
And I do not specify its email
@ -16,21 +16,21 @@ Feature: Administrator validation
Then I should be notified that the email is required
And I should be notified that the name is required
@ui @api
@api @ui
Scenario: Trying to add a new administrator without password
When I want to create a new administrator
And I do not specify its password
And I try to add it
Then I should be notified that the password is required
@ui @api
@api @ui
Scenario: Trying to add a new administrator with invalid email
When I want to create a new administrator
And I specify its email as "Ted"
And I try to add it
Then I should be notified that this email is not valid
@ui @api
@api @ui
Scenario: Trying to add a new administrator with taken email
Given there is an administrator "ted@example.com"
When I want to create a new administrator
@ -39,7 +39,7 @@ Feature: Administrator validation
Then I should be notified that email must be unique
And there should still be only one administrator with an email "ted@example.com"
@ui @api
@api @ui
Scenario: Trying to add a new administrator with taken name
Given there is an administrator with name "Ted"
When I want to create a new administrator
@ -48,7 +48,7 @@ Feature: Administrator validation
Then I should be notified that name must be unique
And there should still be only one administrator with name "Ted"
@ui @api
@api @ui
Scenario: Trying to add a new administrator with too long username specified
When I want to create a new administrator
And I specify its email as "l.skywalker@gmail.com"
@ -58,7 +58,7 @@ Feature: Administrator validation
And I try to add it
Then I should be notified that this "username" is too long
@ui @api
@api @ui
Scenario: Trying to add a new administrator with too long first name specified
When I want to create a new administrator
And I specify its email as "l.skywalker@gmail.com"
@ -69,7 +69,7 @@ Feature: Administrator validation
And I try to add it
Then I should be notified that this "first name" is too long
@ui @api
@api @ui
Scenario: Trying to add a new administrator with too long last name specified
When I want to create a new administrator
And I specify its email as "l.skywalker@gmail.com"
@ -80,7 +80,7 @@ Feature: Administrator validation
And I try to add it
Then I should be notified that this "last name" is too long
@no-ui @api
@api @no-ui
Scenario: Trying to add a new administrator with wrong locale code specified
When I want to create a new administrator
And I specify its email as "l.skywalker@gmail.com"

View file

@ -9,7 +9,7 @@ Feature: Browsing administrators
And there is also an administrator "ted@example.com"
And I am logged in as "ted@example.com" administrator
@ui @api
@api @ui
Scenario: Browsing administrators in store
When I want to browse administrators
Then there should be 2 administrators in the list

View file

@ -7,7 +7,7 @@ Feature: Changing an administrator's avatar
Background:
Given I am logged in as an administrator
@ui @api
@api @ui
Scenario: Changing an avatar of an administrator
Given I have the "ford.jpg" image as my avatar
And I am editing my details

View file

@ -9,14 +9,14 @@ Feature: Deleting an administrator
And there is also an administrator "ted@example.com"
And I am logged in as "ted@example.com" administrator
@ui @api
@api @ui
Scenario: Deleting an administrator
When I want to browse administrators
And I delete administrator with email "mr.banana@example.com"
Then I should be notified that it has been successfully deleted
And there should not be "mr.banana@example.com" administrator anymore
@ui @api
@api @ui
Scenario: The administrator account of currently logged in user cannot be deleted
When I want to browse administrators
And I delete administrator with email "ted@example.com"

View file

@ -9,7 +9,7 @@ Feature: Editing an administrator
And I am logged in as an administrator
And there is an administrator "ted@example.com" identified by "bear"
@ui @api
@api @ui
Scenario: Changing name and email of an existing administrator
When I want to edit this administrator
And I change its name to "Jon Snow"
@ -18,7 +18,7 @@ Feature: Editing an administrator
Then I should be notified that it has been successfully edited
And this administrator with name "Jon Snow" should appear in the store
@ui @api
@api @ui
Scenario: Changing password of an existing administrator
When I want to edit this administrator
And I change its password to "example"
@ -26,7 +26,7 @@ Feature: Editing an administrator
Then I should be able to log in as "ted@example.com" authenticated by "example" password
But I should not be able to log in as "ted@example.com" authenticated by "bear" password
@ui @api
@api @ui
Scenario: Changing password and name of an existing administrator and sign in again
When I want to edit this administrator
And I change its name to "ted"

View file

@ -8,7 +8,7 @@ Feature: Removing an administrator avatar
Given I am logged in as an administrator
And this administrator has the "troll.jpg" image as avatar
@ui @api
@api @ui
Scenario: Removing an administrator avatar
Given I am editing my details
When I remove the avatar

File diff suppressed because it is too large Load diff

View file

@ -27,9 +27,6 @@ parameters:
- '**/Bundle/*/vendor/**.php'
- '**/Component/*/vendor/**.php'
# Deprecated classes
- 'src/Sylius/Bundle/CoreBundle/Application/Kernel.php'
# To investigate, occurs after release of doctrine/orm 2.14, the processing of these classes ends with exit code 143
- 'src/Sylius/Bundle/CoreBundle/Doctrine/DQL/**.php'
- 'src/Sylius/Bundle/CoreBundle/Doctrine/ORM/SqlWalker/**.php'
@ -43,14 +40,6 @@ parameters:
ignoreErrors:
- '/(Interface|Class) [a-zA-Z\\]+ specifies template type (\w+) of interface [a-zA-Z\\]+ as [a-zA-Z\\]+ (of [a-zA-Z\\]+ )?but it''s already specified as/' # turns off a weird generics check behavior, we are basing on Psalm for generics checks
- '/Access to an undefined property Doctrine\\Common\\Collections\\ArrayCollection/'
- '/Class "Sylius\\Bundle\\CoreBundle\\Fixture\\PaymentFixture" not found/'
- '/Class Symfony\\Component\\Clock\\Clock not found\./'
- '/Class Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken constructor invoked with 4 parameters\, 2\-3 required./'
- '/Method Symfony\\Component\\HttpKernel\\CacheWarmer\\WarmableInterface\:\:warmUp\(\) invoked with 2 parameters\, 1 required\./'
- '/Method Symfony\\Component\\Serializer\\Normalizer\\NormalizerInterface\:\:supportsNormalization\(\) invoked with 3 parameters\, 1\-2 required\./'
- '/Symfony\\Component\\Serializer\\NameConverter\\NameConverterInterface::normalize\(\) invoked with 2 parameters, 1 required./'
- '/Method Symfony\\Component\\HttpKernel\\CacheWarmer\\WarmableInterface\:\:warmUp\(\) invoked with 2 parameters\, 1 required\./' # Symfony compatibility
- '/Method Sylius\\Component\\(\w+)\\Model\\(\w+)\:\:getId\(\) has no return type specified./'
- '/Method [a-zA-z\\]+Filter\:\:filterProperty\(\) has parameter \$value with no type specified./'
- '/Method [a-zA-z\\]+Persister\:\:(persist|remove|supports)\(\) has parameter \$data with no type specified./'
- '/Method Sylius\\Bundle\\AdminBundle\\Twig\\Component\\[a-zA-Z\\]+\:\:getDataModelValue\(\) is unused./'
- '/Method Sylius\\Bundle\\ShopBundle\\Twig\\Component\\[a-zA-Z\\]+\:\:getDataModelValue\(\) is unused./'
- '/Method Sylius\\Bundle\\(Admin|Shop)Bundle\\Twig\\Component\\[a-zA-Z\\]+\:\:getDataModelValue\(\) is unused./'

View file

@ -21,9 +21,9 @@
},
"require": {
"php": "^8.2",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/http-kernel": "^6.4.1 || ^7.0",
"symfony/workflow": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/http-kernel": "^6.4.1 || ^7.1",
"symfony/workflow": "^6.4.0 || ^7.1",
"winzou/state-machine": "^0.4",
"winzou/state-machine-bundle": "^0.6"
},
@ -40,7 +40,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
}
}

View file

@ -18,6 +18,7 @@ use Sylius\Bundle\ResourceBundle\SyliusResourceBundle;
final class SyliusAddressingBundle extends AbstractResourceBundle
{
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -30,8 +30,8 @@
"stof/doctrine-extensions-bundle": "^1.4",
"sylius/addressing": "^2.0",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/framework-bundle": "^6.4.1 || ^7.0",
"symfony/intl": "^6.4.0 || ^7.0"
"symfony/framework-bundle": "^6.4.1 || ^7.1",
"symfony/intl": "^6.4.0 || ^7.1"
},
"conflict": {
"doctrine/orm": ">= 3.0",
@ -47,10 +47,10 @@
"phpspec/phpspec": "^7.2",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0",
"symfony/validator": "^6.4.0 || ^7.0",
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1",
"symfony/validator": "^6.4.0 || ^7.1",
"theofidry/alice-data-fixtures": "^1.4"
},
"config": {
@ -63,7 +63,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -19,7 +19,6 @@ use Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository;
use Sylius\Component\Core\Model\ProductInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\FormBuilderInterface;
final class ProductImageType extends AbstractType
@ -47,10 +46,6 @@ final class ProductImageType extends AbstractType
},
'autocomplete' => true,
])
->add('position', IntegerType::class, [
'label' => 'sylius.ui.position',
'required' => false,
])
;
}
}

View file

@ -6,6 +6,8 @@ twig_hooks:
items:
template: '@SyliusAdmin/shared/crud/common/navbar/items.html.twig'
'sylius_admin.common.component.navbar.items':
shop_preview:
component: 'sylius_admin:navbar:shop_preview'
notifications:
component: 'sylius_admin:navbar:notifications'
user_dropdown:

View file

@ -320,6 +320,19 @@
/>
</service>
<service
id="sylius_admin.twig.component.shared.navbar.shop_preview"
class="Sylius\Bundle\AdminBundle\Twig\Component\Shared\Navbar\ShopPreviewComponent"
>
<argument type="service" id="sylius.repository.channel" />
<tag
name="twig.component"
key="sylius_admin:navbar:shop_preview"
template="@SyliusAdmin/shared/crud/common/navbar/menu/shop_preview.html.twig"
/>
</service>
<service
id="sylius_admin.twig.component.shared.navbar.notifications"
class="Sylius\Bundle\AdminBundle\Twig\Component\Shared\Navbar\NotificationsComponent"

View file

@ -0,0 +1,37 @@
<?php
/*
* This file is part of the Sylius package.
*
* (c) Sylius Sp. z o.o.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Sylius\Bundle\AdminBundle\Twig\Component\Shared\Navbar;
use Sylius\Component\Channel\Repository\ChannelRepositoryInterface;
use Sylius\Component\Core\Model\ChannelInterface;
use Symfony\UX\TwigComponent\Attribute\ExposeInTemplate;
readonly class ShopPreviewComponent
{
/**
* @param ChannelRepositoryInterface<ChannelInterface> $channelRepository
*/
public function __construct(private ChannelRepositoryInterface $channelRepository)
{
}
/**
* @return array<string, ChannelInterface>
*/
#[ExposeInTemplate(name: 'channels')]
public function getChannels(): array
{
return $this->channelRepository->findEnabled();
}
}

View file

@ -36,7 +36,7 @@
"sylius/core-bundle": "^2.0",
"sylius/ui-bundle": "^2.0",
"sylius/twig-hooks": "~0.3.0",
"symfony/framework-bundle": "^6.4.1 || ^7.0",
"symfony/framework-bundle": "^6.4.1 || ^7.1",
"symfony/stimulus-bundle": "^2.12",
"symfony/ux-autocomplete": "^2.17",
"symfony/ux-live-component": "^2.17",
@ -50,8 +50,8 @@
"phpspec/phpspec": "^7.2",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/dotenv": "^6.4.0 || ^7.0"
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/dotenv": "^6.4.0 || ^7.1"
},
"config": {
"allow-plugins": {
@ -63,7 +63,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -1,3 +1,3 @@
<div id="navbar-menu">
<div class="d-flex flex-wrap sm-align-items-center gap-3" id="navbar-menu">
{% hook 'menu' %}
</div>

View file

@ -0,0 +1,25 @@
{% from '@SyliusAdmin/shared/helper/icon.html.twig' import icon %}
{% set homepage_path = sylius_bundle_loaded_checker('SyliusShopBundle') ? path('sylius_shop_homepage') : '/' %}
{% if channels|length == 1 %}
{% set channel = channels|first %}
<a class="" href="{{ sylius_channel_url(homepage_path, channel) }}">
<span data-bs-toggle="tooltip" data-bs-title="{{ 'sylius.ui.view_your_store'|trans }}" data-bs-placement="right">
{{ icon({ icon: 'app_window' }) }}
</span>
</a>
{% elseif channels|length > 1 %}
<div class="dropdown">
<div type="button" data-bs-toggle="dropdown" aria-expanded="false">
<span data-bs-toggle="tooltip" data-bs-title="{{ 'sylius.ui.view_your_store'|trans }}" data-bs-placement="right">
{{ icon({ icon: 'app_window' }) }}
</span>
</div>
<ul class="dropdown-menu dropdown-menu-sm-end">
{% for channel in channels %}
<li><a class="dropdown-item" href="{{ sylius_channel_url(homepage_path, channel) }}">{{ channel.name }}</a></li>
{% endfor %}
</ul>
</div>
{% endif %}

View file

@ -387,3 +387,10 @@
<path d="M11 14h6"></path>
<path d="M14 11v6"></path>
{% endblock %}
{% block app_window %}
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M3 5m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z"></path>
<path d="M6 8h.01"></path>
<path d="M9 8h.01"></path>
{% endblock %}

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
This file is part of the Sylius package.
(c) Sylius Sp. z o.o.
For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
-->
<resources
xmlns="https://api-platform.com/schema/metadata/resources-3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0 https://api-platform.com/schema/metadata/resources-3.0.xsd"
>
<resource class="%sylius.model.shop_user.class%">
<operations>
<operation
name="sylius_api_shop_shop_user_get"
class="ApiPlatform\Metadata\NotExposed"
uriTemplate="/shop/shop-users/{id}"
/>
</operations>
</resource>
</resources>

View file

@ -29,7 +29,7 @@
"enshrined/svg-sanitize": "^0.16",
"lexik/jwt-authentication-bundle": "^2.11",
"sylius/core-bundle": "^2.0",
"symfony/messenger": "^6.4.0 || ^7.0"
"symfony/messenger": "^6.4.0 || ^7.1"
},
"require-dev": {
"ext-sqlite3": "*",
@ -40,9 +40,9 @@
"phpspec/phpspec": "^7.2",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/debug-bundle": "^6.4.0 || ^7.0",
"symfony/dotenv": "^6.4.0 || ^7.0",
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/debug-bundle": "^6.4.0 || ^7.1",
"symfony/dotenv": "^6.4.0 || ^7.1",
"symfony/webpack-encore-bundle": "^2.1",
"theofidry/alice-data-fixtures": "^1.4"
},
@ -56,7 +56,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -21,6 +21,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
final class SyliusAttributeBundle extends AbstractResourceBundle
{
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -31,7 +31,7 @@
"stof/doctrine-extensions-bundle": "^1.4",
"sylius/attribute": "^2.0",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/framework-bundle": "^6.4.1 || ^7.0"
"symfony/framework-bundle": "^6.4.1 || ^7.1"
},
"require-dev": {
"doctrine/doctrine-bundle": "^2.3.1",
@ -42,9 +42,9 @@
"phpspec/phpspec": "^7.2",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0"
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1"
},
"conflict": {
"doctrine/orm": ">= 3.0.0",
@ -60,7 +60,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -21,6 +21,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
final class SyliusChannelBundle extends AbstractResourceBundle
{
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -28,7 +28,7 @@
"php": "^8.2",
"sylius/channel": "^2.0",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/framework-bundle": "^6.4.1 || ^7.0"
"symfony/framework-bundle": "^6.4.1 || ^7.1"
},
"require-dev": {
"doctrine/doctrine-bundle": "^2.3.1",
@ -38,9 +38,9 @@
"matthiasnoback/symfony-dependency-injection-test": "^5.1",
"phpspec/phpspec": "^7.2",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0",
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1",
"twig/twig": "^3.14.0"
},
"conflict": {
@ -56,7 +56,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -208,7 +208,11 @@ final class LazyOption
return $object;
}
/** @param array<string, mixed> $criteria */
/**
* @param array<string, mixed> $criteria
*
* @return array<object>
*/
private static function findRandom(EntityRepository $repository, array $criteria, int $limit): array
{
$queryBuilder = $repository->createQueryBuilder('o');

View file

@ -18,6 +18,7 @@ use Sylius\Bundle\CoreBundle\Form\Type\ImageType;
use Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository;
use Sylius\Component\Core\Model\ProductInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
@ -50,6 +51,10 @@ final class ProductImageType extends ImageType
;
},
])
->add('position', IntegerType::class, [
'label' => 'sylius.ui.position',
'required' => false,
])
;
}
}

View file

@ -65,57 +65,57 @@
<defaults public="true" />
<service id="sylius.form.extension.type.address" class="Sylius\Bundle\CoreBundle\Form\Extension\AddressTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\AddressingBundle\Form\Type\AddressType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.channel" class="Sylius\Bundle\CoreBundle\Form\Extension\ChannelTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\ChannelBundle\Form\Type\ChannelType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.order" class="Sylius\Bundle\CoreBundle\Form\Extension\OrderTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\OrderBundle\Form\Type\OrderType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.cart" class="Sylius\Bundle\CoreBundle\Form\Extension\CartTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\OrderBundle\Form\Type\CartType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.cart_item" class="Sylius\Bundle\CoreBundle\Form\Extension\CartItemTypeExtension">
<argument>%sylius.order_item_quantity_modifier.limit%</argument>
<tag name="form.type_extension" extended-type="Sylius\Bundle\OrderBundle\Form\Type\CartItemType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="Sylius\Bundle\CoreBundle\Form\Extension\CatalogPromotionTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\PromotionBundle\Form\Type\CatalogPromotionType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.payment_method" class="Sylius\Bundle\CoreBundle\Form\Extension\PaymentMethodTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\PaymentBundle\Form\Type\PaymentMethodType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.tax_rate" class="Sylius\Bundle\CoreBundle\Form\Extension\TaxRateTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\TaxationBundle\Form\Type\TaxRateType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.taxon" class="Sylius\Bundle\CoreBundle\Form\Extension\TaxonTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\TaxonomyBundle\Form\Type\TaxonType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.promotion" class="Sylius\Bundle\CoreBundle\Form\Extension\PromotionTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\PromotionBundle\Form\Type\PromotionType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.promotion_coupon" class="Sylius\Bundle\CoreBundle\Form\Extension\PromotionCouponTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\PromotionBundle\Form\Type\PromotionCouponType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.promotion_filter_collection" class="Sylius\Bundle\CoreBundle\Form\Extension\PromotionFilterCollectionTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\PromotionBundle\Form\Type\PromotionFilterCollectionType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.shipping_method" class="Sylius\Bundle\CoreBundle\Form\Extension\ShippingMethodTypeExtension">
<argument type="service" id="Sylius\Bundle\ShippingBundle\Validator\GroupsGenerator\ShippingMethodConfigurationGroupsGenerator" />
<tag name="form.type_extension" extended-type="Sylius\Bundle\ShippingBundle\Form\Type\ShippingMethodType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.product" class="Sylius\Bundle\CoreBundle\Form\Extension\ProductTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\ProductBundle\Form\Type\ProductType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.product_translation" class="Sylius\Bundle\CoreBundle\Form\Extension\ProductTranslationTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\ProductBundle\Form\Type\ProductTranslationType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.product_variant" class="Sylius\Bundle\CoreBundle\Form\Extension\ProductVariantTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\ProductBundle\Form\Type\ProductVariantType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.extension.type.product_variant_generation" class="Sylius\Bundle\CoreBundle\Form\Extension\ProductVariantGenerationTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\ProductBundle\Form\Type\ProductVariantGenerationType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
<service id="sylius.form.type.product_review" class="Sylius\Bundle\CoreBundle\Form\Type\Product\ProductReviewType">

View file

@ -53,6 +53,7 @@ final class SyliusCoreBundle extends AbstractResourceBundle
public const EXTRA_VERSION = 'DEV';
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -65,14 +65,14 @@
"sylius/theme-bundle": "^2.3",
"sylius/ui-bundle": "^2.0",
"sylius/user-bundle": "^2.0",
"symfony/clock": "^6.4.0 || ^7.0",
"symfony/framework-bundle": "^6.4.1 || ^7.0",
"symfony/intl": "^6.4.0 || ^7.0",
"symfony/mailer": "^6.4.0 || ^7.0",
"symfony/messenger": "^6.4.0 || ^7.0",
"symfony/clock": "^6.4.0 || ^7.1",
"symfony/framework-bundle": "^6.4.1 || ^7.1",
"symfony/intl": "^6.4.0 || ^7.1",
"symfony/mailer": "^6.4.0 || ^7.1",
"symfony/messenger": "^6.4.0 || ^7.1",
"symfony/templating": "^6.4.0",
"symfony/webpack-encore-bundle": "^2.1",
"symfony/workflow": "^6.4.0 || ^7.0",
"symfony/workflow": "^6.4.0 || ^7.1",
"winzou/state-machine-bundle": "^0.6"
},
"require-dev": {
@ -83,8 +83,8 @@
"phpspec/phpspec": "^7.2",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/dotenv": "^6.4.0 || ^7.0"
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/dotenv": "^6.4.0 || ^7.1"
},
"config": {
"allow-plugins": {
@ -97,7 +97,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -27,6 +27,7 @@ final class SyliusCurrencyBundle extends AbstractResourceBundle
$container->addCompilerPass(new CompositeCurrencyContextPass());
}
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -28,8 +28,8 @@
"php": "^8.2",
"sylius/currency": "^2.0",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/framework-bundle": "^6.4.1 || ^7.0",
"symfony/intl": "^6.4.0 || ^7.0",
"symfony/framework-bundle": "^6.4.1 || ^7.1",
"symfony/intl": "^6.4.0 || ^7.1",
"symfony/templating": "^6.4.0"
},
"conflict": {
@ -43,9 +43,9 @@
"matthiasnoback/symfony-dependency-injection-test": "^5.1",
"phpspec/phpspec": "^7.2",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0",
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1",
"twig/twig": "^3.14.0"
},
"config": {
@ -58,7 +58,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -18,6 +18,7 @@ use Sylius\Bundle\ResourceBundle\SyliusResourceBundle;
final class SyliusCustomerBundle extends AbstractResourceBundle
{
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -40,7 +40,7 @@
"egulias/email-validator": "^3.1",
"sylius/customer": "^2.0",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/framework-bundle": "^6.4.1 || ^7.0",
"symfony/framework-bundle": "^6.4.1 || ^7.1",
"webmozart/assert": "^1.9"
},
"conflict": {
@ -52,9 +52,9 @@
"jms/serializer-bundle": "^5.0",
"phpspec/phpspec": "^7.2",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0"
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1"
},
"config": {
"allow-plugins": {
@ -66,7 +66,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -18,6 +18,7 @@ use Sylius\Bundle\ResourceBundle\SyliusResourceBundle;
final class SyliusInventoryBundle extends AbstractResourceBundle
{
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -29,9 +29,9 @@
"php": "^8.2",
"sylius/inventory": "^2.0",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/framework-bundle": "^6.4.1 || ^7.0",
"symfony/framework-bundle": "^6.4.1 || ^7.1",
"symfony/templating": "^6.4.0",
"symfony/validator": "^6.4.0 || ^7.0"
"symfony/validator": "^6.4.0 || ^7.1"
},
"conflict": {
"doctrine/orm": ">= 3.0.0"
@ -43,8 +43,8 @@
"jms/serializer-bundle": "^5.0",
"phpspec/phpspec": "^7.2",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"twig/twig": "^3.14.0"
},
"config": {
@ -57,7 +57,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -27,6 +27,7 @@ final class SyliusLocaleBundle extends AbstractResourceBundle
$container->addCompilerPass(new CompositeLocaleContextPass());
}
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -30,7 +30,7 @@
"sylius/locale": "^2.0",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/cache-contracts": "^2.5 || ^3.0",
"symfony/framework-bundle": "^6.4.1 || ^7.0"
"symfony/framework-bundle": "^6.4.1 || ^7.1"
},
"conflict": {
"doctrine/orm": ">= 3.0.0"
@ -44,8 +44,8 @@
"matthiasnoback/symfony-dependency-injection-test": "^5.1",
"phpspec/phpspec": "^7.2",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"twig/twig": "^3.14.0"
},
"config": {
@ -58,7 +58,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -27,8 +27,8 @@
"require": {
"php": "^8.2",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/framework-bundle": "^6.4.1 || ^7.0",
"symfony/intl": "^6.4.0 || ^7.0",
"symfony/framework-bundle": "^6.4.1 || ^7.1",
"symfony/intl": "^6.4.0 || ^7.1",
"symfony/templating": "^6.4.0",
"webmozart/assert": "^1.9"
},
@ -43,9 +43,9 @@
"phpspec/phpspec": "^7.2",
"phpunit/phpunit": "^9.5",
"sylius/currency-bundle": "^2.0",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0",
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1",
"twig/twig": "^3.14.0"
},
"config": {
@ -58,7 +58,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -22,6 +22,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
final class SyliusOrderBundle extends AbstractResourceBundle
{
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -32,7 +32,7 @@
"sylius/money-bundle": "^2.0",
"sylius/order": "^2.0",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/framework-bundle": "^6.4.1 || ^7.0",
"symfony/framework-bundle": "^6.4.1 || ^7.1",
"symfony/service-contracts": "^2.5 || ^3.0",
"symfony/templating": "^6.4.0"
},
@ -48,9 +48,9 @@
"matthiasnoback/symfony-dependency-injection-test": "^5.1",
"phpspec/phpspec": "^7.2",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0",
"symfony/validator": "^6.4.0 || ^7.0"
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1",
"symfony/validator": "^6.4.0 || ^7.1"
},
"config": {
"allow-plugins": {
@ -62,7 +62,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -24,6 +24,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
*/
final class SyliusPaymentBundle extends AbstractResourceBundle
{
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -29,7 +29,7 @@
"php": "^8.2",
"sylius/payment": "^2.0",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/framework-bundle": "^6.4.1 || ^7.0"
"symfony/framework-bundle": "^6.4.1 || ^7.1"
},
"conflict": {
"doctrine/orm": "2.15.2"
@ -43,8 +43,8 @@
"phpspec/phpspec": "^7.2",
"phpunit/phpunit": "^9.5",
"sylius/locale-bundle": "^2.0",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0"
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1"
},
"config": {
"allow-plugins": {
@ -56,7 +56,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -17,7 +17,7 @@
<service id="sylius.form.extension.type.gateway_config.crypted" class="Sylius\Bundle\PayumBundle\Form\Extension\CryptedGatewayConfigTypeExtension">
<argument type="service" id="payum.dynamic_gateways.cypher" on-invalid="null" />
<tag name="form.type_extension" extended-type="Sylius\Bundle\PayumBundle\Form\Type\GatewayConfigType" priority="100" />
<tag name="form.type_extension" priority="100" />
</service>
</services>
</container>

View file

@ -21,6 +21,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
final class SyliusPayumBundle extends AbstractResourceBundle
{
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -41,7 +41,7 @@
"require-dev": {
"matthiasnoback/symfony-dependency-injection-test": "^5.1",
"phpspec/phpspec": "^7.2",
"symfony/dependency-injection": "^6.4.1 || ^7.0"
"symfony/dependency-injection": "^6.4.1 || ^7.1"
},
"config": {
"allow-plugins": {
@ -53,7 +53,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -27,6 +27,7 @@ final class SyliusProductBundle extends AbstractResourceBundle
$container->addCompilerPass(new DefaultProductVariantResolverCompilerPass());
}
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -32,7 +32,7 @@
"sylius/locale-bundle": "^2.0",
"sylius/product": "^2.0",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/framework-bundle": "^6.4.1 || ^7.0"
"symfony/framework-bundle": "^6.4.1 || ^7.1"
},
"require-dev": {
"doctrine/doctrine-bundle": "^2.3.1",
@ -43,10 +43,10 @@
"mockery/mockery": "^1.4",
"phpspec/phpspec": "^7.2",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0",
"symfony/validator": "^6.4.0 || ^7.0"
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1",
"symfony/validator": "^6.4.0 || ^7.1"
},
"conflict": {
"doctrine/orm": "2.15.2",
@ -62,7 +62,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -25,6 +25,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
final class SyliusPromotionBundle extends AbstractResourceBundle
{
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -33,8 +33,8 @@
"sylius/promotion": "^2.0",
"sylius/registry": "^1.6",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"symfony/clock": "^6.4.0 || ^7.0",
"symfony/framework-bundle": "^6.4.1 || ^7.0"
"symfony/clock": "^6.4.0 || ^7.1",
"symfony/framework-bundle": "^6.4.1 || ^7.1"
},
"conflict": {
"doctrine/orm": ">= 3.0",
@ -49,10 +49,10 @@
"phpspec/phpspec": "^7.2",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0",
"symfony/validator": "^6.4.0 || ^7.0"
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1",
"symfony/validator": "^6.4.0 || ^7.1"
},
"config": {
"allow-plugins": {
@ -64,7 +64,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -20,6 +20,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
final class SyliusReviewBundle extends AbstractResourceBundle
{
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -44,7 +44,7 @@
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"sylius/review": "^2.0",
"sylius/user-bundle": "^2.0",
"symfony/framework-bundle": "^6.4.1 || ^7.0"
"symfony/framework-bundle": "^6.4.1 || ^7.1"
},
"conflict": {
"stof/doctrine-extensions-bundle": "1.8.0"
@ -56,11 +56,11 @@
"phpspec/phpspec": "^7.2",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0",
"symfony/security-bundle": "^6.4.0 || ^7.0",
"symfony/validator": "^6.4.0 || ^7.0"
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1",
"symfony/security-bundle": "^6.4.0 || ^7.1",
"symfony/validator": "^6.4.0 || ^7.1"
},
"config": {
"allow-plugins": {
@ -72,7 +72,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

View file

@ -23,6 +23,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
final class SyliusShippingBundle extends AbstractResourceBundle
{
/** @return string[] */
public function getSupportedDrivers(): array
{
return [

View file

@ -33,8 +33,8 @@
"sylius/money-bundle": "^2.0",
"sylius/resource-bundle": "^1.11 || ^1.12@alpha",
"sylius/shipping": "^2.0",
"symfony/clock": "^6.4.0 || ^7.0",
"symfony/framework-bundle": "^6.4.1 || ^7.0"
"symfony/clock": "^6.4.0 || ^7.1",
"symfony/framework-bundle": "^6.4.1 || ^7.1"
},
"conflict": {
"doctrine/orm": ">= 3.0.0",
@ -48,10 +48,10 @@
"matthiasnoback/symfony-dependency-injection-test": "^5.1",
"phpspec/phpspec": "^7.2",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^6.4.0 || ^7.0",
"symfony/dependency-injection": "^6.4.1 || ^7.0",
"symfony/form": "^6.4.1 || ^7.0",
"symfony/validator": "^6.4.0 || ^7.0"
"symfony/browser-kit": "^6.4.0 || ^7.1",
"symfony/dependency-injection": "^6.4.1 || ^7.1",
"symfony/form": "^6.4.1 || ^7.1",
"symfony/validator": "^6.4.0 || ^7.1"
},
"config": {
"allow-plugins": {
@ -63,7 +63,7 @@
"dev-main": "2.0-dev"
},
"symfony": {
"require": "7.0.*"
"require": "^7.1"
}
},
"autoload": {

Some files were not shown because too many files have changed in this diff Show more