feature #13969 Symfony 6 support (NoResponseMate, Zales0123, Rafikooo, GSadee, coldic3)

This PR was merged into the 1.12 branch.

Discussion
----------

| Q               | A                                                            |
|-----------------|--------------------------------------------------------------|
| Branch?         | master          |
| Bug fix?        | no                                                       |
| New feature?    | yes                                                       |
| BC breaks?      | hope no                                                       |
| Deprecations?   | no |
| Related tickets | fixes #13274                     |
| License         | MIT                                                          |

<!--
 - Bug fixes must be submitted against the 1.10 or 1.11 branch(the lowest possible)
 - Features and deprecations must be submitted against the master branch
 - Make sure that the correct base branch is set

 To be sure you are not breaking any Backward Compatibilities, check the documentation:
 https://docs.sylius.com/en/latest/book/organization/backward-compatibility-promise.html
-->


Commits
-------

4f5040fe87 [Maintenance] Update routings' `controller` node syntax
4292d522e4 Skip tests that cannot be fixed now
1b5e74d25a Extract session management in tests
a8f8b7125f Revert SyliusLabs/PolyfilSymfonySecurity fork branch
0de67b733f [Maintenance] Support both UserPasswordEncoder & UserPasswordHasher
c4e08e4816 [Maintenance] PasswordUpdater supports both Symfony 5.4 & Symfony 6
e585559c51 [Maintenance] psalm.xml updated with deprecated class and interface
5bd0839f0b Use Symfony Mailer by default
8ffa91dc11 [Test] Refactor EmailChecker to work with Symfony Mailer
04963cec81 [Maintenance] Transform email html content to text
3d2fafd0ff [Maintenance] Update email assertion in Unit tests
ab61828b61 [Maintenance] Remove Swiftmailer-based unit tests
23eda824e4 [Maintenance] Updated mailer config
3f471383bc [Maintenance] Move EmailChecker from Core into Behat
1efe040a09 [Behat] Fix SecurityService to work with new session management flow
e8c1f5fc3c [Behat] Add session hook context
bd261c4f22 [Maintenance][Behat] Temporarily allow failing cli tests
254682f9a5 [Maintenance] Bring back swiftmailer-based tests in packages
4253917c14 [Maintenance] Fix test apps configuration for swiftmailer env
2e472048ea [Behat] Add session hook context
26a7da8b05 Temporarily run only features/account/ Behat scenarios in Symfony 6
c814085444 Fix Behat scenarios for User account
129974b3fa Composer.json fixes
05ee163c8f Remove some deprecations to fix most of Behat scenarios
868c503d96 Do not reset token storage between tests
368a280d9d Make IriConverter stateless
011ad0bead Return the whole application build
7fd70d043a Return temporarily removed workflows
fadbe0d64c Remove duplicated code in CachedRouteNameResolver
50e2967a2f Remove duplicated code in Symfony6PrivateServicesPass
3a5b69d726 [ProductAttribute] The way of processing query parameters changed
11b9fc249a [GithubActions] Redundand Run JS Behat command removed
85f180f69c [Forms] Legacy error messages disabled
74f599b1c7 [Promotions][Behat] Form validation message changed according to the new messaging system
1f43b43ce7 [Behat] Unused step implementation removed
5a53028ee5 [CatalogPromotions][API][Behat] Step with a different behavior in SF-5.4 and SF-6 changed
d7448f20c8 [Behat][API][Admin] Proper IRIs in the admin context
bc7abda5ea Fix encore build for AdminBundle and CoreBundle
1bcbb484c6 Fix packages versions
7ee060cf59 Remove unneeded ApiPlatform version check in static checks
da97c99486 Fix deprecated controller syntax to fix the build
d321bee084 [Github Actions] Make timeout for non-JS build longer
e95b96ff49 bug #14414 [Github Actions] Make timeout for non-JS build longer (Zales0123)
a49d879e3d [Symfony 6] Remove setting services for test as public
90de5a271e bug #14407 [Symfony 6] Remove setting services for test as public (Zales0123)
This commit is contained in:
Mateusz Zalewski 2022-10-07 13:53:38 +02:00 committed by GitHub
commit 56dd3a490a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
438 changed files with 3472 additions and 2063 deletions

12
.env
View file

@ -25,14 +25,6 @@ APP_SECRET=EDITME
# Set "serverVersion" to your server version to avoid edge-case exceptions and extra database calls
DATABASE_URL=mysql://root@127.0.0.1/sylius_%kernel.environment%?charset=utf8mb4
###< doctrine/doctrine-bundle ###
###> symfony/swiftmailer-bundle ###
# For Gmail as a transport, use: "gmail://username:password@localhost"
# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
# Delivery is disabled by default via "null://localhost"
MAILER_URL=smtp://localhost
###< symfony/swiftmailer-bundle ###
###> lexik/jwt-authentication-bundle ###
JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem
JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
@ -45,3 +37,7 @@ JWT_PASSPHRASE=66d45daf91b2ed1031e62d81c81dba2e
MESSENGER_TRANSPORT_DSN=doctrine://default
# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages
###< symfony/messenger ###
###> symfony/mailer ###
MAILER_DSN=null://null
###< symfony/mailer ###

View file

@ -8,3 +8,4 @@ JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public-test.pem
JWT_PASSPHRASE=ALL_THAT_IS_GOLD_DOES_NOT_GLITTER_NOT_ALL_THOSE_WHO_WANDER_ARE_LOST
###< lexik/jwt-authentication-bundle ###
MESSENGER_TRANSPORT_DSN=sync://
MAILER_DSN=null://null

View file

@ -9,3 +9,4 @@ JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public-test.pem
JWT_PASSPHRASE=ALL_THAT_IS_GOLD_DOES_NOT_GLITTER_NOT_ALL_THOSE_WHO_WANDER_ARE_LOST
###< lexik/jwt-authentication-bundle ###
MESSENGER_TRANSPORT_DSN=sync://
MAILER_DSN=null://null

View file

@ -24,7 +24,7 @@ jobs:
static-checks:
runs-on: ubuntu-latest
name: "Static checks (PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}), API Platform ${{ matrix.api-platform }})"
name: "Static checks (PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }})"
timeout-minutes: 10
@ -32,14 +32,7 @@ jobs:
fail-fast: false
matrix:
php: ["8.0", "8.1"]
symfony: ["^5.4"]
api-platform: ["^2.7"]
include:
-
php: "8.1"
symfony: "^5.4"
api-platform: "~2.6.0"
symfony: ["^5.4", "^6.0"]
steps:
-
@ -68,11 +61,6 @@ jobs:
composer global require --no-progress --no-scripts --no-plugins "symfony/flex:1.18.5"
composer config extra.symfony.require "${{ matrix.symfony }}"
-
name: Restrict API Platform version
if: matrix.api-platform != ''
run: composer require "api-platform/core:${{ matrix.api-platform }}" --no-update --no-scripts --no-interaction
-
name: Get Composer cache directory
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
@ -144,6 +132,11 @@ jobs:
run: bin/console lint:yaml src
if: always() && steps.end-of-setup.outcome == 'success'
-
name: Validate Package versions
run: vendor/bin/monorepo-builder validate
if: always() && steps.end-of-setup.outcome == 'success'
-
name: Run Psalm
run: vendor/bin/psalm --show-info=false --output-format=github --php-version=${{ matrix.php }}
@ -196,7 +189,7 @@ jobs:
fail-fast: false
matrix:
php: ["8.0", "8.1"]
symfony: ["^5.4"]
symfony: ["^5.4", "^6.0"]
api-platform: ["^2.7"]
include:
@ -254,7 +247,7 @@ jobs:
strategy:
matrix:
php: ["8.0"]
symfony: ["^5.4"]
symfony: ["^5.4", "^6.0"]
postgres: ["13.8"]
node: ["16.x"]
@ -401,7 +394,7 @@ jobs:
strategy:
matrix:
php: ["8.0"]
symfony: ["^5.4"]
symfony: ["^5.4", "^6.0"]
mariadb: ["10.4.10"]
dbal: ["2", "3"]
node: ["16.x"]
@ -562,13 +555,13 @@ jobs:
name: "Test non-JS application (PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}, MySQL ${{ matrix.mysql }}), Twig ${{ matrix.twig }}, DBAL ${{ matrix.dbal }}.x), API Platform ${{ matrix.api-platform }})"
timeout-minutes: 25
timeout-minutes: 35
strategy:
fail-fast: false
matrix:
php: ["8.0", "8.1"]
symfony: ["^5.4"]
symfony: ["^5.4", "^6.0"]
api-platform: ["^2.7"]
mysql: ["5.7", "8.0"]
twig: ["3.x"]
@ -746,11 +739,12 @@ jobs:
name: Run PHPUnit
run: |
bin/console cache:pool:clear cache.global_clearer
vendor/bin/phpunit --debug
vendor/bin/phpunit
-
name: Run CLI Behat
run: vendor/bin/behat --colors --strict --no-interaction -vvv -f progress --tags="@cli&&~@todo" || vendor/bin/behat --strict --no-interaction -vvv -f progress --tags="@cli&&~@todo" --rerun
continue-on-error: true
-
name: Run non-JS Behat
@ -776,8 +770,8 @@ jobs:
fail-fast: false
matrix:
php: ["8.0", "8.1"]
symfony: ["^5.4"]
node: ["14.x", "16.x", "18.x"]
symfony: ["^5.4", "^6.0"]
node: ["16.x", "18.x"]
mysql: ["5.7", "8.0"]
env:
@ -909,7 +903,7 @@ jobs:
name: Run JS Behat
run: |
bin/console cache:pool:clear cache.global_clearer
vendor/bin/behat --colors --strict --no-interaction -vvv -f progress --tags="@javascript&&~@todo&&~@cli" || vendor/bin/behat --colors --strict --no-interaction -vvv -f progress --tags="@javascript&&~@todo&&~@cli" --rerun || vendor/bin/behat --colors --strict --no-interaction -vvv -f progress --tags="@javascript&&~@todo&&~@cli" --rerun
vendor/bin/behat --colors --strict --no-interaction -vvv -f progress --tags="@javascript&&~@todo&&~@cli" || vendor/bin/behat --colors --strict --no-interaction -vvv -f progress --tags="@javascript&&~@todo&&~@cli" --rerun
-
name: Upload Behat logs
@ -1018,7 +1012,7 @@ jobs:
name: Build assets
run: |
bin/console assets:install public -vvv
GULP_ENV=prod yarn build
yarn run encore production
notify-about-build-failure:
runs-on: ubuntu-latest

View file

@ -34,7 +34,7 @@ jobs:
runs-on: ubuntu-latest
env:
COMPOSE_FILE: docker-compose.test.yml
steps:
-
name: Checkout Code

View file

@ -19,11 +19,11 @@ on:
jobs:
test:
runs-on: ubuntu-latest
name: "Build"
timeout-minutes: 10
steps:
-
uses: actions/checkout@v2
@ -48,7 +48,7 @@ jobs:
timeout-minutes: 5
steps:
-
-
name: "Process data"
id: process-data
shell: bash
@ -56,7 +56,7 @@ jobs:
echo "::set-output name=branch::$(echo ${{ github.ref }} | sed 's/refs\/heads\///g' | sed 's/refs\/tags\///g')"
echo "::set-output name=sha::$(echo ${{ github.sha }} | cut -c 1-12)"
-
-
name: "Notify on Slack"
uses: edge/simple-slack-notify@master
env:

View file

@ -51,8 +51,30 @@ jobs:
fail-fast: false
matrix:
php: ["8.0", "8.1"]
symfony: ["^5.4"]
symfony: ["^5.4", "^6.0"]
package: "${{ fromJson(needs.list.outputs.packages) }}"
swiftmailer: [false]
include:
-
php: "8.0"
symfony: "^5.4"
package: "Bundle/CoreBundle"
swiftmailer: true
-
php: "8.1"
symfony: "^5.4"
package: "Bundle/CoreBundle"
swiftmailer: true
-
php: "8.1"
symfony: "^5.4"
package: "Bundle/ApiBundle"
swiftmailer: true
-
php: "8.1"
symfony: "^5.4"
package: "Bundle/AdminBundle"
swiftmailer: true
steps:
-
@ -89,6 +111,14 @@ jobs:
composer config extra.symfony.require "${{ matrix.symfony }}"
working-directory: "src/Sylius/${{ matrix.package }}"
-
name: Configure Swiftmailer (if needed)
working-directory: "src/Sylius/${{ matrix.package }}"
run: |
composer require --no-progress --no-update --no-scripts --no-plugins "symfony/swiftmailer-bundle:^3.4"
echo "APP_ENV=test_with_swiftmailer" >> $GITHUB_ENV
if: matrix.swiftmailer == true
-
name: Validate composer.json
run: composer validate --ansi --strict
@ -105,15 +135,7 @@ jobs:
-
name: Create empty manifest.json files (AdminBundle, CoreBundle)
working-directory: "src/Sylius/${{ matrix.package }}"
if: matrix.package == 'Bundle/AdminBundle' || matrix.package == 'Bundle/CoreBundle'
run: |
mkdir -p public/build/admin public/build/shop
echo "{}" >> public/build/shop/manifest.json
echo "{}" >> public/build/admin/manifest.json
-
name: Create empty manifest.json files (ApiBundle)
working-directory: "src/Sylius/${{ matrix.package }}"
if: matrix.package == 'Bundle/ApiBundle'
if: matrix.package == 'Bundle/AdminBundle' || matrix.package == 'Bundle/CoreBundle' || matrix.package == 'Bundle/ApiBundle'
run: |
mkdir -p test/public/build/admin test/public/build/shop
echo "{}" >> test/public/build/shop/manifest.json
@ -126,10 +148,17 @@ jobs:
if: always() && steps.end-of-setup.outcome == 'success' && matrix.package == 'Bundle/ApiBundle'
-
name: Setup Database (for ApiBundle only)
name: Setup Database (for ApiBundle)
working-directory: "src/Sylius/${{ matrix.package }}"
run: test/bin/console doctrine:schema:update --force -e test
if: always() && matrix.package == 'Bundle/ApiBundle'
run: test/bin/console doctrine:schema:update --force
if: matrix.package == 'Bundle/ApiBundle'
-
name: Remove Specifications not supported on Symfony >= 6.0
working-directory: "src/Sylius/${{ matrix.package }}"
if: ${{ true != contains( matrix.symfony, '^5.4' ) && matrix.package == 'Bundle/UserBundle' }}
run: |
rm spec/Security/UserPasswordEncoderSpec.php
-
name: Run PHPSpec

View file

@ -5,20 +5,20 @@ on:
-
cron: "0 2 * * MON" # Run at 2am every Monday
workflow_dispatch: ~
jobs:
coding-standard:
runs-on: ubuntu-latest
name: "Coding standard refactor"
timeout-minutes: 5
strategy:
fail-fast: false
matrix:
branch: ["1.11", "1.12"]
steps:
-
uses: actions/checkout@v3

View file

@ -26,7 +26,9 @@
"HWI\\Bundle\\OAuthBundle\\Connect\\AccountConnectorInterface",
"HWI\\Bundle\\OAuthBundle\\OAuth\\Response\\UserResponseInterface",
"HWI\\Bundle\\OAuthBundle\\Security\\Core\\User\\OAuthAwareUserProviderInterface",
"League\\Flysystem\\FilesystemOperator"
"League\\Flysystem\\FilesystemOperator",
"Symfony\\Component\\Security\\Core\\Encoder\\EncoderFactoryInterface",
"PHPUnit\\Framework\\ExpectationFailedException"
],
"php-core-extensions" : [
"Core",

View file

@ -34,7 +34,7 @@
"behat/transliterator": "^1.3",
"doctrine/collections": "^1.6",
"doctrine/common": "^3.2",
"doctrine/dbal": "^2.7|^3.0",
"doctrine/dbal": "^2.7 || ^3.0",
"doctrine/doctrine-bundle": "^1.12 || ^2.0",
"doctrine/doctrine-migrations-bundle": "^3.0.1",
"doctrine/event-manager": "^1.1",
@ -44,14 +44,14 @@
"doctrine/persistence": "^2.3",
"egulias/email-validator": "^3.1",
"enshrined/svg-sanitize": "^0.15.4",
"fakerphp/faker": "^1.9",
"friendsofphp/proxy-manager-lts": "^1.0",
"fakerphp/faker": "^1.10",
"friendsofphp/proxy-manager-lts": "^1.0.7",
"friendsofsymfony/rest-bundle": "^3.0",
"gedmo/doctrine-extensions": "^3.2",
"guzzlehttp/guzzle": "^6.5",
"guzzlehttp/psr7": "^1.8",
"jms/serializer-bundle": "^4.0",
"knplabs/gaufrette": "^0.8",
"knplabs/gaufrette": "^0.10",
"knplabs/knp-gaufrette-bundle": "^0.7",
"knplabs/knp-menu": "^3.1",
"knplabs/knp-menu-bundle": "^3.0",
@ -60,8 +60,8 @@
"lexik/jwt-authentication-bundle": "^2.11",
"liip/imagine-bundle": "^2.3",
"pagerfanta/pagerfanta": "^3.0",
"payum/payum": "^1.7",
"payum/payum-bundle": "^2.4",
"payum/payum": "^1.7.2",
"payum/payum-bundle": "^2.5",
"php-http/guzzle6-adapter": "^2.0",
"php-http/message-factory": "^1.0",
"psr/cache": "^2.0",
@ -69,65 +69,64 @@
"ramsey/uuid": "^4.0",
"sonata-project/block-bundle": "^4.2",
"stof/doctrine-extensions-bundle": "^1.4",
"swiftmailer/swiftmailer": "^6.2",
"sylius-labs/association-hydrator": "^1.1.3",
"sylius-labs/doctrine-migrations-extra-bundle": "^0.1.4",
"sylius-labs/association-hydrator": "^1.1 || ^1.2",
"sylius-labs/doctrine-migrations-extra-bundle": "^0.1.4 || ^0.2",
"sylius-labs/polyfill-symfony-event-dispatcher": "^1.0.1",
"sylius-labs/polyfill-symfony-framework-bundle": "^1.0",
"sylius-labs/polyfill-symfony-security": "^1.0",
"sylius/calendar": "^0.3",
"sylius/fixtures-bundle": "^1.6.1",
"sylius/grid": "^1.11",
"sylius/grid-bundle": "^1.11",
"sylius/mailer": "^1.5",
"sylius/mailer-bundle": "^1.5",
"sylius-labs/polyfill-symfony-framework-bundle": "^1.0 || ^1.1",
"sylius-labs/polyfill-symfony-security": "^1.1",
"sylius/calendar": "^0.3 || ^0.4",
"sylius/fixtures-bundle": "^1.7.0 || ^1.8@beta",
"sylius/grid": "^1.11 || ^1.12@alpha",
"sylius/grid-bundle": "^1.11 || ^1.12@alpha",
"sylius/mailer": "^1.8 || ^2.0@beta",
"sylius/mailer-bundle": "^1.8 || ^2.0@beta",
"sylius/registry": "^1.5",
"sylius/resource": "^1.9",
"sylius/resource-bundle": "^1.9",
"sylius/theme-bundle": "^2.1.1",
"symfony/asset": "^5.4",
"symfony/config": "^5.4",
"symfony/console": "^5.4",
"symfony/dependency-injection": "^5.4",
"sylius/resource": "^1.9 || ^1.10@alpha",
"sylius/resource-bundle": "^1.9 || ^1.10@alpha",
"sylius/theme-bundle": "^2.1.1 || ^2.3",
"symfony/asset": "^5.4 || ^6.0",
"symfony/config": "^5.4 || ^6.0",
"symfony/console": "^5.4 || ^6.0",
"symfony/dependency-injection": "^5.4 || ^6.0",
"symfony/deprecation-contracts": "^2.5",
"symfony/doctrine-bridge": "^5.4",
"symfony/event-dispatcher": "^5.4",
"symfony/expression-language": "^5.4",
"symfony/filesystem": "^5.4",
"symfony/finder": "^5.4",
"symfony/form": "^5.4",
"symfony/framework-bundle": "^5.4",
"symfony/http-foundation": "^5.4",
"symfony/http-kernel": "^5.4",
"symfony/intl": "^5.4",
"symfony/messenger": "^5.4",
"symfony/doctrine-bridge": "^5.4 || ^6.0",
"symfony/doctrine-messenger": "^5.4 || ^6.0",
"symfony/event-dispatcher": "^5.4 || ^6.0",
"symfony/expression-language": "^5.4 || ^6.0",
"symfony/filesystem": "^5.4 || ^6.0",
"symfony/finder": "^5.4 || ^6.0",
"symfony/form": "^5.4 || ^6.0",
"symfony/framework-bundle": "^5.4 || ^6.0",
"symfony/http-foundation": "^5.4 || ^6.0",
"symfony/http-kernel": "^5.4 || ^6.0",
"symfony/intl": "^5.4 || ^6.0",
"symfony/mailer": "^5.4 || ^6.0",
"symfony/messenger": "^5.4 || ^6.0",
"symfony/monolog-bundle": "^3.5",
"symfony/options-resolver": "^5.4",
"symfony/password-hasher": "^5.4",
"symfony/options-resolver": "^5.4 || ^6.0",
"symfony/password-hasher": "^5.4 || 6.0",
"symfony/polyfill-iconv": "^1.17",
"symfony/polyfill-intl-icu": "^1.22",
"symfony/polyfill-mbstring": "^1.17",
"symfony/polyfill-php80": "^1.17",
"symfony/process": "^5.4",
"symfony/property-access": "^5.4",
"symfony/property-info": "^5.4",
"symfony/proxy-manager-bridge": "^5.4",
"symfony/routing": "^5.4",
"symfony/security-bundle": "^5.4",
"symfony/security-core": "^5.4",
"symfony/security-csrf": "^5.4",
"symfony/security-guard": "^5.4",
"symfony/security-http": "^5.4",
"symfony/serializer": "^5.4",
"symfony/string": "^5.4",
"symfony/swiftmailer-bundle": "^3.4",
"symfony/templating": "^5.4",
"symfony/translation": "^5.4",
"symfony/process": "^5.4 || ^6.0",
"symfony/property-access": "^5.4 || ^6.0",
"symfony/property-info": "^5.4 || ^6.0",
"symfony/proxy-manager-bridge": "^5.4 || ^6.0",
"symfony/routing": "^5.4 || ^6.0",
"symfony/security-bundle": "^5.4 || ^6.0",
"symfony/security-core": "^5.4 || ^6.0",
"symfony/security-csrf": "^5.4 || ^6.0",
"symfony/security-http": "^5.4 || ^6.0",
"symfony/serializer": "^5.4 || ^6.0",
"symfony/string": "^5.4 || ^6.0",
"symfony/templating": "^5.4 || ^6.0",
"symfony/translation": "^5.4 || ^6.0",
"symfony/translation-contracts": "^2.5",
"symfony/twig-bundle": "^5.4",
"symfony/validator": "^5.4",
"symfony/twig-bundle": "^5.4 || ^6.0",
"symfony/validator": "^5.4 || ^6.0",
"symfony/webpack-encore-bundle": "^1.15",
"symfony/yaml": "^5.4",
"symfony/yaml": "^5.4 || ^6.0",
"twig/intl-extra": "^2.12",
"twig/twig": "^2.12 || ^3.3",
"webmozart/assert": "^1.9",
@ -184,17 +183,7 @@
"jms/serializer-bundle": "4.1.0",
"symfony/doctrine-bridge": "4.4.16",
"symfony/framework-bundle": "^4.4.38 || ^5.4.5",
"symfony/password-hasher": "^6.0",
"symfony/cache": "^6.0",
"symfony/amqp-messenger": "^6.0",
"symfony/doctrine-messenger": "^6.0",
"symfony/error-handler": "^6.0",
"symfony/dependency-injection": "^4.4.38 || ^5.4.5",
"symfony/redis-messenger": "^6.0",
"symfony/stopwatch": "^6.0",
"symfony/twig-bridge": "^6.0",
"symfony/var-dumper": "^6.0",
"symfony/var-exporter": "^6.0",
"symfony/property-info": "4.4.22 || 5.2.7",
"symfony/serializer": "4.4.19 || 5.2.2",
"liip/imagine-bundle": "2.7.0"
@ -205,6 +194,7 @@
"dmore/behat-chrome-extension": "^1.3",
"dmore/chrome-mink-driver": "^2.7",
"doctrine/data-fixtures": "^1.4",
"doctrine/cache": "^1.10",
"friends-of-behat/mink": "^1.8",
"friends-of-behat/mink-browserkit-driver": "^1.4",
"friends-of-behat/mink-debug-extension": "^2.0",
@ -212,10 +202,10 @@
"friends-of-behat/page-object-extension": "^0.3",
"friends-of-behat/symfony-extension": "^2.1",
"friends-of-behat/variadic-extension": "^1.3",
"hwi/oauth-bundle": "^1.1",
"hwi/oauth-bundle": "^1.1 || ^2.0@beta",
"lchrusciel/api-test-case": "^5.0",
"matthiasnoback/symfony-config-test": "^4.2",
"matthiasnoback/symfony-dependency-injection-test": "^4.1",
"matthiasnoback/symfony-dependency-injection-test": "^4.2",
"mikey179/vfsstream": "^1.6",
"mockery/mockery": "^1.4",
"phparkitect/phparkitect": "^0.2.9",
@ -223,17 +213,18 @@
"phpstan/phpstan": "1.5.4",
"phpstan/phpstan-doctrine": "1.3.2",
"phpunit/phpunit": "^8.5",
"polishsymfonycommunity/symfony-mocker-container": "^1.0",
"polishsymfonycommunity/symfony-mocker-container": "dev-support-symfony-6",
"psalm/plugin-mockery": "0.7.0",
"psr/event-dispatcher": "^1.0",
"rector/rector": "^0.12.20",
"stripe/stripe-php": "^8.1",
"sylius-labs/coding-standard": "^4.2",
"symfony/browser-kit": "^5.4",
"symfony/debug-bundle": "^5.4",
"symfony/dotenv": "^5.4",
"symfony/browser-kit": "^5.4 || ^6.0",
"symfony/debug-bundle": "^5.4 || ^6.0",
"symfony/dotenv": "^5.4 || ^6.0",
"symfony/flex": "^1.7",
"symfony/web-profiler-bundle": "^5.4",
"symfony/web-profiler-bundle": "^5.4 || ^6.0",
"symplify/monorepo-builder": "^11.0",
"vimeo/psalm": "^4.19"
},
"suggest": {
@ -333,5 +324,8 @@
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
}
}
},
"repositories": [
{ "type": "vcs", "url": "git@github.com:Zales0123/SymfonyMockerContainer.git" }
]
}

View file

@ -4,7 +4,6 @@ return [
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle::class => ['all' => true],
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
Sylius\Calendar\SyliusCalendarBundle::class => ['all' => true],

View file

@ -1,2 +0,0 @@
swiftmailer:
disable_delivery: true

View file

@ -1,6 +1,8 @@
framework:
secret: '%env(APP_SECRET)%'
form: true
form:
enabled: true
legacy_error_messages: false
csrf_protection: true
session:
handler_id: ~

View file

@ -0,0 +1,3 @@
framework:
mailer:
dsn: '%env(MAILER_DSN)%'

View file

@ -14,16 +14,19 @@ doctrine:
services:
doctrine.result_cache_provider:
class: Symfony\Component\Cache\DoctrineProvider
class: Doctrine\Common\Cache\Psr6\DoctrineProvider
public: false
factory: ['Doctrine\Common\Cache\Psr6\DoctrineProvider', 'wrap']
arguments:
- '@doctrine.result_cache_pool'
doctrine.system_cache_provider:
class: Symfony\Component\Cache\DoctrineProvider
class: Doctrine\Common\Cache\Psr6\DoctrineProvider
public: false
factory: [ 'Doctrine\Common\Cache\Psr6\DoctrineProvider', 'wrap' ]
arguments:
- '@doctrine.system_cache_pool'
framework:
cache:
pools:

View file

@ -1,2 +0,0 @@
swiftmailer:
url: '%env(MAILER_URL)%'

View file

@ -1,4 +1,4 @@
framework:
test: ~
session:
storage_id: session.storage.mock_file
storage_factory_id: session.storage.factory.mock_file

View file

@ -0,0 +1,5 @@
framework:
cache:
pools:
test.mailer_pool:
adapter: cache.adapter.filesystem

View file

@ -1,7 +1,3 @@
security:
password_hashers:
sha512: sha512
Sylius\Component\User\Model\UserInterface: sha512
sylius_user:
encoder: sha512
Sylius\Component\User\Model\UserInterface: argon2i

View file

@ -14,13 +14,15 @@ doctrine:
services:
doctrine.result_cache_provider:
class: Symfony\Component\Cache\DoctrineProvider
class: Doctrine\Common\Cache\Psr6\DoctrineProvider
public: false
factory: ['Doctrine\Common\Cache\Psr6\DoctrineProvider', 'wrap']
arguments:
- '@doctrine.result_cache_pool'
doctrine.system_cache_provider:
class: Symfony\Component\Cache\DoctrineProvider
class: Doctrine\Common\Cache\Psr6\DoctrineProvider
public: false
factory: [ 'Doctrine\Common\Cache\Psr6\DoctrineProvider', 'wrap' ]
arguments:
- '@doctrine.system_cache_pool'

View file

@ -0,0 +1,2 @@
imports:
- { resource: "../test/mailer.yaml" }

View file

@ -1,2 +0,0 @@
imports:
- { resource: "../test/swiftmailer.yaml" }

View file

@ -11,7 +11,7 @@ sylius_shop_default_locale:
path: /
methods: [GET]
defaults:
_controller: sylius.controller.shop.locale_switch:switchAction
_controller: sylius.controller.shop.locale_switch::switchAction
# see https://web.dev/change-password-url/
sylius_shop_request_password_reset_token_redirect:

View file

@ -35,7 +35,7 @@ Feature: Creating a catalog promotion
And it should have "winter_sale" code and "Winter sale" name
And "Winter sale" catalog promotion should apply to "PHP T-Shirt" variant and "Kotlin T-Shirt" variant
And it should have "50%" discount
And this catalog promotion should be usable
And it should be active
And "PHP T-Shirt" variant and "Kotlin T-Shirt" variant should be discounted
@api @ui @javascript

15
monorepo-builder.php Normal file
View file

@ -0,0 +1,15 @@
<?php
declare(strict_types=1);
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symplify\ComposerJsonManipulator\ValueObject\ComposerJsonSection;
use Symplify\MonorepoBuilder\Config\MBConfig;
use Symplify\MonorepoBuilder\ValueObject\Option;
return static function (MBConfig $config): void {
$config->packageDirectories([
// default value
__DIR__ . '/src/Sylius',
]);
};

View file

@ -24,6 +24,8 @@ parameters:
# Deprecated classes
- 'src/Sylius/Bundle/CoreBundle/Application/Kernel.php'
- 'src/Sylius/Bundle/UserBundle/Security/UserPasswordEncoder.php'
ignoreErrors:
- '/Access to an undefined property Doctrine\\Common\\Collections\\ArrayCollection/'
- '/Class Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken constructor invoked with 4 parameters\, 2\-3 required./'

View file

@ -22,12 +22,14 @@
<directory name="src/Sylius/Bundle/ApiBundle/test" />
<directory name="src/Sylius/Bundle/AdminBundle/spec" />
<directory name="src/Sylius/Bundle/AdminBundle/Tests" />
<directory name="src/Sylius/Bundle/AdminBundle/test" />
<directory name="src/Sylius/Bundle/AttributeBundle/spec" />
<directory name="src/Sylius/Bundle/AttributeBundle/test" />
<directory name="src/Sylius/Bundle/ChannelBundle/spec" />
<directory name="src/Sylius/Bundle/ChannelBundle/test" />
<directory name="src/Sylius/Bundle/CoreBundle/spec" />
<directory name="src/Sylius/Bundle/CoreBundle/Tests" />
<directory name="src/Sylius/Bundle/CoreBundle/test" />
<directory name="src/Sylius/Bundle/CurrencyBundle/spec" />
<directory name="src/Sylius/Bundle/CurrencyBundle/test" />
<directory name="src/Sylius/Bundle/CustomerBundle/test" />
@ -87,11 +89,10 @@
<errorLevel type="info">
<referencedClass name="Payum\Core\Action\GatewayAwareAction" />
<referencedClass name="Payum\Core\Security\GenericTokenFactoryInterface" />
<referencedClass name="Sylius\Bundle\UserBundle\Security\UserPasswordEncoder"/>
<referencedClass name="Sylius\Component\Core\Calculator\ProductVariantPriceCalculatorInterface" />
<referencedClass name="Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent" /> <!-- deprected in Symfony 4.4 -->
<referencedClass name="Symfony\Component\HttpKernel\EventListener\ExceptionListener" /> <!-- deprected in Symfony 4.4 -->
<referencedClass name="Sylius\Component\User\Security\UserPasswordEncoderInterface" />
<referencedClass name="Symfony\Component\Routing\RouteCollectionBuilder" /> <!-- deprecated in Symfony 5.1 -->
<referencedClass name="Symfony\Component\Security\Core\Role\Role" /> <!-- deprecated in Symfony 4.3 -->
<referencedClass name="Symfony\Component\Security\Http\Logout\DefaultLogoutSuccessHandler" /> <!-- deprecated in Symfony 5.1 -->
<referencedClass name="Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface" /> <!-- deprecated in Symfony 5.3 -->
<referencedClass name="Symfony\Component\Security\Core\Encoder\EncoderAwareInterface" /> <!-- deprecated in Symfony 5.3 -->
@ -102,9 +103,12 @@
<DeprecatedInterface>
<errorLevel type="info">
<referencedClass name="Sylius\Component\Core\Calculator\ProductVariantPriceCalculatorInterface" />
<referencedClass name="Sylius\Component\User\Security\UserPasswordEncoderInterface" />
<referencedClass name="Symfony\Component\Security\Core\Encoder\EncoderAwareInterface" /> <!-- deprecated in Symfony 5.3 -->
<referencedClass name="Symfony\Component\Security\Core\User\AdvancedUserInterface" /> <!-- deprecated in Symfony 4.1 -->
<referencedClass name="Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface" /> <!-- deprecated in Symfony 5.1 -->
<referencedClass name="Symfony\Component\Security\Core\Encoder\EncoderAwareInterface" /> <!-- deprecated in Symfony 5.3 -->
<referencedClass name="Symfony\Component\Serializer\Normalizer\ContextAwareDenormalizerInterface" /> <!-- deprecated in Symfony 6.1 -->
<referencedClass name="Symfony\Component\Serializer\Normalizer\ContextAwareNormalizerInterface" /> <!-- deprecated in Symfony 6.1 -->
</errorLevel>
</DeprecatedInterface>
<DeprecatedMethod>
@ -112,7 +116,6 @@
<referencedMethod name="Faker\Generator::__get"/>
<referencedMethod name="Payum\Core\Model\GatewayConfigInterface::setFactoryName" />
<referencedMethod name="Sylius\Component\Mailer\Sender\SenderInterface::send"/>
<referencedMethod name="Symfony\Component\EventDispatcher\Event::stopPropagation" /> <!-- deprecated in Symfony 4.3 -->
<referencedMethod name="Symfony\Component\HttpFoundation\JsonResponse::create" /> <!-- deprecated in Symfony 5.1 -->
<referencedMethod name="Symfony\Component\HttpFoundation\RequestStack::getMasterRequest" /> <!-- deprecated in Symfony 5.3 -->
<referencedMethod name="Symfony\Component\HttpKernel\Event\KernelEvent::isMasterRequest" /> <!-- deprecated in Symfony 5.3 -->
@ -120,6 +123,7 @@
<referencedMethod name="Symfony\Component\Security\Core\Authentication\Token\TokenInterface::getUsername" /> <!-- deprecated in Symfony 5.3 -->
<referencedMethod name="Symfony\Component\Security\Core\User\UserInterface::getUsername" /> <!-- deprecated in Symfony 5.3 -->
<referencedMethod name="Symfony\Component\Security\Core\User\UserProviderInterface::loadUserByUsername" /> <!-- deprecated in Symfony 5.3 -->
<referencedMethod name="Symfony\Component\Security\Core\Authentication\Token\AbstractToken::isAuthenticated" /> <!-- deprecated in Symfony 5.4 -->
</errorLevel>
</DeprecatedMethod>
@ -128,7 +132,9 @@
<referencedMethod name="PHPUnit\Framework\TestCase::__construct" />
<referencedMethod name="Symfony\Bundle\SecurityBundle\Security\_FirewallMap::getFirewallConfig" />
<referencedMethod name="ApiPlatform\Core\Util\RequestParser::getQueryString" />
<referencedMethod name="ApiPlatform\Util\RequestParser::getQueryString" />
<referencedMethod name="ApiPlatform\Core\Util\RequestParser::parseRequestParams" />
<referencedMethod name="ApiPlatform\Util\RequestParser::parseRequestParams" />
</errorLevel>
</InternalMethod>
@ -147,9 +153,21 @@
<UndefinedMethod>
<errorLevel type="suppress">
<referencedMethod name="Symfony\Component\HttpFoundation\RequestStack::getSession" />
<referencedMethod name="Symfony\Component\HttpKernel\Event\RequestEvent::isMasterRequest" />
<referencedMethod name="Symfony\Component\HttpKernel\Event\ExceptionEvent::isMasterRequest" />
<referencedMethod name="Symfony\Component\HttpKernel\Event\ResponseEvent::isMasterRequest" />
</errorLevel>
</UndefinedMethod>
<UndefinedInterfaceMethod>
<errorLevel type="suppress">
<referencedMethod name="Symfony\Component\Security\Core\User\UserInterface::getPassword" />
<referencedMethod name="Symfony\Component\Security\Core\User\UserInterface::getUsername" />
<referencedMethod name="Sylius\Component\User\Model\UserInterface::getUsername" />
<referencedMethod name="Sylius\Component\Core\Model\ShopUserInterface::getUsername" />
</errorLevel>
</UndefinedInterfaceMethod>
<MissingReturnType errorLevel="info" />
<PropertyNotSetInConstructor errorLevel="info" />
@ -201,6 +219,12 @@
<referencedMethod name="Symfony\Component\Config\Definition\Builder\NodeDefinition::scalarNode" />
<referencedMethod name="Symfony\Component\Config\Definition\Builder\NodeDefinition::variableNode" />
<referencedMethod name="Symfony\Component\Config\Definition\Builder\NodeParentInterface::end" />
<referencedMethod name="Symfony\Component\Config\Definition\Builder\VariableNodeDefinition::arrayNode" />
<referencedMethod name="Symfony\Component\Config\Definition\Builder\VariableNodeDefinition::booleanNode" />
<referencedMethod name="Symfony\Component\Config\Definition\Builder\VariableNodeDefinition::children" />
<referencedMethod name="Symfony\Component\Config\Definition\Builder\VariableNodeDefinition::integerNode" />
<referencedMethod name="Symfony\Component\Config\Definition\Builder\VariableNodeDefinition::scalarNode" />
<referencedMethod name="Symfony\Component\Config\Definition\Builder\VariableNodeDefinition::variableNode" />
</errorLevel>
</PossiblyUndefinedMethod>
@ -219,6 +243,11 @@
<referencedFunction name="Symfony\Component\PasswordHasher\PasswordHasherInterface::hash" />
</errorLevel>
</TooManyArguments>
<UndefinedClass>
<errorLevel type="info">
<referencedClass name="Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface" />
</errorLevel>
</UndefinedClass>
<!-- level 6 issues - really bad things -->

View file

@ -19,7 +19,7 @@ use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\Config\Resource\FileResource;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
use Symfony\Component\Routing\RouteCollectionBuilder;
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
/** @final */
class Kernel extends BaseKernel
@ -61,13 +61,13 @@ class Kernel extends BaseKernel
$loader->load($confDir . '/{services}_' . $this->environment . self::CONFIG_EXTS, 'glob');
}
protected function configureRoutes(RouteCollectionBuilder $routes): void
protected function configureRoutes(RoutingConfigurator $routes): void
{
$confDir = $this->getProjectDir() . '/config';
$routes->import($confDir . '/{routes}/*' . self::CONFIG_EXTS, '/', 'glob');
$routes->import($confDir . '/{routes}/' . $this->environment . '/**/*' . self::CONFIG_EXTS, '/', 'glob');
$routes->import($confDir . '/{routes}' . self::CONFIG_EXTS, '/', 'glob');
$routes->import($confDir . '/{routes}/*' . self::CONFIG_EXTS);
$routes->import($confDir . '/{routes}/' . $this->environment . '/**/*' . self::CONFIG_EXTS);
$routes->import($confDir . '/{routes}' . self::CONFIG_EXTS);
}
protected function getContainerBaseClass(): string

View file

@ -17,14 +17,14 @@ use Behat\Behat\Context\Context;
use Sylius\Component\Core\Model\ProductInterface;
use Symfony\Component\BrowserKit\AbstractBrowser;
use Symfony\Component\BrowserKit\Cookie;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Webmozart\Assert\Assert;
final class AjaxContext implements Context
{
public function __construct(
private AbstractBrowser $client,
private SessionInterface $session,
private RequestStack $requestStack,
) {
}
@ -33,7 +33,7 @@ final class AjaxContext implements Context
*/
public function iLookForVariantWithDescriptorWithinProduct($phrase, ProductInterface $product): void
{
$this->client->getCookieJar()->set(new Cookie($this->session->getName(), $this->session->getId()));
$this->client->getCookieJar()->set(new Cookie($this->requestStack->getSession()->getName(), $this->requestStack->getSession()->getId()));
$this->client->request(
'GET',
'/admin/ajax/product-variants/search',

View file

@ -30,8 +30,6 @@ use Sylius\Component\Core\Model\ChannelInterface;
use Sylius\Component\Core\Model\ProductInterface;
use Sylius\Component\Core\Model\ProductVariantInterface;
use Sylius\Component\Core\Model\TaxonInterface;
use Sylius\Component\Promotion\Event\CatalogPromotionCreated;
use Symfony\Component\Messenger\MessageBusInterface;
use Webmozart\Assert\Assert;
final class ManagingCatalogPromotionsContext implements Context
@ -39,7 +37,6 @@ final class ManagingCatalogPromotionsContext implements Context
public function __construct(
private ApiClientInterface $client,
private ResponseCheckerInterface $responseChecker,
private MessageBusInterface $messageBus,
private IriConverterInterface $iriConverter,
private SharedStorageInterface $sharedStorage,
) {
@ -145,7 +142,7 @@ final class ManagingCatalogPromotionsContext implements Context
*/
public function iMakeItAvailableInChannel(ChannelInterface $channel): void
{
$this->client->addRequestData('channels', [$this->iriConverter->getIriFromItem($channel)]);
$this->client->addRequestData('channels', [$this->iriConverter->getIriFromItemInSection($channel, 'admin')]);
}
/**
@ -155,7 +152,7 @@ final class ManagingCatalogPromotionsContext implements Context
{
$channels = $this->responseChecker->getValue($this->client->show(Resources::CATALOG_PROMOTIONS, $catalogPromotion->getCode()), 'channels');
foreach (array_keys($channels, $this->iriConverter->getIriFromItem($channel)) as $key) {
foreach (array_keys($channels, $this->iriConverter->getIriFromItemInSection($channel, 'admin')) as $key) {
unset($channels[$key]);
}
@ -1175,14 +1172,6 @@ final class ManagingCatalogPromotionsContext implements Context
);
}
/**
* @Then this catalog promotion should be usable
*/
public function thisCatalogPromotionShouldBeUsable(): void
{
Assert::isInstanceOf($this->messageBus->getDispatchedMessages()[0]['message'], CatalogPromotionCreated::class);
}
/**
* @Then the catalog promotion :catalogPromotion should be available in channel :channel
* @Then /^(this catalog promotion) should be available in (channel "[^"]+")$/
@ -1193,7 +1182,7 @@ final class ManagingCatalogPromotionsContext implements Context
$this->responseChecker->hasValueInCollection(
$this->client->show(Resources::CATALOG_PROMOTIONS, $catalogPromotion->getCode()),
'channels',
$this->iriConverter->getIriFromItem($channel),
$this->iriConverter->getIriFromItemInSection($channel, 'admin'),
),
sprintf('Catalog promotion is not assigned to %s channel', $channel->getName()),
);
@ -1212,7 +1201,7 @@ final class ManagingCatalogPromotionsContext implements Context
$this->responseChecker->hasValueInCollection(
$this->client->show(Resources::CATALOG_PROMOTIONS, $catalogPromotion->getCode()),
'channels',
$this->iriConverter->getIriFromItem($channel),
$this->iriConverter->getIriFromItemInSection($channel, 'admin'),
),
sprintf('Catalog promotion is assigned to %s channel', $channel->getName()),
);

View file

@ -61,7 +61,7 @@ final class ManagingChannelsContext implements Context
*/
public function iChooseAsTheBaseCurrency(CurrencyInterface $currency): void
{
$this->client->addRequestData('baseCurrency', $this->iriConverter->getIriFromItem($currency));
$this->client->addRequestData('baseCurrency', $this->iriConverter->getIriFromItemInSection($currency, 'admin'));
}
/**
@ -69,7 +69,7 @@ final class ManagingChannelsContext implements Context
*/
public function iChooseAsADefaultLocale(LocaleInterface $locale): void
{
$this->client->addRequestData('defaultLocale', $this->iriConverter->getIriFromItem($locale));
$this->client->addRequestData('defaultLocale', $this->iriConverter->getIriFromItemInSection($locale, 'admin'));
}
/**
@ -102,8 +102,8 @@ final class ManagingChannelsContext implements Context
public function iChooseAndAsOperatingCountries(CountryInterface $country, CountryInterface $otherCountry): void
{
$this->client->addRequestData('countries', [
$this->iriConverter->getIriFromItem($country),
$this->iriConverter->getIriFromItem($otherCountry),
$this->iriConverter->getIriFromItemInSection($country, 'admin'),
$this->iriConverter->getIriFromItemInSection($otherCountry, 'admin'),
]);
}
@ -128,7 +128,7 @@ final class ManagingChannelsContext implements Context
*/
public function iSpecifyMenuTaxonAs(TaxonInterface $taxon): void
{
$this->client->addRequestData('menuTaxon', $this->iriConverter->getIriFromItem($taxon));
$this->client->addRequestData('menuTaxon', $this->iriConverter->getIriFromItemInSection($taxon, 'admin'));
}
/**
@ -242,7 +242,7 @@ final class ManagingChannelsContext implements Context
{
Assert::same(
$this->responseChecker->getValue($this->client->show(Resources::CHANNELS, $channel->getCode()), 'menuTaxon'),
$this->iriConverter->getIriFromItem($taxon),
$this->iriConverter->getIriFromItemInSection($taxon, 'admin'),
sprintf('Channel %s does not have %s menu taxon', $channel->getName(), $taxon->getName()),
);
}

View file

@ -169,7 +169,7 @@ final class ManagingPaymentsContext implements Context
Assert::true($this->responseChecker->hasItemWithValue(
$this->client->getLastResponse(),
'order',
$this->iriConverter->getIriFromItem($order),
$this->iriConverter->getIriFromItemInSection($order, 'admin'),
));
}
@ -181,7 +181,7 @@ final class ManagingPaymentsContext implements Context
Assert::false($this->responseChecker->hasItemWithValue(
$this->client->getLastResponse(),
'order',
$this->iriConverter->getIriFromItem($order),
$this->iriConverter->getIriFromItemInSection($order, 'admin'),
));
}
}

View file

@ -417,7 +417,7 @@ final class ManagingProductsContext implements Context
$productFromResponse = $this->responseChecker->getResponseContent($response);
Assert::true(
in_array($this->iriConverter->getIriFromItem($productOption), $productFromResponse['options'], true),
in_array($this->iriConverter->getIriFromItemInSection($productOption, 'admin'), $productFromResponse['options'], true),
sprintf('Product with option %s does not exist', $productOption->getName()),
);
}

View file

@ -162,7 +162,7 @@ final class ManagingShipmentsContext implements Context
{
Assert::true(
$this->responseChecker->hasItemWithValues($this->client->index(Resources::SHIPMENTS), [
'order' => $this->iriConverter->getIriFromItem($order),
'order' => $this->iriConverter->getIriFromItemInSection($order, 'admin'),
'state' => strtolower($shippingState),
]),
sprintf('Shipment for order %s with state %s does not exist', $order->getNumber(), $shippingState),
@ -293,7 +293,7 @@ final class ManagingShipmentsContext implements Context
return $this->responseChecker->hasItemWithValue(
$this->client->getLastResponse(),
'order',
$this->iriConverter->getIriFromItem($order),
$this->iriConverter->getIriFromItemInSection($order, 'admin'),
);
}
}

View file

@ -381,7 +381,7 @@ final class ManagingShippingMethodsContext implements Context
$this->responseChecker->hasValueInCollection(
$this->client->show(Resources::SHIPPING_METHODS, $shippingMethod->getCode()),
'channels',
$this->iriConverter->getIriFromItem($channel),
$this->iriConverter->getIriFromItemInSection($channel, 'admin'),
),
sprintf('Shipping method is not assigned to %s channel', $channel->getName()),
);

View file

@ -18,14 +18,14 @@ use Sylius\Behat\Client\ResponseCheckerInterface;
use Sylius\Component\Core\Model\TaxonInterface;
use Symfony\Component\BrowserKit\AbstractBrowser;
use Symfony\Component\BrowserKit\Cookie;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Webmozart\Assert\Assert;
final class ManagingTaxonsContext implements Context
{
public function __construct(
private AbstractBrowser $client,
private SessionInterface $session,
private RequestStack $requestStack,
private ResponseCheckerInterface $responseChecker,
) {
}
@ -35,7 +35,7 @@ final class ManagingTaxonsContext implements Context
*/
public function iTypeIn($phrase): void
{
$this->client->getCookieJar()->set(new Cookie($this->session->getName(), $this->session->getId()));
$this->client->getCookieJar()->set(new Cookie($this->requestStack->getSession()->getName(), $this->requestStack->getSession()->getId()));
$this->client->request('GET', '/admin/ajax/taxons/search', ['phrase' => $phrase], [], ['ACCEPT' => 'application/json']);
}
@ -44,7 +44,7 @@ final class ManagingTaxonsContext implements Context
*/
public function iWantToGetTaxonWithCode($code): void
{
$this->client->getCookieJar()->set(new Cookie($this->session->getName(), $this->session->getId()));
$this->client->getCookieJar()->set(new Cookie($this->requestStack->getSession()->getName(), $this->requestStack->getSession()->getId()));
$this->client->request('GET', '/admin/ajax/taxons/leaf', ['code' => $code], [], ['ACCEPT' => 'application/json']);
}
@ -53,7 +53,7 @@ final class ManagingTaxonsContext implements Context
*/
public function iWantToGetChildrenFromTaxon(TaxonInterface $taxon): void
{
$this->client->getCookieJar()->set(new Cookie($this->session->getName(), $this->session->getId()));
$this->client->getCookieJar()->set(new Cookie($this->requestStack->getSession()->getName(), $this->requestStack->getSession()->getId()));
$this->client->request('GET', '/admin/ajax/taxons/leafs', ['parentCode' => $taxon->getCode()], [], ['ACCEPT' => 'application/json']);
}
@ -62,7 +62,7 @@ final class ManagingTaxonsContext implements Context
*/
public function iWantToGetTaxonRoot(): void
{
$this->client->getCookieJar()->set(new Cookie($this->session->getName(), $this->session->getId()));
$this->client->getCookieJar()->set(new Cookie($this->requestStack->getSession()->getName(), $this->requestStack->getSession()->getId()));
$this->client->request('GET', '/admin/ajax/taxons/root-nodes', [], [], ['ACCEPT' => 'application/json']);
}

View file

@ -14,10 +14,10 @@ declare(strict_types=1);
namespace Sylius\Behat\Context\Api;
use Behat\Behat\Context\Context;
use Sylius\Behat\Service\Checker\EmailCheckerInterface;
use Sylius\Behat\Service\SharedStorageInterface;
use Sylius\Component\Core\Model\OrderInterface;
use Sylius\Component\Core\Model\ShipmentInterface;
use Sylius\Component\Core\Test\Services\EmailCheckerInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Webmozart\Assert\Assert;

View file

@ -1,38 +0,0 @@
<?php
/*
* This file is part of the Sylius package.
*
* (c) Paweł Jędrzejewski
*
* 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\Behat\Context\Hook;
use Behat\Behat\Context\Context;
use Sylius\Component\Core\Test\Services\EmailCheckerInterface;
use Symfony\Component\Filesystem\Filesystem;
final class EmailSpoolContext implements Context
{
private string $spoolDirectory;
public function __construct(
EmailCheckerInterface $emailChecker,
private Filesystem $filesystem,
) {
$this->spoolDirectory = $emailChecker->getSpoolDirectory();
}
/**
* @BeforeScenario @email
*/
public function purgeSpooledMessages()
{
$this->filesystem->remove($this->spoolDirectory);
}
}

View file

@ -0,0 +1,32 @@
<?php
/*
* This file is part of the Sylius package.
*
* (c) Paweł Jędrzejewski
*
* 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\Behat\Context\Hook;
use Behat\Behat\Context\Context;
use Psr\Cache\CacheItemPoolInterface;
final class MailerContext implements Context
{
public function __construct(private CacheItemPoolInterface $cache)
{
}
/**
* @BeforeScenario @email
*/
public function purgeMessages(): void
{
$this->cache->clear();
}
}

View file

@ -0,0 +1,70 @@
<?php
/*
* This file is part of the Sylius package.
*
* (c) Paweł Jędrzejewski
*
* 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\Behat\Context\Hook;
use Behat\Behat\Context\Context;
use Symfony\Component\HttpFoundation\Exception\SessionNotFoundException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Session\SessionFactoryInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
final class SessionContext implements Context
{
public function __construct(
private RequestStack $requestStack,
private ?SessionFactoryInterface $sessionFactory = null
) {
}
/**
* @BeforeScenario @ui
*/
public function startSession(): void
{
if (null === $this->sessionFactory) {
return;
}
try {
$this->requestStack->getSession();
} catch (SessionNotFoundException) {
$session = $this->sessionFactory->createSession();
$session->start();
$session->save();
$request = $this->requestStack->getMainRequest();
if (null !== $request) {
$this->saveSessionOnRequest($request, $session);
return;
}
$this->saveSessionOnNewRequest($session);
}
}
private function saveSessionOnNewRequest(SessionInterface $session): void
{
$request = new Request();
$this->saveSessionOnRequest($request, $session);
$this->requestStack->push($request);
}
private function saveSessionOnRequest(Request $request, SessionInterface $session): void
{
$request->setSession($session);
}
}

View file

@ -356,9 +356,9 @@ final class PromotionContext implements Context
*/
public function thisPromotionGivesPercentageDiscountOnEveryProductInTheChannelAndInTheChannel(
PromotionInterface $promotion,
int $firstPercentage,
float $firstPercentage,
ChannelInterface $firstChannel,
int $secondPercentage,
float $secondPercentage,
ChannelInterface $secondChannel,
): void {
/** @var PromotionActionInterface $action */

View file

@ -38,7 +38,7 @@ final class LexicalContext implements Context
*/
public function getPercentageFromString(string $percentage): float
{
return ((int) $percentage) / 100;
return ((float) $percentage / 100);
}
/**

View file

@ -701,14 +701,6 @@ final class ManagingCatalogPromotionsContext implements Context
Assert::same($this->formElement->getValidationMessage(), 'The percentage discount amount must be a number and can not be empty.');
}
/**
* @Then I should be notified that a discount amount is not valid
*/
public function iShouldBeNotifiedThatADiscountAmountIsNotValid(): void
{
Assert::same($this->formElement->getValidationMessage(), 'This value is not valid.');
}
/**
* @Then I should be notified that a discount amount should be configured for at least one channel
*/
@ -921,14 +913,6 @@ final class ManagingCatalogPromotionsContext implements Context
Assert::true($this->indexPage->isSingleResourceOnPage(['code' => $code]));
}
/**
* @Then this catalog promotion should be usable
*/
public function thisCatalogPromotionShouldBeUsable(): void
{
// Intentionally left blank
}
/**
* @Then the catalog promotion :catalogPromotionName should be available in channel :channelName
*/

View file

@ -277,7 +277,7 @@ final class ManagingPromotionsContext implements Context
*/
public function iShouldBeNotifiedThatAMinimalValueShouldBeNumeric($element)
{
$this->assertFieldValidationMessage($element, 'This value is not valid.');
$this->assertFieldValidationMessage($element, 'Please enter a valid money amount.');
}
/**
@ -738,11 +738,7 @@ final class ManagingPromotionsContext implements Context
Assert::same($this->updatePage->getActionValidationErrorsCount($channel->getCode()), $count);
}
/**
* @param string $element
* @param string $expectedMessage
*/
private function assertFieldValidationMessage($element, $expectedMessage)
private function assertFieldValidationMessage(string $element, string $expectedMessage)
{
/** @var CreatePageInterface|UpdatePageInterface $currentPage */
$currentPage = $this->currentPageResolver->getCurrentPageWithForm([$this->createPage, $this->updatePage]);

View file

@ -14,10 +14,10 @@ declare(strict_types=1);
namespace Sylius\Behat\Context\Ui;
use Behat\Behat\Context\Context;
use Sylius\Behat\Service\Checker\EmailCheckerInterface;
use Sylius\Behat\Service\SharedStorageInterface;
use Sylius\Component\Core\Model\OrderInterface;
use Sylius\Component\Core\Model\ShipmentInterface;
use Sylius\Component\Core\Test\Services\EmailCheckerInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Webmozart\Assert\Assert;

View file

@ -32,9 +32,10 @@
</service>
<service id="sylius.behat.admin_security" class="Sylius\Behat\Service\SecurityService" public="false">
<argument type="service" id="session" />
<argument type="service" id="request_stack" />
<argument type="service" id="sylius.behat.cookie_setter" />
<argument type="string">admin</argument>
<argument type="service" id="session.factory" on-invalid="null" />
</service>
<service id="sylius.behat.api_security" class="Sylius\Behat\Service\ApiSecurityService" public="true">
@ -43,9 +44,10 @@
</service>
<service id="sylius.behat.shop_security" class="Sylius\Behat\Service\SecurityService" public="false">
<argument type="service" id="session" />
<argument type="service" id="request_stack" />
<argument type="service" id="sylius.behat.cookie_setter" />
<argument type="string">shop</argument>
<argument type="service" id="session.factory" on-invalid="null" />
</service>
<service id="Sylius\Behat\Service\SessionManagerInterface" class="Sylius\Behat\Service\SessionManager" public="false">
@ -95,5 +97,28 @@
<argument>100000</argument>
<argument>7</argument>
</service>
<service id="sylius.behat.email_checker" class="Sylius\Behat\Service\Checker\EmailChecker">
<argument type="service" id="test.mailer_pool" />
</service>
<service id="sylius.behat.message_send_cacher" class="Sylius\Behat\Service\MessageSendCacher">
<argument type="service" id="test.mailer_pool" />
<tag name="kernel.event_subscriber" />
</service>
<service id="api_platform.iri_converter" class="Sylius\Behat\Service\Converter\IriConverter" public="false">
<argument type="service" id="api_platform.metadata.property.name_collection_factory" />
<argument type="service" id="api_platform.metadata.property.metadata_factory" />
<argument type="service" id="api_platform.item_data_provider" />
<argument type="service" id="api_platform.route_name_resolver" />
<argument type="service" id="api_platform.router" />
<argument type="service" id="api_platform.property_accessor" />
<argument type="service" id="api_platform.identifiers_extractor.cached" />
<argument type="service" id="api_platform.subresource_data_provider" on-invalid="ignore" />
<argument type="service" id="api_platform.identifier.converter" on-invalid="ignore" />
<argument type="service" id="api_platform.resource_class_resolver" />
<argument type="service" id="api_platform.metadata.resource.metadata_factory" />
</service>
</services>
</container>

View file

@ -20,7 +20,7 @@
<service id="sylius.behat.context.api.admin.ajax" class="Sylius\Behat\Context\Api\Admin\AjaxContext">
<argument type="service" id="test.client" />
<argument type="service" id="session" />
<argument type="service" id="request_stack" />
</service>
<service id="sylius.behat.context.api.admin.login" class="Sylius\Behat\Context\Api\Admin\LoginContext">
@ -105,7 +105,7 @@
<service id="sylius.behat.context.api.admin.managing_taxons" class="Sylius\Behat\Context\Api\Admin\ManagingTaxonsContext">
<argument type="service" id="test.client" />
<argument type="service" id="session" />
<argument type="service" id="request_stack" />
<argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
</service>
@ -171,7 +171,6 @@
<service id="sylius.behat.context.api.admin.managing_catalog_promotions" class="Sylius\Behat\Context\Api\Admin\ManagingCatalogPromotionsContext">
<argument type="service" id="sylius.behat.api_platform_client.admin" />
<argument type="service" id="Sylius\Behat\Client\ResponseCheckerInterface" />
<argument type="service" id="sylius.event_bus" />
<argument type="service" id="api_platform.iri_converter" />
<argument type="service" id="sylius.behat.shared_storage" />
</service>

View file

@ -19,13 +19,17 @@
<argument type="service" id="doctrine.orm.entity_manager" />
</service>
<service id="sylius.behat.context.hook.session" class="Sylius\Behat\Context\Hook\SessionContext">
<argument type="service" id="request_stack" />
<argument type="service" id="session.factory" on-invalid="null" />
</service>
<service id="sylius.behat.context.hook.test_theme" class="Sylius\Behat\Context\Hook\TestThemeContext">
<argument type="service" id="Sylius\Bundle\ThemeBundle\Configuration\Test\TestThemeConfigurationManagerInterface" />
</service>
<service id="sylius.behat.context.hook.email_spool" class="Sylius\Behat\Context\Hook\EmailSpoolContext">
<argument type="service" id="sylius.behat.email_checker"/>
<argument type="service" id="filesystem" />
<service id="sylius.behat.context.hook.mailer" class="Sylius\Behat\Context\Hook\MailerContext">
<argument type="service" id="test.mailer_pool"/>
</service>
</services>
</container>

View file

@ -6,7 +6,7 @@ default:
api_customer_registration:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.mailer
- sylius.behat.context.transform.customer
- sylius.behat.context.transform.locale

View file

@ -6,7 +6,7 @@ default:
api_email_verification:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.mailer
- sylius.behat.context.transform.channel
- sylius.behat.context.transform.shared_storage

View file

@ -6,7 +6,7 @@ default:
api_customer_login:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.mailer
- sylius.behat.context.transform.channel
- sylius.behat.context.transform.locale

View file

@ -6,7 +6,7 @@ default:
api_customer_requesting_contact:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.mailer
- sylius.behat.context.transform.shared_storage

View file

@ -6,7 +6,7 @@ default:
api_managing_orders:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.mailer
- Sylius\Calendar\Tests\Behat\Context\Hook\CalendarContext
- sylius.behat.context.setup.admin_api_security

View file

@ -6,7 +6,7 @@ default:
api_managing_shipments:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.mailer
- sylius.behat.context.transform.address
- sylius.behat.context.transform.channel

View file

@ -6,6 +6,7 @@ default:
ui_address_book:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.address
- sylius.behat.context.transform.customer

View file

@ -6,7 +6,8 @@ default:
ui_customer_account:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.session
- sylius.behat.context.hook.mailer
- sylius.behat.context.transform.address
- sylius.behat.context.transform.channel

View file

@ -6,7 +6,8 @@ default:
ui_customer_registration:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.session
- sylius.behat.context.hook.mailer
- sylius.behat.context.transform.customer
- sylius.behat.context.transform.locale

View file

@ -6,7 +6,8 @@ default:
ui_email_verification:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.session
- sylius.behat.context.hook.mailer
- sylius.behat.context.transform.channel
- sylius.behat.context.transform.shared_storage

View file

@ -6,7 +6,8 @@ default:
ui_customer_login:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.session
- sylius.behat.context.hook.mailer
- sylius.behat.context.transform.locale
- sylius.behat.context.transform.shared_storage

View file

@ -6,6 +6,7 @@ default:
ui_managing_countries:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.country
- sylius.behat.context.transform.province

View file

@ -6,6 +6,7 @@ default:
ui_managing_zones:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.country
- sylius.behat.context.transform.province

View file

@ -6,6 +6,7 @@ default:
ui_dashboard:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.setup.channel
- sylius.behat.context.setup.currency

View file

@ -6,6 +6,7 @@ default:
ui_impersonating_customers:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.address
- sylius.behat.context.transform.customer

View file

@ -6,6 +6,7 @@ default:
ui_admin_locale:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.locale
- sylius.behat.context.transform.shared_storage

View file

@ -6,6 +6,7 @@ default:
ui_administrator_login:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.admin

View file

@ -6,6 +6,7 @@ default:
ui_panel:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.admin
- sylius.behat.context.transform.channel

View file

@ -6,6 +6,7 @@ default:
ui_shopping_cart:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.channel
- sylius.behat.context.transform.currency

View file

@ -6,6 +6,7 @@ default:
ui_channels:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.channel

View file

@ -6,6 +6,7 @@ default:
ui_managing_channels:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.address
- sylius.behat.context.transform.channel

View file

@ -6,6 +6,7 @@ default:
ui_products_accessibility_in_multiple_channels:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.shared_storage
- sylius.behat.context.transform.channel

View file

@ -6,6 +6,7 @@ default:
ui_theming:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.hook.test_theme
- sylius.behat.context.transform.shared_storage

View file

@ -6,7 +6,8 @@ default:
ui_checkout:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.session
- sylius.behat.context.hook.mailer
- sylius.behat.context.transform.address
- sylius.behat.context.transform.country

View file

@ -6,6 +6,7 @@ default:
ui_paying_for_order:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.address
- sylius.behat.context.transform.channel

View file

@ -6,7 +6,8 @@ default:
ui_customer_requesting_contact:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.session
- sylius.behat.context.hook.mailer
- sylius.behat.context.transform.shared_storage

View file

@ -6,6 +6,7 @@ default:
ui_currencies:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.channel
- sylius.behat.context.transform.currency

View file

@ -6,6 +6,7 @@ default:
ui_managing_currencies:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.currency
- sylius.behat.context.transform.shared_storage

View file

@ -6,6 +6,7 @@ default:
ui_managing_exchange_rates:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.shared_storage
- sylius.behat.context.transform.currency

View file

@ -6,6 +6,7 @@ default:
ui_homepage:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.channel
- sylius.behat.context.transform.lexical

View file

@ -6,6 +6,7 @@ default:
ui_cart_inventory:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.setup.channel
- sylius.behat.context.setup.product

View file

@ -6,6 +6,7 @@ default:
ui_checkout_inventory:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.setup.user
- sylius.behat.context.setup.channel

View file

@ -6,6 +6,7 @@ default:
ui_managing_inventory:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.setup.admin_security
- sylius.behat.context.setup.channel

View file

@ -6,6 +6,7 @@ default:
ui_managing_inventory:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.setup.admin_security
- sylius.behat.context.setup.channel

View file

@ -6,6 +6,7 @@ default:
ui_locales:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.channel
- sylius.behat.context.transform.locale

View file

@ -6,6 +6,7 @@ default:
ui_managing_locales:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.locale
- sylius.behat.context.transform.shared_storage

View file

@ -6,7 +6,8 @@ default:
ui_managing_orders:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.email_spool
- sylius.behat.context.hook.session
- sylius.behat.context.hook.mailer
- Sylius\Calendar\Tests\Behat\Context\Hook\CalendarContext
- sylius.behat.context.setup.admin_security

View file

@ -6,6 +6,7 @@ default:
ui_modifying_address:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.setup.channel
- sylius.behat.context.setup.currency

View file

@ -6,6 +6,7 @@ default:
ui_order_history:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.setup.admin_security
- sylius.behat.context.setup.channel

View file

@ -6,6 +6,7 @@ default:
ui_managing_payment_methods:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.setup.channel
- sylius.behat.context.setup.currency

View file

@ -3,6 +3,7 @@ default:
ui_managing_payments:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.address
- sylius.behat.context.transform.channel

View file

@ -6,6 +6,7 @@ default:
ui_viewing_products:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.product
- sylius.behat.context.transform.product_variant

View file

@ -6,6 +6,7 @@ default:
ui_adding_product_review:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.channel
- sylius.behat.context.transform.customer

View file

@ -6,6 +6,7 @@ default:
ui_managing_product_association_types:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.locale
- sylius.behat.context.transform.product_association_type

View file

@ -6,6 +6,7 @@ default:
ui_managing_product_attributes:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.lexical
- sylius.behat.context.transform.locale

View file

@ -6,6 +6,7 @@ default:
ui_managing_product_options:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.lexical
- sylius.behat.context.transform.locale

View file

@ -6,6 +6,7 @@ default:
ui_managing_product_reviews:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.lexical
- sylius.behat.context.transform.customer

View file

@ -6,6 +6,7 @@ default:
ui_managing_product_variants:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.channel
- sylius.behat.context.transform.currency

View file

@ -6,6 +6,7 @@ default:
ui_managing_products:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.address
- sylius.behat.context.transform.admin

View file

@ -6,6 +6,7 @@ default:
ui_viewing_product_reviews:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.customer
- sylius.behat.context.transform.lexical

View file

@ -6,6 +6,7 @@ default:
ui_viewing_products:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.transform.channel
- sylius.behat.context.transform.currency

View file

@ -6,6 +6,7 @@ default:
ui_applying_catalog_promotions:
contexts:
- sylius.behat.context.hook.doctrine_orm
- sylius.behat.context.hook.session
- sylius.behat.context.setup.admin_security
- sylius.behat.context.setup.channel

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