mirror of
https://github.com/jbcr/SyliusElasticsearchPlugin.git
synced 2026-03-24 00:42:08 +01:00
update to sylius 1.9 and add github actions
This commit is contained in:
207
.github/workflows/build.yml
vendored
Normal file
207
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,207 @@
|
||||
name: Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- 'dependabot/**'
|
||||
pull_request: ~
|
||||
release:
|
||||
types: [created]
|
||||
schedule:
|
||||
-
|
||||
cron: "0 1 * * 6" # Run at 1am every Saturday
|
||||
workflow_dispatch: ~
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
runs-on: ubuntu-18.04
|
||||
|
||||
name: "Sylius ${{ matrix.sylius }}, PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}, MySQL ${{ matrix.mysql }}"
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php: [7.4, 7.3]
|
||||
symfony: [^4.4, ^5.2]
|
||||
sylius: [~1.8.0, ~1.9.0]
|
||||
node: [10.x]
|
||||
mysql: [5.7]
|
||||
|
||||
exclude:
|
||||
-
|
||||
sylius: ~1.8.0
|
||||
symfony: ^5.2
|
||||
|
||||
env:
|
||||
APP_ENV: test
|
||||
DATABASE_URL: "mysql://root:root@127.0.0.1/sylius?serverVersion=${{ matrix.mysql }}"
|
||||
|
||||
steps:
|
||||
-
|
||||
uses: actions/checkout@v2
|
||||
|
||||
-
|
||||
name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: "${{ matrix.php }}"
|
||||
extensions: intl
|
||||
tools: symfony
|
||||
coverage: none
|
||||
|
||||
-
|
||||
name: Setup Node
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: "${{ matrix.node }}"
|
||||
|
||||
-
|
||||
name: Shutdown default MySQL
|
||||
run: sudo service mysql stop
|
||||
|
||||
-
|
||||
name: Setup MySQL
|
||||
uses: mirromutth/mysql-action@v1.1
|
||||
with:
|
||||
mysql version: "${{ matrix.mysql }}"
|
||||
mysql root password: "root"
|
||||
|
||||
-
|
||||
name: Configure sysctl limits
|
||||
run: |
|
||||
sudo swapoff -a
|
||||
sudo sysctl -w vm.swappiness=1
|
||||
sudo sysctl -w fs.file-max=262144
|
||||
sudo sysctl -w vm.max_map_count=262144
|
||||
|
||||
-
|
||||
name: install ElasticSearch
|
||||
uses: getong/elasticsearch-action@v1.2
|
||||
with:
|
||||
elasticsearch version: '6.8.15'
|
||||
host port: 9200
|
||||
container port: 9200
|
||||
host node port: 9300
|
||||
node port: 9300
|
||||
discovery type: 'single-node'
|
||||
|
||||
-
|
||||
name: Output PHP version for Symfony CLI
|
||||
run: php -v | head -n 1 | awk '{ print $2 }' > .php-version
|
||||
|
||||
-
|
||||
name: Install certificates
|
||||
run: symfony server:ca:install
|
||||
|
||||
-
|
||||
name: Run Chrome Headless
|
||||
run: google-chrome-stable --enable-automation --disable-background-networking --no-default-browser-check --no-first-run --disable-popup-blocking --disable-default-apps --allow-insecure-localhost --disable-translate --disable-extensions --no-sandbox --enable-features=Metal --headless --remote-debugging-port=9222 --window-size=2880,1800 --proxy-server='direct://' --proxy-bypass-list='*' http://127.0.0.1 > /dev/null 2>&1 &
|
||||
|
||||
-
|
||||
name: Run webserver
|
||||
run: (cd tests/Application && symfony server:start --port=8080 --dir=public --daemon)
|
||||
|
||||
-
|
||||
name: Get Composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
|
||||
-
|
||||
name: Cache Composer
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.json **/composer.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-php-${{ matrix.php }}-composer-
|
||||
|
||||
-
|
||||
name: Restrict Symfony version
|
||||
if: matrix.symfony != ''
|
||||
run: |
|
||||
composer global require --no-progress --no-scripts --no-plugins "symfony/flex:^1.10"
|
||||
composer config extra.symfony.require "${{ matrix.symfony }}"
|
||||
|
||||
-
|
||||
name: Restrict Sylius version
|
||||
if: matrix.sylius != ''
|
||||
run: composer require "sylius/sylius:${{ matrix.sylius }}" --no-update --no-scripts --no-interaction
|
||||
|
||||
-
|
||||
name: Install PHP dependencies
|
||||
run: composer install --no-interaction
|
||||
|
||||
-
|
||||
name: Get Yarn cache directory
|
||||
id: yarn-cache
|
||||
run: echo "::set-output name=dir::$(yarn cache dir)"
|
||||
|
||||
-
|
||||
name: Cache Yarn
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ${{ steps.yarn-cache.outputs.dir }}
|
||||
key: ${{ runner.os }}-node-${{ matrix.node }}-yarn-${{ hashFiles('**/package.json **/yarn.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-node-${{ matrix.node }}-yarn-
|
||||
|
||||
-
|
||||
name: Install JS dependencies
|
||||
run: (cd tests/Application && yarn install)
|
||||
|
||||
-
|
||||
name: Prepare test application database
|
||||
run: |
|
||||
(cd tests/Application && bin/console doctrine:database:create -vvv)
|
||||
(cd tests/Application && bin/console doctrine:schema:create -vvv)
|
||||
|
||||
-
|
||||
name: Prepare test application assets
|
||||
run: |
|
||||
(cd tests/Application && bin/console assets:install public -vvv)
|
||||
(cd tests/Application && yarn build)
|
||||
|
||||
-
|
||||
name: Prepare test application cache
|
||||
run: (cd tests/Application && bin/console cache:warmup -vvv)
|
||||
|
||||
-
|
||||
name: Load fixtures in test application
|
||||
run: (cd tests/Application && bin/console sylius:fixtures:load -n)
|
||||
|
||||
-
|
||||
name: Validate composer.json
|
||||
run: composer validate --ansi --strict
|
||||
|
||||
-
|
||||
name: Validate database schema
|
||||
run: (cd tests/Application && bin/console doctrine:schema:validate)
|
||||
|
||||
-
|
||||
name: Run PHPStan
|
||||
run: vendor/bin/phpstan analyse -c phpstan.neon -l max src/
|
||||
|
||||
-
|
||||
name: Run Psalm
|
||||
run: vendor/bin/psalm
|
||||
|
||||
-
|
||||
name: Run PHPSpec
|
||||
run: vendor/bin/phpspec run --ansi -f progress --no-interaction
|
||||
|
||||
-
|
||||
name: Run PHPUnit
|
||||
run: vendor/bin/phpunit --colors=always
|
||||
|
||||
-
|
||||
name: Run Behat
|
||||
run: vendor/bin/behat --colors --strict -vvv --no-interaction || vendor/bin/behat --colors --strict -vvv --no-interaction --rerun
|
||||
|
||||
-
|
||||
name: Upload Behat logs
|
||||
uses: actions/upload-artifact@v2
|
||||
if: failure()
|
||||
with:
|
||||
name: Behat logs
|
||||
path: etc/build/
|
||||
if-no-files-found: ignore
|
||||
@@ -4,19 +4,27 @@ imports:
|
||||
|
||||
default:
|
||||
extensions:
|
||||
Lakion\Behat\MinkDebugExtension:
|
||||
DMore\ChromeExtension\Behat\ServiceContainer\ChromeExtension: ~
|
||||
|
||||
FriendsOfBehat\MinkDebugExtension:
|
||||
directory: etc/build
|
||||
clean_start: false
|
||||
screenshot: true
|
||||
|
||||
|
||||
|
||||
Behat\MinkExtension:
|
||||
files_path: "%paths.base%/vendor/sylius/sylius/src/Sylius/Behat/Resources/fixtures/"
|
||||
base_url: "http://localhost:8080/"
|
||||
base_url: "https://127.0.0.1:8080/"
|
||||
default_session: symfony
|
||||
javascript_session: chrome
|
||||
javascript_session: chrome_headless
|
||||
sessions:
|
||||
symfony:
|
||||
symfony: ~
|
||||
chrome_headless:
|
||||
chrome:
|
||||
api_url: http://127.0.0.1:9222
|
||||
validate_certificate: false
|
||||
chrome:
|
||||
selenium2:
|
||||
browser: chrome
|
||||
@@ -30,11 +38,14 @@ default:
|
||||
- "start-fullscreen"
|
||||
- "start-maximized"
|
||||
- "no-sandbox"
|
||||
extra_capabilities:
|
||||
unexpectedAlertBehaviour: accept
|
||||
firefox:
|
||||
selenium2:
|
||||
browser: firefox
|
||||
show_auto: false
|
||||
|
||||
|
||||
FriendsOfBehat\SymfonyExtension:
|
||||
bootstrap: tests/Application/config/bootstrap.php
|
||||
kernel:
|
||||
|
||||
@@ -6,44 +6,48 @@
|
||||
"require": {
|
||||
"php": "^7.3",
|
||||
"ext-json": "*",
|
||||
"sylius/sylius": "^1.7",
|
||||
"sylius/sylius": "~1.8.0 || ~1.9.0",
|
||||
"friendsofsymfony/elastica-bundle": "^5.0",
|
||||
"symfony/property-access": "^4.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"behat/behat": "^3.6.1",
|
||||
"behat/mink": "^1.7@dev",
|
||||
"behat/mink-browserkit-driver": "^1.3",
|
||||
"behat/mink-extension": "^2.2",
|
||||
"behat/mink-selenium2-driver": "^1.3",
|
||||
"behat/mink-selenium2-driver": "^1.4",
|
||||
"dmore/behat-chrome-extension": "^1.3",
|
||||
"dmore/chrome-mink-driver": "^2.7",
|
||||
"friends-of-behat/mink": "^1.8",
|
||||
"friends-of-behat/mink-browserkit-driver": "^1.4",
|
||||
"friends-of-behat/mink-extension": "^2.4",
|
||||
"friends-of-behat/page-object-extension": "^0.3",
|
||||
"friends-of-behat/suite-settings-extension": "^1.0",
|
||||
"friends-of-behat/symfony-extension": "^2.0",
|
||||
"friends-of-behat/variadic-extension": "^1.1",
|
||||
"lakion/mink-debug-extension": "^1.2.3",
|
||||
"phpspec/phpspec": "^6.0",
|
||||
"phpstan/phpstan-doctrine": "^0.12",
|
||||
"phpstan/phpstan-shim": "^0.12",
|
||||
"phpstan/phpstan-symfony": "^0.12",
|
||||
"phpstan/phpstan-webmozart-assert": "^0.12",
|
||||
"phpunit/phpunit": "^7.0",
|
||||
"friends-of-behat/symfony-extension": "^2.1",
|
||||
"friends-of-behat/variadic-extension": "^1.3",
|
||||
"friendsofsymfony/oauth-server-bundle": "^1.6 || >2.0.0-alpha.0 ^2.0@dev",
|
||||
"lakion/mink-debug-extension": "^2.0.0",
|
||||
"phpspec/phpspec": "^7.0",
|
||||
"phpstan/extension-installer": "^1.0",
|
||||
"phpstan/phpstan": "0.12.82",
|
||||
"phpstan/phpstan-doctrine": "0.12.33",
|
||||
"phpstan/phpstan-strict-rules": "^0.12.0",
|
||||
"phpstan/phpstan-webmozart-assert": "0.12.12",
|
||||
"phpunit/phpunit": "^9.5",
|
||||
"sensiolabs/security-checker": "^6.0",
|
||||
"sylius-labs/coding-standard": "^3.0",
|
||||
"symfony/browser-kit": "^4.4",
|
||||
"symfony/debug-bundle": "^4.4",
|
||||
"symfony/intl": "^4.4",
|
||||
"symfony/web-profiler-bundle": "^4.4",
|
||||
"symfony/web-server-bundle": "^4.4",
|
||||
"symfony/dotenv": "^4.4"
|
||||
"sylius-labs/coding-standard": "^3.1",
|
||||
"symfony/browser-kit": "^4.4 || ^5.2",
|
||||
"symfony/debug-bundle": "^4.4 || ^5.2",
|
||||
"symfony/dotenv": "^4.4 || ^5.2",
|
||||
"symfony/intl": "^4.4 || ^5.2",
|
||||
"symfony/web-profiler-bundle": "^4.4 || ^5.2",
|
||||
"vimeo/psalm": "4.6.4"
|
||||
},
|
||||
"conflict": {
|
||||
"api-platform/core": "^2.6",
|
||||
"symfony/symfony": "4.1.8",
|
||||
"symfony/browser-kit": "4.1.8",
|
||||
"symfony/dependency-injection": "4.1.8",
|
||||
"symfony/dom-crawler": "4.1.8",
|
||||
"symfony/routing": "4.1.8"
|
||||
},
|
||||
"prefer-stable": true,
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"BitBag\\SyliusElasticsearchPlugin\\": "src/",
|
||||
@@ -56,5 +60,16 @@
|
||||
"spec\\BitBag\\SyliusElasticsearchPlugin\\": "spec/"
|
||||
},
|
||||
"classmap": ["tests/Application/Kernel.php"]
|
||||
},
|
||||
"scripts": {
|
||||
"post-install-cmd": [
|
||||
"php bin/create_node_symlink.php"
|
||||
],
|
||||
"post-update-cmd": [
|
||||
"php bin/create_node_symlink.php"
|
||||
],
|
||||
"post-create-project-cmd": [
|
||||
"php bin/create_node_symlink.php"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ Feature: Site-wide products search
|
||||
And there is a product named "BMW Z4" in the store
|
||||
And this product's price is "$42670"
|
||||
And this product has select attribute "Car Type" with value "Cabrio"
|
||||
And this product has text attribute "Color" with value "Red"
|
||||
And this product has a text attribute "Color" with value "Red"
|
||||
And this product has option "Supply" with values "Gasoline" and "Diesel"
|
||||
And this product is available in "Gasoline" supply priced at "$42670"
|
||||
And this product is available in "Diesel" supply priced at "$45670"
|
||||
@@ -21,26 +21,26 @@ Feature: Site-wide products search
|
||||
And there is a product named "Volvo XC90" in the store
|
||||
And this product's price is "$64505.80"
|
||||
And this product has select attribute "Car Type" with value "SUV"
|
||||
And this product has text attribute "Color" with value "Black"
|
||||
And this product has a text attribute "Color" with value "Black"
|
||||
And this product belongs to "Cars"
|
||||
And there is a product named "BMW 5 Series" in the store
|
||||
And this product's price is "$52070"
|
||||
And this product has select attribute "Car Type" with value "Cabrio"
|
||||
And this product has text attribute "Color" with value "Red"
|
||||
And this product has a text attribute "Color" with value "Red"
|
||||
And this product belongs to "Cars"
|
||||
And there is a product named "Lamborghini Aventador" in the store
|
||||
And this product's price is "$450000"
|
||||
And this product has text attribute "Color" with value "Yellow"
|
||||
And this product has a text attribute "Color" with value "Yellow"
|
||||
And this product belongs to "Cars"
|
||||
And there is a product named "BMW GS" in the store
|
||||
And this product's price is "$18070"
|
||||
And this product has select attribute "Motorbike Type" with value "Enduro"
|
||||
And this product has text attribute "Color" with value "Grey"
|
||||
And this product has a text attribute "Color" with value "Grey"
|
||||
And this product belongs to "Motorbikes"
|
||||
And there is a product named "Ducati Monster" in the store
|
||||
And this product's price is "$14995"
|
||||
And this product has select attribute "Motorbike Type" with value "Naked"
|
||||
And this product has text attribute "Color" with value "Black"
|
||||
And this product has a text attribute "Color" with value "Black"
|
||||
And this product's short description is:
|
||||
"""
|
||||
This is the Ducati Monster which is much better than any other BMW motorbike.
|
||||
@@ -48,7 +48,7 @@ Feature: Site-wide products search
|
||||
And this product belongs to "Motorbikes"
|
||||
And there is a product named "Honda Africa Twin" in the store
|
||||
And this product has select attribute "Motorbike Type" with value "Enduro"
|
||||
And this product has text attribute "Color" with value "Green & White"
|
||||
And this product has a text attribute "Color" with value "Green & White"
|
||||
And this product's price is "$13490"
|
||||
And this product's description is:
|
||||
"""
|
||||
|
||||
@@ -5,24 +5,14 @@ declare(strict_types=1);
|
||||
namespace Tests\BitBag\SyliusElasticsearchPlugin\Application;
|
||||
|
||||
use PSS\SymfonyMockerContainer\DependencyInjection\MockerContainer;
|
||||
use Sylius\Bundle\CoreBundle\Application\Kernel as SyliusKernel;
|
||||
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
|
||||
use Symfony\Component\Config\Loader\DelegatingLoader;
|
||||
use Symfony\Component\Config\Loader\LoaderInterface;
|
||||
use Symfony\Component\Config\Loader\LoaderResolver;
|
||||
use Symfony\Component\Config\Resource\FileResource;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
|
||||
use Symfony\Component\DependencyInjection\Loader\DirectoryLoader;
|
||||
use Symfony\Component\DependencyInjection\Loader\GlobFileLoader;
|
||||
use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
|
||||
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
|
||||
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
||||
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
||||
use Symfony\Component\HttpKernel\Config\FileLocator;
|
||||
use Symfony\Component\HttpKernel\Bundle\BundleInterface;
|
||||
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
|
||||
use Symfony\Component\Routing\RouteCollectionBuilder;
|
||||
use Webmozart\Assert\Assert;
|
||||
|
||||
final class Kernel extends BaseKernel
|
||||
{
|
||||
@@ -42,33 +32,37 @@ final class Kernel extends BaseKernel
|
||||
|
||||
public function registerBundles(): iterable
|
||||
{
|
||||
$contents = require $this->getProjectDir() . '/config/bundles.php';
|
||||
foreach ($contents as $class => $envs) {
|
||||
if (isset($envs['all']) || isset($envs[$this->environment])) {
|
||||
yield new $class();
|
||||
foreach ($this->getConfigurationDirectories() as $confDir) {
|
||||
$bundlesFile = $confDir . '/bundles.php';
|
||||
if (false === is_file($bundlesFile)) {
|
||||
continue;
|
||||
}
|
||||
yield from $this->registerBundlesFromFile($bundlesFile);
|
||||
}
|
||||
}
|
||||
|
||||
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
|
||||
{
|
||||
$container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
|
||||
$container->setParameter('container.dumper.inline_class_loader', true);
|
||||
$confDir = $this->getProjectDir() . '/config';
|
||||
foreach ($this->getConfigurationDirectories() as $confDir) {
|
||||
$bundlesFile = $confDir . '/bundles.php';
|
||||
if (false === is_file($bundlesFile)) {
|
||||
continue;
|
||||
}
|
||||
$container->addResource(new FileResource($bundlesFile));
|
||||
}
|
||||
|
||||
$loader->load($confDir . '/{packages}/*' . self::CONFIG_EXTS, 'glob');
|
||||
$loader->load($confDir . '/{packages}/' . $this->environment . '/**/*' . self::CONFIG_EXTS, 'glob');
|
||||
$loader->load($confDir . '/{services}' . self::CONFIG_EXTS, 'glob');
|
||||
$loader->load($confDir . '/{services}_' . $this->environment . self::CONFIG_EXTS, 'glob');
|
||||
$container->setParameter('container.dumper.inline_class_loader', true);
|
||||
|
||||
foreach ($this->getConfigurationDirectories() as $confDir) {
|
||||
$this->loadContainerConfiguration($loader, $confDir);
|
||||
}
|
||||
}
|
||||
|
||||
protected function configureRoutes(RouteCollectionBuilder $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');
|
||||
foreach ($this->getConfigurationDirectories() as $confDir) {
|
||||
$this->loadRoutesConfiguration($routes, $confDir);
|
||||
}
|
||||
}
|
||||
|
||||
protected function getContainerBaseClass(): string
|
||||
@@ -80,27 +74,52 @@ final class Kernel extends BaseKernel
|
||||
return parent::getContainerBaseClass();
|
||||
}
|
||||
|
||||
protected function getContainerLoader(ContainerInterface $container): LoaderInterface
|
||||
{
|
||||
/** @var ContainerBuilder $container */
|
||||
Assert::isInstanceOf($container, ContainerBuilder::class);
|
||||
|
||||
$locator = new FileLocator($this, $this->getRootDir() . '/Resources');
|
||||
$resolver = new LoaderResolver(array(
|
||||
new XmlFileLoader($container, $locator),
|
||||
new YamlFileLoader($container, $locator),
|
||||
new IniFileLoader($container, $locator),
|
||||
new PhpFileLoader($container, $locator),
|
||||
new GlobFileLoader($container, $locator),
|
||||
new DirectoryLoader($container, $locator),
|
||||
new ClosureLoader($container),
|
||||
));
|
||||
|
||||
return new DelegatingLoader($resolver);
|
||||
}
|
||||
|
||||
private function isTestEnvironment(): bool
|
||||
{
|
||||
return 0 === strpos($this->getEnvironment(), 'test');
|
||||
}
|
||||
|
||||
private function loadContainerConfiguration(LoaderInterface $loader, string $confDir): void
|
||||
{
|
||||
$loader->load($confDir . '/{packages}/*' . self::CONFIG_EXTS, 'glob');
|
||||
$loader->load($confDir . '/{packages}/' . $this->environment . '/**/*' . self::CONFIG_EXTS, 'glob');
|
||||
$loader->load($confDir . '/{services}' . self::CONFIG_EXTS, 'glob');
|
||||
$loader->load($confDir . '/{services}_' . $this->environment . self::CONFIG_EXTS, 'glob');
|
||||
}
|
||||
|
||||
private function loadRoutesConfiguration(RouteCollectionBuilder $routes, string $confDir): void
|
||||
{
|
||||
$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');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return BundleInterface[]
|
||||
*/
|
||||
private function registerBundlesFromFile(string $bundlesFile): iterable
|
||||
{
|
||||
$contents = require $bundlesFile;
|
||||
foreach ($contents as $class => $envs) {
|
||||
if (isset($envs['all']) || isset($envs[$this->environment])) {
|
||||
yield new $class();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
private function getConfigurationDirectories(): iterable
|
||||
{
|
||||
yield $this->getProjectDir() . '/config';
|
||||
$syliusConfigDir = $this->getProjectDir() . '/config/sylius/' . SyliusKernel::MAJOR_VERSION . '.' . SyliusKernel::MINOR_VERSION;
|
||||
if (is_dir($syliusConfigDir)) {
|
||||
yield $syliusConfigDir;
|
||||
}
|
||||
$symfonyConfigDir = $this->getProjectDir() . '/config/symfony/' . BaseKernel::MAJOR_VERSION . '.' . BaseKernel::MINOR_VERSION;
|
||||
if (is_dir($symfonyConfigDir)) {
|
||||
yield $symfonyConfigDir;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
8
tests/Application/config/bootstrap.php
Executable file → Normal file
8
tests/Application/config/bootstrap.php
Executable file → Normal file
@@ -1,21 +1,23 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Symfony\Component\Dotenv\Dotenv;
|
||||
|
||||
require dirname(__DIR__).'../../../vendor/autoload.php';
|
||||
|
||||
// Load cached env vars if the .env.local.php file exists
|
||||
// Run "composer dump-env prod" to create it (requires symfony/flex >=1.2)
|
||||
if (is_array($env = @include dirname(__DIR__).'/.env.local.php')) {
|
||||
if (is_array($env = @include dirname(__DIR__) . '/.env.local.php')) {
|
||||
$_SERVER += $env;
|
||||
$_ENV += $env;
|
||||
} elseif (!class_exists(Dotenv::class)) {
|
||||
throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.');
|
||||
} else {
|
||||
// load all the .env files
|
||||
(new Dotenv())->loadEnv(dirname(__DIR__).'/.env');
|
||||
(new Dotenv(true))->loadEnv(dirname(__DIR__) . '/.env');
|
||||
}
|
||||
|
||||
$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev';
|
||||
$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV'];
|
||||
$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0';
|
||||
$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], \FILTER_VALIDATE_BOOLEAN) ? '1' : '0';
|
||||
|
||||
9
tests/Application/config/bundles.php
Executable file → Normal file
9
tests/Application/config/bundles.php
Executable file → Normal file
@@ -7,7 +7,6 @@ return [
|
||||
Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle::class => ['all' => true],
|
||||
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
|
||||
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
|
||||
Doctrine\Bundle\DoctrineCacheBundle\DoctrineCacheBundle::class => ['all' => true],
|
||||
Sylius\Bundle\OrderBundle\SyliusOrderBundle::class => ['all' => true],
|
||||
Sylius\Bundle\MoneyBundle\SyliusMoneyBundle::class => ['all' => true],
|
||||
Sylius\Bundle\CurrencyBundle\SyliusCurrencyBundle::class => ['all' => true],
|
||||
@@ -40,12 +39,10 @@ return [
|
||||
Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true],
|
||||
Payum\Bundle\PayumBundle\PayumBundle::class => ['all' => true],
|
||||
Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle::class => ['all' => true],
|
||||
WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle::class => ['all' => true],
|
||||
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
|
||||
Sylius\Bundle\FixturesBundle\SyliusFixturesBundle::class => ['all' => true],
|
||||
Sylius\Bundle\PayumBundle\SyliusPayumBundle::class => ['all' => true],
|
||||
Sylius\Bundle\ThemeBundle\SyliusThemeBundle::class => ['all' => true],
|
||||
Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['all' => true],
|
||||
Sylius\Bundle\AdminBundle\SyliusAdminBundle::class => ['all' => true],
|
||||
Sylius\Bundle\ShopBundle\SyliusShopBundle::class => ['all' => true],
|
||||
FOS\OAuthServerBundle\FOSOAuthServerBundle::class => ['all' => true],
|
||||
@@ -55,4 +52,10 @@ return [
|
||||
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true, 'test_cached' => true],
|
||||
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true, 'test_cached' => true],
|
||||
FriendsOfBehat\SymfonyExtension\Bundle\FriendsOfBehatSymfonyExtensionBundle::class => ['test' => true, 'test_cached' => true],
|
||||
Sylius\Behat\Application\SyliusTestPlugin\SyliusTestPlugin::class => ['test' => true, 'test_cached' => true],
|
||||
ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true],
|
||||
Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle::class => ['all' => true],
|
||||
Sylius\Bundle\ApiBundle\SyliusApiBundle::class => ['all' => true],
|
||||
SyliusLabs\DoctrineMigrationsExtraBundle\SyliusLabsDoctrineMigrationsExtraBundle::class => ['all' => true],
|
||||
Symplify\ConsoleColorDiff\ConsoleColorDiffBundle::class => ['dev' => true, 'test' => true],
|
||||
];
|
||||
|
||||
54
tests/Application/config/jwt/private.pem
Normal file
54
tests/Application/config/jwt/private.pem
Normal file
@@ -0,0 +1,54 @@
|
||||
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
||||
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
|
||||
-----END ENCRYPTED PRIVATE KEY-----
|
||||
14
tests/Application/config/jwt/public.pem
Normal file
14
tests/Application/config/jwt/public.pem
Normal file
@@ -0,0 +1,14 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6QkmF/Xi5nAYb8Kzr7qC
|
||||
d63V2K+d/nCXbpDUKKDPJAqOtTlMoQSuJRLNnhhp7z1i/Cp4Bhifr20Pu2dq8JYg
|
||||
6pRT4ctqvYb/MXxAaPZc3EcBC0S6AhgKO/fDvR3LcqYqGJmQQOXZvxTsgqongdvV
|
||||
4XbqFBMMgngyayoBk0VKTaI/s+LQhIce+1QaxbAI0+/zbR0hZ1hWT73orJi3do+1
|
||||
TBzQol+V7WGa8LlJfmgM56qO3BmVkeTDMBc27pGp6g3+Oufk/l29jEGJlUT9yu7Q
|
||||
BRhaQTWNVASa2aD+AKjVBzJh53O2zD8slAbjF1M9U7bbWN28Sv+xC/dUz0q9HnPu
|
||||
RsY2tnwryqTyYn/Hf2xyP3/KvjJ6oslAwemu5JirdJkO7KVQAthWG42gLuhZg3ks
|
||||
cSZhCLZH7nO2UDsf+2ZZgdbhpYZwR4gDRfNt7GKWXnWZOz9Uw1yVCPgylyZRZwg8
|
||||
l0y9aABdj3379I22icrwpMZbAgkyxNSV6UNJuxZksLUoP3i9OvXYgPYU9E4tU/Ul
|
||||
Dm/T1rGSReGoPkU1YQnI50bq7p1byIoUu2scTflvpTVI5a7zULkS1tg60xk7vBRC
|
||||
aBc7nr4UEtA235N6uLtcGxH11WBMwsKX69sSU0sQdC4Sk25zXM2gc8R1XV9K3qz2
|
||||
wQorQRlCwrkG44VRDgbFH+8CAwEAAQ==
|
||||
-----END PUBLIC KEY-----
|
||||
2
tests/Application/config/packages/_sylius.yaml
Executable file → Normal file
2
tests/Application/config/packages/_sylius.yaml
Executable file → Normal file
@@ -6,6 +6,8 @@ imports:
|
||||
|
||||
- { resource: "@SyliusShopBundle/Resources/config/app/config.yml" }
|
||||
|
||||
- { resource: "@SyliusApiBundle/Resources/config/app/config.yaml" }
|
||||
|
||||
parameters:
|
||||
sylius_core.public_dir: '%kernel.project_dir%/public'
|
||||
|
||||
|
||||
7
tests/Application/config/packages/doctrine_migrations.yaml
Executable file → Normal file
7
tests/Application/config/packages/doctrine_migrations.yaml
Executable file → Normal file
@@ -1,5 +1,4 @@
|
||||
doctrine_migrations:
|
||||
dir_name: "%kernel.project_dir%/src/Migrations"
|
||||
|
||||
# Namespace is arbitrary but should be different from App\Migrations as migrations classes should NOT be autoloaded
|
||||
namespace: DoctrineMigrations
|
||||
storage:
|
||||
table_storage:
|
||||
table_name: sylius_migrations
|
||||
|
||||
1
tests/Application/config/packages/framework.yaml
Executable file → Normal file
1
tests/Application/config/packages/framework.yaml
Executable file → Normal file
@@ -2,6 +2,5 @@ framework:
|
||||
secret: '%env(APP_SECRET)%'
|
||||
form: true
|
||||
csrf_protection: true
|
||||
templating: { engines: ["twig"] }
|
||||
session:
|
||||
handler_id: ~
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
lexik_jwt_authentication:
|
||||
secret_key: '%env(resolve:JWT_SECRET_KEY)%'
|
||||
public_key: '%env(resolve:JWT_PUBLIC_KEY)%'
|
||||
pass_phrase: '%env(JWT_PASSPHRASE)%'
|
||||
54
tests/Application/config/packages/security.yaml
Executable file → Normal file
54
tests/Application/config/packages/security.yaml
Executable file → Normal file
@@ -1,16 +1,27 @@
|
||||
parameters:
|
||||
sylius.security.admin_regex: "^/admin"
|
||||
sylius.security.api_regex: "^/api"
|
||||
sylius.security.shop_regex: "^/(?!admin|api/.*|api$|media/.*)[^/]++"
|
||||
sylius.security.shop_regex: "^/(?!admin|new-api|api/.*|api$|media/.*)[^/]++"
|
||||
sylius.security.new_api_route: "/new-api"
|
||||
sylius.security.new_api_regex: "^%sylius.security.new_api_route%"
|
||||
|
||||
security:
|
||||
always_authenticate_before_granting: true
|
||||
providers:
|
||||
sylius_admin_user_provider:
|
||||
id: sylius.admin_user_provider.email_or_name_based
|
||||
sylius_api_admin_user_provider:
|
||||
id: sylius.admin_user_provider.email_or_name_based
|
||||
sylius_shop_user_provider:
|
||||
id: sylius.shop_user_provider.email_or_name_based
|
||||
sylius_api_shop_user_provider:
|
||||
id: sylius.shop_user_provider.email_or_name_based
|
||||
sylius_api_chain_provider:
|
||||
chain:
|
||||
providers: [sylius_api_shop_user_provider, sylius_api_admin_user_provider]
|
||||
|
||||
encoders:
|
||||
Sylius\Component\User\Model\UserInterface: sha512
|
||||
Sylius\Component\User\Model\UserInterface: argon2i
|
||||
firewalls:
|
||||
admin:
|
||||
switch_user: true
|
||||
@@ -43,6 +54,45 @@ security:
|
||||
pattern: "%sylius.security.api_regex%/oauth/v2/token"
|
||||
security: false
|
||||
|
||||
new_api_admin_user:
|
||||
pattern: "%sylius.security.new_api_route%/admin-user-authentication-token"
|
||||
provider: sylius_admin_user_provider
|
||||
stateless: true
|
||||
anonymous: true
|
||||
json_login:
|
||||
check_path: "%sylius.security.new_api_route%/admin-user-authentication-token"
|
||||
username_path: email
|
||||
password_path: password
|
||||
success_handler: lexik_jwt_authentication.handler.authentication_success
|
||||
failure_handler: lexik_jwt_authentication.handler.authentication_failure
|
||||
guard:
|
||||
authenticators:
|
||||
- lexik_jwt_authentication.jwt_token_authenticator
|
||||
|
||||
new_api_shop_user:
|
||||
pattern: "%sylius.security.new_api_route%/shop-user-authentication-token"
|
||||
provider: sylius_shop_user_provider
|
||||
stateless: true
|
||||
anonymous: true
|
||||
json_login:
|
||||
check_path: "%sylius.security.new_api_route%/shop-user-authentication-token"
|
||||
username_path: email
|
||||
password_path: password
|
||||
success_handler: lexik_jwt_authentication.handler.authentication_success
|
||||
failure_handler: lexik_jwt_authentication.handler.authentication_failure
|
||||
guard:
|
||||
authenticators:
|
||||
- lexik_jwt_authentication.jwt_token_authenticator
|
||||
|
||||
new_api:
|
||||
pattern: "%sylius.security.new_api_regex%/*"
|
||||
provider: sylius_api_chain_provider
|
||||
stateless: true
|
||||
anonymous: lazy
|
||||
guard:
|
||||
authenticators:
|
||||
- lexik_jwt_authentication.jwt_token_authenticator
|
||||
|
||||
api:
|
||||
pattern: "%sylius.security.api_regex%/.*"
|
||||
provider: sylius_admin_user_provider
|
||||
|
||||
3
tests/Application/config/packages/test/security.yaml
Normal file
3
tests/Application/config/packages/test/security.yaml
Normal file
@@ -0,0 +1,3 @@
|
||||
security:
|
||||
encoders:
|
||||
sha512: sha512
|
||||
@@ -0,0 +1,3 @@
|
||||
services:
|
||||
Sylius\Component\Core\Generator\ImagePathGeneratorInterface:
|
||||
class: Sylius\Behat\Service\Generator\UploadedImagePathGenerator
|
||||
@@ -0,0 +1,3 @@
|
||||
security:
|
||||
encoders:
|
||||
sha512: sha512
|
||||
@@ -0,0 +1,2 @@
|
||||
imports:
|
||||
- { resource: "../test/sylius_uploader.yaml" }
|
||||
3
tests/Application/config/routes/sylius_api.yaml
Normal file
3
tests/Application/config/routes/sylius_api.yaml
Normal file
@@ -0,0 +1,3 @@
|
||||
sylius_api:
|
||||
resource: "@SyliusApiBundle/Resources/config/routing.yml"
|
||||
prefix: "%sylius.security.new_api_route%"
|
||||
2
tests/Application/config/routes/sylius_shop.yaml
Executable file → Normal file
2
tests/Application/config/routes/sylius_shop.yaml
Executable file → Normal file
@@ -2,7 +2,7 @@ sylius_shop:
|
||||
resource: "@SyliusShopBundle/Resources/config/routing.yml"
|
||||
prefix: /{_locale}
|
||||
requirements:
|
||||
_locale: ^[a-z]{2}(?:_[A-Z]{2})?$
|
||||
_locale: ^[A-Za-z]{2,4}(_([A-Za-z]{4}|[0-9]{3}))?(_([A-Za-z]{2}|[0-9]{3}))?$
|
||||
|
||||
sylius_shop_payum:
|
||||
resource: "@SyliusShopBundle/Resources/config/routing/payum.yml"
|
||||
|
||||
5
tests/Application/config/routes/test/routing.yaml
Normal file
5
tests/Application/config/routes/test/routing.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
sylius_test_plugin_main:
|
||||
path: /test/main
|
||||
controller: FrameworkBundle:Template:template
|
||||
defaults:
|
||||
template: "@SyliusTestPlugin/main.html.twig"
|
||||
@@ -0,0 +1,5 @@
|
||||
sylius_test_plugin_main:
|
||||
path: /test/main
|
||||
controller: FrameworkBundle:Template:template
|
||||
defaults:
|
||||
template: "@SyliusTestPlugin/main.html.twig"
|
||||
5
tests/Application/config/routes/test_cached/routing.yaml
Normal file
5
tests/Application/config/routes/test_cached/routing.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
sylius_test_plugin_main:
|
||||
path: /test/main
|
||||
controller: FrameworkBundle:Template:template
|
||||
defaults:
|
||||
template: "@SyliusTestPlugin/main.html.twig"
|
||||
@@ -0,0 +1,5 @@
|
||||
sylius_test_plugin_main:
|
||||
path: /test/main
|
||||
controller: FrameworkBundle:Template:template
|
||||
defaults:
|
||||
template: "@SyliusTestPlugin/main.html.twig"
|
||||
5
tests/Application/config/services_test.yaml
Executable file → Normal file
5
tests/Application/config/services_test.yaml
Executable file → Normal file
@@ -1,3 +1,8 @@
|
||||
imports:
|
||||
- { resource: "../../Behat/Resources/services.xml" }
|
||||
- { resource: "../../../vendor/sylius/sylius/src/Sylius/Behat/Resources/config/services.xml" }
|
||||
|
||||
# workaround needed for strange "test.client.history" problem
|
||||
# see https://github.com/FriendsOfBehat/SymfonyExtension/issues/88
|
||||
services:
|
||||
Symfony\Component\BrowserKit\AbstractBrowser: '@test.client'
|
||||
|
||||
2
tests/Application/config/services_test_cached.yaml
Normal file
2
tests/Application/config/services_test_cached.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
imports:
|
||||
- { resource: "services_test.yaml" }
|
||||
6
tests/Application/config/sylius/1.8/bundles.php
Normal file
6
tests/Application/config/sylius/1.8/bundles.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
Doctrine\Bundle\DoctrineCacheBundle\DoctrineCacheBundle::class => ['all' => true],
|
||||
WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle::class => ['all' => true],
|
||||
];
|
||||
0
tests/Application/config/packages/dev/jms_serializer.yaml → tests/Application/config/sylius/1.8/packages/dev/jms_serializer.yaml
Executable file → Normal file
0
tests/Application/config/packages/dev/jms_serializer.yaml → tests/Application/config/sylius/1.8/packages/dev/jms_serializer.yaml
Executable file → Normal file
0
tests/Application/config/packages/jms_serializer.yaml → tests/Application/config/sylius/1.8/packages/jms_serializer.yaml
Executable file → Normal file
0
tests/Application/config/packages/jms_serializer.yaml → tests/Application/config/sylius/1.8/packages/jms_serializer.yaml
Executable file → Normal file
3
tests/Application/config/sylius/1.8/routes/dev/twig.yaml
Normal file
3
tests/Application/config/sylius/1.8/routes/dev/twig.yaml
Normal file
@@ -0,0 +1,3 @@
|
||||
_errors:
|
||||
resource: '@TwigBundle/Resources/config/routing/errors.xml'
|
||||
prefix: /_error
|
||||
6
tests/Application/config/sylius/1.9/bundles.php
Normal file
6
tests/Application/config/sylius/1.9/bundles.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
BabDev\PagerfantaBundle\BabDevPagerfantaBundle::class => ['all' => true],
|
||||
SyliusLabs\Polyfill\Symfony\Security\Bundle\SyliusLabsPolyfillSymfonySecurityBundle::class => ['all' => true],
|
||||
];
|
||||
@@ -0,0 +1,12 @@
|
||||
jms_serializer:
|
||||
visitors:
|
||||
json_serialization:
|
||||
options:
|
||||
- JSON_PRETTY_PRINT
|
||||
- JSON_UNESCAPED_SLASHES
|
||||
- JSON_PRESERVE_ZERO_FRACTION
|
||||
json_deserialization:
|
||||
options:
|
||||
- JSON_PRETTY_PRINT
|
||||
- JSON_UNESCAPED_SLASHES
|
||||
- JSON_PRESERVE_ZERO_FRACTION
|
||||
@@ -0,0 +1,4 @@
|
||||
jms_serializer:
|
||||
visitors:
|
||||
xml_serialization:
|
||||
format_output: '%kernel.debug%'
|
||||
@@ -0,0 +1,10 @@
|
||||
jms_serializer:
|
||||
visitors:
|
||||
json_serialization:
|
||||
options:
|
||||
- JSON_UNESCAPED_SLASHES
|
||||
- JSON_PRESERVE_ZERO_FRACTION
|
||||
json_deserialization:
|
||||
options:
|
||||
- JSON_UNESCAPED_SLASHES
|
||||
- JSON_PRESERVE_ZERO_FRACTION
|
||||
@@ -0,0 +1,2 @@
|
||||
framework:
|
||||
templating: { engines: ["twig"] }
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Tests\BitBag\SyliusElasticsearchPlugin\Application\Kernel;
|
||||
use Symfony\Component\Debug\Debug;
|
||||
use Symfony\Component\ErrorHandler\Debug;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
require dirname(__DIR__).'/config/bootstrap.php';
|
||||
|
||||
@@ -13,20 +13,20 @@ declare(strict_types=1);
|
||||
namespace Tests\BitBag\SyliusElasticsearchPlugin\Behat\Context\Api\Shop;
|
||||
|
||||
use Behat\Behat\Context\Context;
|
||||
use Symfony\Component\BrowserKit\Client;
|
||||
use Symfony\Component\BrowserKit\AbstractBrowser;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\RouterInterface;
|
||||
use Webmozart\Assert\Assert;
|
||||
|
||||
final class ProductContext implements Context
|
||||
{
|
||||
/** @var Client */
|
||||
/** @var AbstractBrowser */
|
||||
private $client;
|
||||
|
||||
/** @var RouterInterface */
|
||||
private $router;
|
||||
|
||||
public function __construct(Client $client, RouterInterface $router)
|
||||
public function __construct(AbstractBrowser $client, RouterInterface $router)
|
||||
{
|
||||
$this->client = $client;
|
||||
$this->router = $router;
|
||||
|
||||
@@ -13,7 +13,7 @@ declare(strict_types=1);
|
||||
namespace Tests\BitBag\SyliusElasticsearchPlugin\Behat\Context\Setup;
|
||||
|
||||
use Behat\Behat\Context\Context;
|
||||
use Doctrine\Common\Persistence\ObjectManager;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Sylius\Behat\Service\SharedStorageInterface;
|
||||
use Sylius\Component\Attribute\Factory\AttributeFactoryInterface;
|
||||
use Sylius\Component\Core\Formatter\StringInflector;
|
||||
@@ -37,7 +37,7 @@ final class ProductAttributeContext implements Context
|
||||
/** @var FactoryInterface */
|
||||
private $productAttributeValueFactory;
|
||||
|
||||
/** @var ObjectManager */
|
||||
/** @var EntityManagerInterface */
|
||||
private $objectManager;
|
||||
|
||||
/** @var \Faker\Generator */
|
||||
@@ -48,7 +48,7 @@ final class ProductAttributeContext implements Context
|
||||
RepositoryInterface $productAttributeRepository,
|
||||
AttributeFactoryInterface $productAttributeFactory,
|
||||
FactoryInterface $productAttributeValueFactory,
|
||||
ObjectManager $objectManager
|
||||
EntityManagerInterface $objectManager
|
||||
) {
|
||||
$this->sharedStorage = $sharedStorage;
|
||||
$this->productAttributeRepository = $productAttributeRepository;
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace Tests\BitBag\SyliusElasticsearchPlugin\Behat\Context\Setup;
|
||||
|
||||
use Behat\Behat\Context\Context;
|
||||
use Behat\Gherkin\Node\PyStringNode;
|
||||
use Doctrine\Common\Persistence\ObjectManager;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Sylius\Behat\Service\SharedStorageInterface;
|
||||
use Sylius\Component\Core\Formatter\StringInflector;
|
||||
use Sylius\Component\Core\Model\ChannelInterface;
|
||||
@@ -49,7 +49,7 @@ final class ProductContext implements Context
|
||||
/** @var FactoryInterface */
|
||||
private $productOptionValueFactory;
|
||||
|
||||
/** @var ObjectManager */
|
||||
/** @var EntityManagerInterface */
|
||||
private $objectManager;
|
||||
|
||||
/** @var ProductVariantResolverInterface */
|
||||
@@ -68,7 +68,7 @@ final class ProductContext implements Context
|
||||
FactoryInterface $channelPricingFactory,
|
||||
FactoryInterface $productOptionFactory,
|
||||
FactoryInterface $productOptionValueFactory,
|
||||
ObjectManager $objectManager,
|
||||
EntityManagerInterface $objectManager,
|
||||
ProductVariantResolverInterface $defaultVariantResolver,
|
||||
SlugGeneratorInterface $slugGenerator
|
||||
) {
|
||||
|
||||
@@ -13,7 +13,7 @@ declare(strict_types=1);
|
||||
namespace Tests\BitBag\SyliusElasticsearchPlugin\Behat\Context\Setup;
|
||||
|
||||
use Behat\Behat\Context\Context;
|
||||
use Doctrine\Common\Persistence\ObjectManager;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Sylius\Behat\Service\SharedStorageInterface;
|
||||
use Sylius\Component\Core\Model\ProductInterface;
|
||||
use Sylius\Component\Core\Model\ProductTaxonInterface;
|
||||
@@ -28,13 +28,13 @@ final class ProductTaxonContext implements Context
|
||||
/** @var FactoryInterface */
|
||||
private $productTaxonFactory;
|
||||
|
||||
/** @var ObjectManager */
|
||||
/** @var EntityManagerInterface */
|
||||
private $objectManager;
|
||||
|
||||
public function __construct(
|
||||
SharedStorageInterface $sharedStorage,
|
||||
FactoryInterface $productTaxonFactory,
|
||||
ObjectManager $objectManager
|
||||
EntityManagerInterface $objectManager
|
||||
) {
|
||||
$this->sharedStorage = $sharedStorage;
|
||||
$this->productTaxonFactory = $productTaxonFactory;
|
||||
|
||||
Reference in New Issue
Block a user