diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 92faea2..0000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -* @Sylius/core-team diff --git a/.gitignore b/.gitignore index 07229a6..98c18d0 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,8 @@ /behat.yml /phpspec.yml + +/package-lock.json + +/.php-version +/.phpunit.result.cache diff --git a/.travis.yml b/.travis.yml index 44edbaf..0b44fd7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,6 @@ sudo: false php: - '7.2' - - '7.3' cache: yarn: true @@ -18,7 +17,6 @@ env: global: - APP_ENV=test - SYLIUS_CACHE_DIR=$HOME/.sylius-cache - - SYLIUS_BUILD_DIR=etc/build before_install: - phpenv config-rm xdebug.ini @@ -30,48 +28,23 @@ install: - (cd tests/Application && yarn install) before_script: + - ln -s tests/Application/node_modules node_modules - (cd tests/Application && bin/console doctrine:database:create -vvv) - (cd tests/Application && bin/console doctrine:schema:create -vvv) - (cd tests/Application && bin/console assets:install public -vvv) - (cd tests/Application && bin/console cache:warmup -vvv) - (cd tests/Application && yarn build) - # Configure display - - /sbin/start-stop-daemon --start --quiet --pidfile /tmp/xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1680x1050x16 - - export DISPLAY=:99 - - # Download and configure ChromeDriver - - | - if [ ! -f $SYLIUS_CACHE_DIR/chromedriver ] || [ "$($SYLIUS_CACHE_DIR/chromedriver --version | grep -c 2.34)" = "0" ]; then - curl http://chromedriver.storage.googleapis.com/2.34/chromedriver_linux64.zip > chromedriver.zip - unzip chromedriver.zip - chmod +x chromedriver - mv chromedriver $SYLIUS_CACHE_DIR - fi - - # Run ChromeDriver - - $SYLIUS_CACHE_DIR/chromedriver > /dev/null 2>&1 & - - # Download and configure Selenium - - | - if [ ! -f $SYLIUS_CACHE_DIR/selenium.jar ] || [ "$(java -jar $SYLIUS_CACHE_DIR/selenium.jar --version | grep -c 3.4.0)" = "0" ]; then - curl http://selenium-release.storage.googleapis.com/3.4/selenium-server-standalone-3.4.0.jar > selenium.jar - mv selenium.jar $SYLIUS_CACHE_DIR - fi - - # Run Selenium - - java -Dwebdriver.chrome.driver=$SYLIUS_CACHE_DIR/chromedriver -jar $SYLIUS_CACHE_DIR/selenium.jar > /dev/null 2>&1 & - # Run webserver - (cd tests/Application && bin/console server:run 127.0.0.1:8080 --quiet > /dev/null 2>&1 &) script: - - composer validate - - vendor/bin/phpstan analyse -c phpstan.neon -l max src/ + - composer validate --strict + - vendor/bin/phpstan analyse -c phpstan.neon src/ - vendor/bin/phpunit - vendor/bin/phpspec run - - vendor/bin/behat --strict -vvv --no-interaction || vendor/bin/behat --strict -vvv --no-interaction --rerun -after_failure: - - vendor/lakion/mink-debug-extension/travis/tools/upload-textfiles "${SYLIUS_BUILD_DIR}/*.log" +branches: + only: + - master diff --git a/LICENCE.txt b/LICENCE.txt new file mode 100644 index 0000000..bae1c61 --- /dev/null +++ b/LICENCE.txt @@ -0,0 +1,7 @@ +Copyright 2020 Monsieur Biz + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 79aa5bc..7039ee1 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,39 @@ -# Monsieur Biz Sylius sales report plugin +

+ + + +      + + + +

-## Install +

Sales Reports

- Without symfony binary : - -`composer require monsieurbiz/sylius-sales-reports-plugin=dev-master` - - With symfony binary : - -`symfony composer require monsieurbiz/sylius-sales-reports-plugin=dev-master` +[![Sales Reports Plugin license](https://img.shields.io/github/license/monsieurbiz/SyliusSalesReportsPlugin)](https://github.com/monsieurbiz/SyliusSalesReportsPlugin/blob/master/LICENSE.txt) +[![Build Status](https://travis-ci.com/monsieurbiz/SyliusSalesReportsPlugin.svg?branch=master)](https://travis-ci.com/monsieurbiz/SyliusSalesReportsPlugin) +[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/monsieurbiz/SyliusSalesReportsPlugin/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/monsieurbiz/SyliusSalesReportsPlugin/?branch=master) -> We will make tagged release when the plugin development will be ended. Use it carefully until this moment +A simple plugin to have sales reports in Sylius -## Configure - -Edit your `config/bundles.php` to add this line : +## Installation +```bash +`composer require monsieurbiz/sylius-sales-reports-plugin ``` + +Change your `config/bundles.php` file to add the line for the plugin : + +```php + ['all' => true], -``` +]; +``` -Import plugin config in `config/packages/monsieur_biz_sales_reports_plugin.yaml` : +Then create the config file in `config/packages/monsieur_biz_sales_reports_plugin.yaml` : ```yaml imports: @@ -28,9 +41,14 @@ imports: ``` -Import plugin routing in `config/routes.yaml` : +Finally import the routes in `config/routes.yaml` : ```yaml monsieur_biz_sales_reports_plugin: resource: "@MonsieurBizSyliusSalesReportsPlugin/Resources/config/routing.yaml" ``` + +## Contributing + +You can open an issue or a Pull Request if you want! 😘 +Thank you! diff --git a/TESTING.md b/TESTING.md new file mode 100644 index 0000000..ae0583d --- /dev/null +++ b/TESTING.md @@ -0,0 +1,55 @@ +# Testing + +## Installation + +1. From the plugin root directory, run the following commands: + + ```bash + $ (cd tests/Application && yarn install) + $ (cd tests/Application && yarn build) + $ (cd tests/Application && bin/console assets:install public -e test) + + $ (cd tests/Application && bin/console doctrine:database:create -e test) + $ (cd tests/Application && bin/console doctrine:schema:create -e test) + ``` + +To be able to setup the plugin's database, remember to configure your database credentials in `tests/Application/.env` +and `tests/Application/.env.test`. You can also add custom configuration in `tests/Application/.env.test.local`. + +## Usage + +### Running plugin tests + + - PHPUnit + + ```bash + $ vendor/bin/phpunit + ``` + + - PHPSpec + + ```bash + $ vendor/bin/phpspec run + ``` + + - PHPStan + + ```bash + $ vendor/bin/phpstan analyse src + ``` + +### Opening Sylius with the plugin + +- Using `test` environment: + + ```bash + $ (cd tests/Application && bin/console sylius:fixtures:load -e test) + $ (cd tests/Application && bin/console server:run -d public -e test) + ``` + +- Using `dev` environment: + + ```bash + $ (cd tests/Application && bin/console sylius:fixtures:load -e dev) + $ (cd tests/Application && bin/console server:run -d public -e dev) + ``` diff --git a/UPGRADE-1.3.md b/UPGRADE-1.3.md deleted file mode 100644 index 9fd4141..0000000 --- a/UPGRADE-1.3.md +++ /dev/null @@ -1,28 +0,0 @@ -# UPGRADE FROM `v1.2.X` TO `v1.3.0` - -## Application - -* Run `composer require sylius/sylius:~1.3.0 --no-update` - -* Add the following code in your `behat.yml(.dist)` file: - - ```yaml - default: - extensions: - FriendsOfBehat\SymfonyExtension: - env_file: ~ - ``` - -* Incorporate changes from the following files into plugin's test application: - - * [`tests/Application/package.json`](https://github.com/Sylius/PluginSkeleton/blob/1.3/tests/Application/package.json) ([see diff](https://github.com/Sylius/PluginSkeleton/pull/134/files#diff-726e1353c14df7d91379c0dea6b30eef)) - * [`tests/Application/.babelrc`](https://github.com/Sylius/PluginSkeleton/blob/1.3/tests/Application/.babelrc) ([see diff](https://github.com/Sylius/PluginSkeleton/pull/134/files#diff-a2527d9d8ad55460b2272274762c9386)) - * [`tests/Application/.eslintrc.js`](https://github.com/Sylius/PluginSkeleton/blob/1.3/tests/Application/.eslintrc.js) ([see diff](https://github.com/Sylius/PluginSkeleton/pull/134/files#diff-396c8c412b119deaa7dd84ae28ae04ca)) - -* Update PHP and JS dependencies by running `composer update` and `(cd tests/Application && yarn upgrade)` - -* Clear cache by running `(cd tests/Application && bin/console cache:clear)` - -* Install assets by `(cd tests/Application && bin/console assets:install web)` and `(cd tests/Application && yarn build)` - -* optionally, remove the build for PHP 7.1. in `.travis.yml` diff --git a/UPGRADE-1.4.md b/UPGRADE-1.4.md deleted file mode 100644 index dc84cad..0000000 --- a/UPGRADE-1.4.md +++ /dev/null @@ -1,86 +0,0 @@ -# UPGRADE FROM `v1.3.X` TO `v1.4.0` - -First step is upgrading Sylius with composer - -- `composer require sylius/sylius:~1.4.0` - -### Test application database - -#### Migrations - -If you provide migrations with your plugin, take a look at following changes: - -* Change base `AbstractMigration` namespace to `Doctrine\Migrations\AbstractMigration` -* Add `: void` return types to both `up` and `down` functions - -#### Schema update - -If you don't use migrations, just run `(cd tests/Application && bin/console doctrine:schema:update --force)` to update the test application's database schema. - -### Dotenv - -* `composer require symfony/dotenv:^4.2 --dev` -* Follow [Symfony dotenv update guide](https://symfony.com/doc/current/configuration/dot-env-changes.html) to incorporate required changes in `.env` files structure. Remember - they should be done on `tests/Application/` level! Optionally, you can take a look at [corresponding PR](https://github.com/Sylius/PluginSkeleton/pull/156/) introducing these changes in **PluginSkeleton** (this PR also includes changes with Behat - see below) - -Don't forget to clear the cache (`tests/Application/bin/console cache:clear`) to be 100% everything is loaded properly. - ---- - -### Behat - -If you're using Behat and want to be up-to-date with our configuration - -* Update required extensions with `composer require friends-of-behat/symfony-extension:^2.0 friends-of-behat/page-object-extension:^0.3 --dev` -* Remove extensions that are not needed yet with `composer remove friends-of-behat/context-service-extension friends-of-behat/cross-container-extension friends-of-behat/service-container-extension --dev` -* Update your `behat.yml` - look at the diff [here](https://github.com/Sylius/Sylius-Standard/pull/322/files#diff-7bde54db60a6e933518d8b61b929edce) -* Add `SymfonyExtensionBundle` to your `tests/Application/config/bundles.php`: - ```php - return [ - //... - FriendsOfBehat\SymfonyExtension\Bundle\FriendsOfBehatSymfonyExtensionBundle::class => ['test' => true, 'test_cached' => true], - ]; - ``` -* If you use our Travis CI configuration, follow [these changes](https://github.com/Sylius/PluginSkeleton/pull/156/files#diff-354f30a63fb0907d4ad57269548329e3) introduced in `.travis.yml` file -* Create `tests/Application/config/services_test.yaml` file with the following code and add these your own Behat services as well: - ```yaml - imports: - - { resource: "../../../vendor/sylius/sylius/src/Sylius/Behat/Resources/config/services.xml" } - ``` -* Remove all `__symfony__` prefixes in your Behat services -* Remove all `` tags from your Behat services -* Make your Behat services public by default with `` -* Change `contexts_services ` in your suite definitions to `contexts` -* Take a look at [SymfonyExtension UPGRADE guide](https://github.com/FriendsOfBehat/SymfonyExtension/blob/master/UPGRADE-2.0.md) if you have any more problems - -### Phpstan - -* Fix the container XML path parameter in the `phpstan.neon` file as done [here](https://github.com/Sylius/PluginSkeleton/commit/37fa614dbbcf8eb31b89eaf202b4bd4d89a5c7b3) - -# UPGRADE FROM `v1.2.X` TO `v1.4.0` - -Firstly, check out the [PluginSkeleton 1.3 upgrade guide](https://github.com/Sylius/PluginSkeleton/blob/1.4/UPGRADE-1.3.md) to update Sylius version step by step. -To upgrade to Sylius 1.4 follow instructions from [the previous section](https://github.com/Sylius/PluginSkeleton/blob/1.4/UPGRADE-1.4.md#upgrade-from-v13x-to-v140) with following changes: - -### Doctrine migrations - -* Change namespaces of copied migrations to `Sylius\Migrations` - -### Dotenv - -* These changes are not required, but can be done as well, if you've changed application directory structure in `1.2.x` to `1.3` update - -### Behat - -* Add `\FriendsOfBehat\SymfonyExtension\Bundle\FriendsOfBehatSymfonyExtensionBundle()` to your bundles lists in `tests/Application/AppKernel.php` (preferably only in `test` environment) -* Import Sylius Behat services in `tests/Application/config/config_test.yml` and your own Behat services as well: - ```yaml - imports: - - { resource: "../../../../vendor/sylius/sylius/src/Sylius/Behat/Resources/config/services.xml" } - ``` -* Specify test application's kernel path in `behat.yml`: - ```yaml - FriendsOfBehat\SymfonyExtension: - kernel: - class: AppKernel - path: tests/Application/app/AppKernel.php - ``` diff --git a/behat.yml.dist b/behat.yml.dist deleted file mode 100644 index b3d0fda..0000000 --- a/behat.yml.dist +++ /dev/null @@ -1,47 +0,0 @@ -imports: - - vendor/sylius/sylius/src/Sylius/Behat/Resources/config/suites.yml - - tests/Behat/Resources/suites.yml - -default: - extensions: - Lakion\Behat\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/" - default_session: symfony - javascript_session: chrome - sessions: - symfony: - symfony: ~ - chrome: - selenium2: - browser: chrome - capabilities: - browserName: chrome - browser: chrome - version: "" - marionette: null # https://github.com/Behat/MinkExtension/pull/311 - chrome: - switches: - - "start-fullscreen" - - "start-maximized" - - "no-sandbox" - firefox: - selenium2: - browser: firefox - show_auto: false - - FriendsOfBehat\SymfonyExtension: - bootstrap: tests/Application/config/bootstrap.php - kernel: - class: Tests\Monsieurbiz\SyliusSalesReportsPlugin\Application\Kernel - - FriendsOfBehat\VariadicExtension: ~ - - FriendsOfBehat\SuiteSettingsExtension: - paths: - - "features" diff --git a/composer.json b/composer.json index 0352e3a..0dd4441 100644 --- a/composer.json +++ b/composer.json @@ -2,11 +2,11 @@ "name": "monsieurbiz/sylius-sales-reports-plugin", "type": "sylius-plugin", "keywords": ["sylius", "sylius-plugin"], - "description": "__Your description__", + "description": "A simple plugin to have sales reports in Sylius", "license": "MIT", "require": { - "php": "^7.2", - "sylius/sylius": "^1.4.0" + "php": "~7.2", + "sylius/sylius": "~1.3" }, "require-dev": { "behat/behat": "^3.4", @@ -41,11 +41,14 @@ } }, "autoload-dev": { + "psr-4": { + "Tests\\MonsieurBiz\\SyliusSalesReportsPlugin\\": "tests/" + }, "classmap": ["tests/Application/Kernel.php"] }, "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.0-dev" } } } diff --git a/easy-coding-standard.yml b/easy-coding-standard.yml deleted file mode 100644 index 2403599..0000000 --- a/easy-coding-standard.yml +++ /dev/null @@ -1,2 +0,0 @@ -imports: - - { resource: 'vendor/sylius-labs/coding-standard/easy-coding-standard.yml' } diff --git a/package.json b/package.json new file mode 100644 index 0000000..a345e5d --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "monsieurbiz-sylius-rich-editor-plugin", + "version": "0.0.1", + "description": "Add and manage custom content blocks in your content", + "main": "webpack.config.js", + "scripts": { + "build": "encore production", + "watch": "encore dev --watch" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/monsieurbiz/sylius-rich-editor-plugin.git" + }, + "author": "Monsieur Biz ", + "license": "MIT", + "bugs": { + "url": "https://github.com/monsieurbiz/sylius-rich-editor-plugin/issues" + }, + "homepage": "https://github.com/monsieurbiz/sylius-rich-editor-plugin#readme", + "devDependencies": { + "@symfony/webpack-encore": "^0.28.1", + "autoprefixer": "^9.7.3", + "node-sass": "^4.13.0", + "postcss-loader": "^3.0.0", + "sass-loader": "^7.3.1" + }, + "dependencies": { + "dragula": "^3.7.2", + "pell": "^1.0.6", + "tingle.js": "^0.15.2" + } +} diff --git a/phpstan.neon b/phpstan.neon index ea8e49e..899e069 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -3,7 +3,9 @@ includes: - vendor/phpstan/phpstan-webmozart-assert/extension.neon parameters: - reportUnmatchedIgnoredErrors: false + level: max + paths: + - %rootDir%/src/ excludes_analyse: # Makes PHPStan crash diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 609c106..29bd013 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,20 +1,20 @@ - + tests - - + + + diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index 8fac13a..349e5a8 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -14,12 +14,12 @@ final class Configuration implements ConfigurationInterface */ public function getConfigTreeBuilder(): TreeBuilder { - $treeBuilder = new TreeBuilder(MonsieurBizSylius__YourName_Extension::EXTENSION_CONFIG_NAME); + $treeBuilder = new TreeBuilder(MonsieurBizSyliusSalesReportsExtension::EXTENSION_CONFIG_NAME); if (\method_exists($treeBuilder, 'getRootNode')) { $rootNode = $treeBuilder->getRootNode(); } else { // BC layer for symfony/config 4.1 and older - $rootNode = $treeBuilder->root(MonsieurBizSylius__YourName_Extension::EXTENSION_CONFIG_NAME); + $rootNode = $treeBuilder->root(MonsieurBizSyliusSalesReportsExtension::EXTENSION_CONFIG_NAME); } return $treeBuilder; diff --git a/src/DependencyInjection/MonsieurBizSylius__YourName_Extension.php b/src/DependencyInjection/MonsieurBizSyliusSalesReportsExtension.php similarity index 90% rename from src/DependencyInjection/MonsieurBizSylius__YourName_Extension.php rename to src/DependencyInjection/MonsieurBizSyliusSalesReportsExtension.php index cd6855b..583442c 100644 --- a/src/DependencyInjection/MonsieurBizSylius__YourName_Extension.php +++ b/src/DependencyInjection/MonsieurBizSyliusSalesReportsExtension.php @@ -7,7 +7,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\Extension; -final class MonsieurBizSylius__YourName_Extension extends Extension +final class MonsieurBizSyliusSalesReportsExtension extends Extension { CONST EXTENSION_CONFIG_NAME = 'monsieur_biz_sylius_sales_reports'; diff --git a/tests/Application/.babelrc b/tests/Application/.babelrc new file mode 100644 index 0000000..e563a62 --- /dev/null +++ b/tests/Application/.babelrc @@ -0,0 +1,15 @@ +{ + "presets": [ + ["env", { + "targets": { + "node": "6" + }, + "useBuiltIns": true + }] + ], + "plugins": [ + ["transform-object-rest-spread", { + "useBuiltIns": true + }] + ] +} diff --git a/tests/Application/.env b/tests/Application/.env new file mode 100644 index 0000000..1465c68 --- /dev/null +++ b/tests/Application/.env @@ -0,0 +1,23 @@ +# This file is a "template" of which env vars needs to be defined in your configuration or in an .env file +# Set variables here that may be different on each deployment target of the app, e.g. development, staging, production. +# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_DEBUG=1 +APP_SECRET=EDITME +###< symfony/framework-bundle ### + +###> doctrine/doctrine-bundle ### +# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url +# For a sqlite database, use: "sqlite:///%kernel.project_dir%/var/data.db" +# 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%?serverVersion=5.5 +###< 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 ### diff --git a/tests/Application/.env.test b/tests/Application/.env.test new file mode 100644 index 0000000..bed9c72 --- /dev/null +++ b/tests/Application/.env.test @@ -0,0 +1,3 @@ +APP_SECRET='ch4mb3r0f5ecr3ts' + +KERNEL_CLASS='Tests\MonsieurBiz\SyliusSalesReportsPlugin\Application\Kernel' diff --git a/tests/Application/.eslintrc.js b/tests/Application/.eslintrc.js new file mode 100644 index 0000000..92c4cee --- /dev/null +++ b/tests/Application/.eslintrc.js @@ -0,0 +1,20 @@ +module.exports = { + extends: 'airbnb-base', + env: { + node: true, + }, + rules: { + 'object-shorthand': ['error', 'always', { + avoidQuotes: true, + avoidExplicitReturnArrows: true, + }], + 'function-paren-newline': ['error', 'consistent'], + 'max-len': ['warn', 120, 2, { + ignoreUrls: true, + ignoreComments: false, + ignoreRegExpLiterals: true, + ignoreStrings: true, + ignoreTemplateLiterals: true, + }], + }, +}; diff --git a/tests/Application/.gitignore b/tests/Application/.gitignore new file mode 100644 index 0000000..8ad1225 --- /dev/null +++ b/tests/Application/.gitignore @@ -0,0 +1,22 @@ +/public/assets +/public/css +/public/js +/public/media/* +!/public/media/image/ +/public/media/image/* +!/public/media/image/.gitignore + +/node_modules + +###> symfony/framework-bundle ### +/.env.*.local +/.env.local +/.env.local.php +/public/bundles +/var/ +/vendor/ +###< symfony/framework-bundle ### + +###> symfony/web-server-bundle ### +/.web-server-pid +###< symfony/web-server-bundle ### diff --git a/tests/Application/Kernel.php b/tests/Application/Kernel.php index 0f8aa90..f01d962 100644 --- a/tests/Application/Kernel.php +++ b/tests/Application/Kernel.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Tests\Monsieurbiz\SyliusSalesReportsPlugin\Application; +namespace Tests\MonsieurBiz\SyliusSalesReportsPlugin\Application; use PSS\SymfonyMockerContainer\DependencyInjection\MockerContainer; use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; diff --git a/tests/Application/bin/console b/tests/Application/bin/console new file mode 100755 index 0000000..cf171ba --- /dev/null +++ b/tests/Application/bin/console @@ -0,0 +1,38 @@ +#!/usr/bin/env php +getParameterOption(['--env', '-e'], null, true)) { + putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env); +} + +if ($input->hasParameterOption('--no-debug', true)) { + putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0'); +} + +require dirname(__DIR__).'/config/bootstrap.php'; + +if ($_SERVER['APP_DEBUG']) { + umask(0000); + + if (class_exists(Debug::class)) { + Debug::enable(); + } +} + +$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); +$application = new Application($kernel); +$application->run($input); diff --git a/tests/Application/composer.json b/tests/Application/composer.json new file mode 100644 index 0000000..326735f --- /dev/null +++ b/tests/Application/composer.json @@ -0,0 +1,5 @@ +{ + "name": "sylius/plugin-skeleton-test-application", + "description": "Sylius application for plugin testing purposes (composer.json needed for project dir resolving)", + "license": "MIT" +} diff --git a/tests/Application/config/bootstrap.php b/tests/Application/config/bootstrap.php new file mode 100644 index 0000000..8ea2af2 --- /dev/null +++ b/tests/Application/config/bootstrap.php @@ -0,0 +1,21 @@ +=1.2) +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(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'; diff --git a/tests/Application/config/bundles.php b/tests/Application/config/bundles.php new file mode 100644 index 0000000..739e282 --- /dev/null +++ b/tests/Application/config/bundles.php @@ -0,0 +1,60 @@ + ['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], + 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], + Sylius\Bundle\LocaleBundle\SyliusLocaleBundle::class => ['all' => true], + Sylius\Bundle\ProductBundle\SyliusProductBundle::class => ['all' => true], + Sylius\Bundle\ChannelBundle\SyliusChannelBundle::class => ['all' => true], + Sylius\Bundle\AttributeBundle\SyliusAttributeBundle::class => ['all' => true], + Sylius\Bundle\TaxationBundle\SyliusTaxationBundle::class => ['all' => true], + Sylius\Bundle\ShippingBundle\SyliusShippingBundle::class => ['all' => true], + Sylius\Bundle\PaymentBundle\SyliusPaymentBundle::class => ['all' => true], + Sylius\Bundle\MailerBundle\SyliusMailerBundle::class => ['all' => true], + Sylius\Bundle\PromotionBundle\SyliusPromotionBundle::class => ['all' => true], + Sylius\Bundle\AddressingBundle\SyliusAddressingBundle::class => ['all' => true], + Sylius\Bundle\InventoryBundle\SyliusInventoryBundle::class => ['all' => true], + Sylius\Bundle\TaxonomyBundle\SyliusTaxonomyBundle::class => ['all' => true], + Sylius\Bundle\UserBundle\SyliusUserBundle::class => ['all' => true], + Sylius\Bundle\CustomerBundle\SyliusCustomerBundle::class => ['all' => true], + Sylius\Bundle\UiBundle\SyliusUiBundle::class => ['all' => true], + Sylius\Bundle\ReviewBundle\SyliusReviewBundle::class => ['all' => true], + Sylius\Bundle\CoreBundle\SyliusCoreBundle::class => ['all' => true], + Sylius\Bundle\ResourceBundle\SyliusResourceBundle::class => ['all' => true], + Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true], + winzou\Bundle\StateMachineBundle\winzouStateMachineBundle::class => ['all' => true], + Sonata\CoreBundle\SonataCoreBundle::class => ['all' => true], + Sonata\BlockBundle\SonataBlockBundle::class => ['all' => true], + Sonata\IntlBundle\SonataIntlBundle::class => ['all' => true], + Bazinga\Bundle\HateoasBundle\BazingaHateoasBundle::class => ['all' => true], + JMS\SerializerBundle\JMSSerializerBundle::class => ['all' => true], + FOS\RestBundle\FOSRestBundle::class => ['all' => true], + Knp\Bundle\GaufretteBundle\KnpGaufretteBundle::class => ['all' => true], + Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true], + 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], + Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::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], + Sylius\Bundle\AdminApiBundle\SyliusAdminApiBundle::class => ['all' => true], + MonsieurBiz\SyliusSalesReportsPlugin\MonsieurBizSyliusSalesReportsPlugin::class => ['all' => true], + 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], +]; diff --git a/tests/Application/config/packages/_sylius.yaml b/tests/Application/config/packages/_sylius.yaml new file mode 100644 index 0000000..89674ac --- /dev/null +++ b/tests/Application/config/packages/_sylius.yaml @@ -0,0 +1,14 @@ +imports: + - { resource: "@SyliusCoreBundle/Resources/config/app/config.yml" } + + - { resource: "@SyliusAdminBundle/Resources/config/app/config.yml" } + - { resource: "@SyliusAdminApiBundle/Resources/config/app/config.yml" } + + - { resource: "@SyliusShopBundle/Resources/config/app/config.yml" } + +parameters: + sylius_core.public_dir: '%kernel.project_dir%/public' + +sylius_shop: + product_grid: + include_all_descendants: true diff --git a/tests/Application/config/packages/dev/framework.yaml b/tests/Application/config/packages/dev/framework.yaml new file mode 100644 index 0000000..5dd13a0 --- /dev/null +++ b/tests/Application/config/packages/dev/framework.yaml @@ -0,0 +1,3 @@ +framework: + profiler: { only_exceptions: false } + ide: phpstorm diff --git a/tests/Application/config/packages/dev/jms_serializer.yaml b/tests/Application/config/packages/dev/jms_serializer.yaml new file mode 100644 index 0000000..353e460 --- /dev/null +++ b/tests/Application/config/packages/dev/jms_serializer.yaml @@ -0,0 +1,7 @@ +jms_serializer: + visitors: + json: + options: + - JSON_PRETTY_PRINT + - JSON_UNESCAPED_SLASHES + - JSON_PRESERVE_ZERO_FRACTION diff --git a/tests/Application/config/packages/dev/monolog.yaml b/tests/Application/config/packages/dev/monolog.yaml new file mode 100644 index 0000000..da2b092 --- /dev/null +++ b/tests/Application/config/packages/dev/monolog.yaml @@ -0,0 +1,9 @@ +monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + firephp: + type: firephp + level: info diff --git a/tests/Application/config/packages/dev/routing.yaml b/tests/Application/config/packages/dev/routing.yaml new file mode 100644 index 0000000..4116679 --- /dev/null +++ b/tests/Application/config/packages/dev/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: true diff --git a/tests/Application/config/packages/dev/swiftmailer.yaml b/tests/Application/config/packages/dev/swiftmailer.yaml new file mode 100644 index 0000000..f438078 --- /dev/null +++ b/tests/Application/config/packages/dev/swiftmailer.yaml @@ -0,0 +1,2 @@ +swiftmailer: + disable_delivery: true diff --git a/tests/Application/config/packages/dev/web_profiler.yaml b/tests/Application/config/packages/dev/web_profiler.yaml new file mode 100644 index 0000000..1f1cb2b --- /dev/null +++ b/tests/Application/config/packages/dev/web_profiler.yaml @@ -0,0 +1,3 @@ +web_profiler: + toolbar: true + intercept_redirects: false diff --git a/tests/Application/config/packages/doctrine.yaml b/tests/Application/config/packages/doctrine.yaml new file mode 100644 index 0000000..f51ba5a --- /dev/null +++ b/tests/Application/config/packages/doctrine.yaml @@ -0,0 +1,14 @@ +parameters: + # Adds a fallback DATABASE_URL if the env var is not set. + # This allows you to run cache:warmup even if your + # environment variables are not available yet. + # You should not need to change this value. + env(DATABASE_URL): '' + +doctrine: + dbal: + driver: 'pdo_mysql' + server_version: '5.7' + charset: UTF8 + + url: '%env(resolve:DATABASE_URL)%' diff --git a/tests/Application/config/packages/doctrine_migrations.yaml b/tests/Application/config/packages/doctrine_migrations.yaml new file mode 100644 index 0000000..c0a1202 --- /dev/null +++ b/tests/Application/config/packages/doctrine_migrations.yaml @@ -0,0 +1,5 @@ +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 diff --git a/tests/Application/config/packages/fos_rest.yaml b/tests/Application/config/packages/fos_rest.yaml new file mode 100644 index 0000000..a72eef7 --- /dev/null +++ b/tests/Application/config/packages/fos_rest.yaml @@ -0,0 +1,11 @@ +fos_rest: + exception: true + view: + formats: + json: true + xml: true + empty_content: 204 + format_listener: + rules: + - { path: '^/api/.*', priorities: ['json', 'xml'], fallback_format: json, prefer_extension: true } + - { path: '^/', stop: true } diff --git a/tests/Application/config/packages/framework.yaml b/tests/Application/config/packages/framework.yaml new file mode 100644 index 0000000..e74ed81 --- /dev/null +++ b/tests/Application/config/packages/framework.yaml @@ -0,0 +1,7 @@ +framework: + secret: '%env(APP_SECRET)%' + form: true + csrf_protection: true + templating: { engines: ["twig"] } + session: + handler_id: ~ diff --git a/tests/Application/config/packages/jms_serializer.yaml b/tests/Application/config/packages/jms_serializer.yaml new file mode 100644 index 0000000..64dd8d1 --- /dev/null +++ b/tests/Application/config/packages/jms_serializer.yaml @@ -0,0 +1,4 @@ +jms_serializer: + visitors: + xml: + format_output: '%kernel.debug%' diff --git a/tests/Application/config/packages/liip_imagine.yaml b/tests/Application/config/packages/liip_imagine.yaml new file mode 100644 index 0000000..bb2e7ce --- /dev/null +++ b/tests/Application/config/packages/liip_imagine.yaml @@ -0,0 +1,6 @@ +liip_imagine: + resolvers: + default: + web_path: + web_root: "%kernel.project_dir%/public" + cache_prefix: "media/cache" diff --git a/tests/Application/config/packages/prod/doctrine.yaml b/tests/Application/config/packages/prod/doctrine.yaml new file mode 100644 index 0000000..2f16f0f --- /dev/null +++ b/tests/Application/config/packages/prod/doctrine.yaml @@ -0,0 +1,31 @@ +doctrine: + orm: + metadata_cache_driver: + type: service + id: doctrine.system_cache_provider + query_cache_driver: + type: service + id: doctrine.system_cache_provider + result_cache_driver: + type: service + id: doctrine.result_cache_provider + +services: + doctrine.result_cache_provider: + class: Symfony\Component\Cache\DoctrineProvider + public: false + arguments: + - '@doctrine.result_cache_pool' + doctrine.system_cache_provider: + class: Symfony\Component\Cache\DoctrineProvider + public: false + arguments: + - '@doctrine.system_cache_pool' + +framework: + cache: + pools: + doctrine.result_cache_pool: + adapter: cache.app + doctrine.system_cache_pool: + adapter: cache.system diff --git a/tests/Application/config/packages/prod/jms_serializer.yaml b/tests/Application/config/packages/prod/jms_serializer.yaml new file mode 100644 index 0000000..bc97faf --- /dev/null +++ b/tests/Application/config/packages/prod/jms_serializer.yaml @@ -0,0 +1,6 @@ +jms_serializer: + visitors: + json: + options: + - JSON_UNESCAPED_SLASHES + - JSON_PRESERVE_ZERO_FRACTION diff --git a/tests/Application/config/packages/prod/monolog.yaml b/tests/Application/config/packages/prod/monolog.yaml new file mode 100644 index 0000000..6461211 --- /dev/null +++ b/tests/Application/config/packages/prod/monolog.yaml @@ -0,0 +1,10 @@ +monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug diff --git a/tests/Application/config/packages/routing.yaml b/tests/Application/config/packages/routing.yaml new file mode 100644 index 0000000..368bc7f --- /dev/null +++ b/tests/Application/config/packages/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: ~ diff --git a/tests/Application/config/packages/security.yaml b/tests/Application/config/packages/security.yaml new file mode 100644 index 0000000..830b03d --- /dev/null +++ b/tests/Application/config/packages/security.yaml @@ -0,0 +1,102 @@ +parameters: + sylius.security.admin_regex: "^/admin" + sylius.security.api_regex: "^/api" + sylius.security.shop_regex: "^/(?!admin|api/.*|api$|media/.*)[^/]++" + +security: + providers: + sylius_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 + encoders: + Sylius\Component\User\Model\UserInterface: sha512 + firewalls: + admin: + switch_user: true + context: admin + pattern: "%sylius.security.admin_regex%" + provider: sylius_admin_user_provider + form_login: + provider: sylius_admin_user_provider + login_path: sylius_admin_login + check_path: sylius_admin_login_check + failure_path: sylius_admin_login + default_target_path: sylius_admin_dashboard + use_forward: false + use_referer: true + csrf_token_generator: security.csrf.token_manager + csrf_parameter: _csrf_admin_security_token + csrf_token_id: admin_authenticate + remember_me: + secret: "%env(APP_SECRET)%" + path: /admin + name: APP_ADMIN_REMEMBER_ME + lifetime: 31536000 + remember_me_parameter: _remember_me + logout: + path: sylius_admin_logout + target: sylius_admin_login + anonymous: true + + oauth_token: + pattern: "%sylius.security.api_regex%/oauth/v2/token" + security: false + + api: + pattern: "%sylius.security.api_regex%/.*" + provider: sylius_admin_user_provider + fos_oauth: true + stateless: true + anonymous: true + + shop: + switch_user: { role: ROLE_ALLOWED_TO_SWITCH } + context: shop + pattern: "%sylius.security.shop_regex%" + provider: sylius_shop_user_provider + form_login: + success_handler: sylius.authentication.success_handler + failure_handler: sylius.authentication.failure_handler + provider: sylius_shop_user_provider + login_path: sylius_shop_login + check_path: sylius_shop_login_check + failure_path: sylius_shop_login + default_target_path: sylius_shop_homepage + use_forward: false + use_referer: true + csrf_token_generator: security.csrf.token_manager + csrf_parameter: _csrf_shop_security_token + csrf_token_id: shop_authenticate + remember_me: + secret: "%env(APP_SECRET)%" + name: APP_SHOP_REMEMBER_ME + lifetime: 31536000 + remember_me_parameter: _remember_me + logout: + path: sylius_shop_logout + target: sylius_shop_login + invalidate_session: false + success_handler: sylius.handler.shop_user_logout + anonymous: true + + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + + access_control: + - { path: "%sylius.security.admin_regex%/_partial", role: IS_AUTHENTICATED_ANONYMOUSLY, ips: [127.0.0.1, ::1] } + - { path: "%sylius.security.admin_regex%/_partial", role: ROLE_NO_ACCESS } + - { path: "%sylius.security.shop_regex%/_partial", role: IS_AUTHENTICATED_ANONYMOUSLY, ips: [127.0.0.1, ::1] } + - { path: "%sylius.security.shop_regex%/_partial", role: ROLE_NO_ACCESS } + + - { path: "%sylius.security.admin_regex%/login", role: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: "%sylius.security.api_regex%/login", role: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: "%sylius.security.shop_regex%/login", role: IS_AUTHENTICATED_ANONYMOUSLY } + + - { path: "%sylius.security.shop_regex%/register", role: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: "%sylius.security.shop_regex%/verify", role: IS_AUTHENTICATED_ANONYMOUSLY } + + - { path: "%sylius.security.admin_regex%", role: ROLE_ADMINISTRATION_ACCESS } + - { path: "%sylius.security.api_regex%/.*", role: ROLE_API_ACCESS } + - { path: "%sylius.security.shop_regex%/account", role: ROLE_USER } diff --git a/tests/Application/config/packages/security_checker.yaml b/tests/Application/config/packages/security_checker.yaml new file mode 100644 index 0000000..0f9cf00 --- /dev/null +++ b/tests/Application/config/packages/security_checker.yaml @@ -0,0 +1,9 @@ +services: + SensioLabs\Security\SecurityChecker: + public: false + + SensioLabs\Security\Command\SecurityCheckerCommand: + arguments: ['@SensioLabs\Security\SecurityChecker'] + public: false + tags: + - { name: console.command, command: 'security:check' } diff --git a/tests/Application/config/packages/sonata_core.yaml b/tests/Application/config/packages/sonata_core.yaml new file mode 100644 index 0000000..e9a6e89 --- /dev/null +++ b/tests/Application/config/packages/sonata_core.yaml @@ -0,0 +1,4 @@ +sonata_core: + form: + mapping: + enabled: false diff --git a/tests/Application/config/packages/staging/monolog.yaml b/tests/Application/config/packages/staging/monolog.yaml new file mode 100644 index 0000000..6461211 --- /dev/null +++ b/tests/Application/config/packages/staging/monolog.yaml @@ -0,0 +1,10 @@ +monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug diff --git a/tests/Application/config/packages/staging/swiftmailer.yaml b/tests/Application/config/packages/staging/swiftmailer.yaml new file mode 100644 index 0000000..f438078 --- /dev/null +++ b/tests/Application/config/packages/staging/swiftmailer.yaml @@ -0,0 +1,2 @@ +swiftmailer: + disable_delivery: true diff --git a/tests/Application/config/packages/stof_doctrine_extensions.yaml b/tests/Application/config/packages/stof_doctrine_extensions.yaml new file mode 100644 index 0000000..7770f74 --- /dev/null +++ b/tests/Application/config/packages/stof_doctrine_extensions.yaml @@ -0,0 +1,4 @@ +# Read the documentation: https://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle/index.html +# See the official DoctrineExtensions documentation for more details: https://github.com/Atlantic18/DoctrineExtensions/tree/master/doc/ +stof_doctrine_extensions: + default_locale: '%locale%' diff --git a/tests/Application/config/packages/swiftmailer.yaml b/tests/Application/config/packages/swiftmailer.yaml new file mode 100644 index 0000000..3bab0d3 --- /dev/null +++ b/tests/Application/config/packages/swiftmailer.yaml @@ -0,0 +1,2 @@ +swiftmailer: + url: '%env(MAILER_URL)%' diff --git a/tests/Application/config/packages/test/framework.yaml b/tests/Application/config/packages/test/framework.yaml new file mode 100644 index 0000000..76d7e5e --- /dev/null +++ b/tests/Application/config/packages/test/framework.yaml @@ -0,0 +1,4 @@ +framework: + test: ~ + session: + storage_id: session.storage.mock_file diff --git a/tests/Application/config/packages/test/monolog.yaml b/tests/Application/config/packages/test/monolog.yaml new file mode 100644 index 0000000..7e2b9e3 --- /dev/null +++ b/tests/Application/config/packages/test/monolog.yaml @@ -0,0 +1,6 @@ +monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: error diff --git a/tests/Application/config/packages/test/swiftmailer.yaml b/tests/Application/config/packages/test/swiftmailer.yaml new file mode 100644 index 0000000..c438f4b --- /dev/null +++ b/tests/Application/config/packages/test/swiftmailer.yaml @@ -0,0 +1,6 @@ +swiftmailer: + disable_delivery: true + logging: true + spool: + type: file + path: "%kernel.cache_dir%/spool" diff --git a/tests/Application/config/packages/test/sylius_theme.yaml b/tests/Application/config/packages/test/sylius_theme.yaml new file mode 100644 index 0000000..4d34199 --- /dev/null +++ b/tests/Application/config/packages/test/sylius_theme.yaml @@ -0,0 +1,3 @@ +sylius_theme: + sources: + test: ~ diff --git a/tests/Application/config/packages/test/web_profiler.yaml b/tests/Application/config/packages/test/web_profiler.yaml new file mode 100644 index 0000000..03752de --- /dev/null +++ b/tests/Application/config/packages/test/web_profiler.yaml @@ -0,0 +1,6 @@ +web_profiler: + toolbar: false + intercept_redirects: false + +framework: + profiler: { collect: false } diff --git a/tests/Application/config/packages/test_cached/doctrine.yaml b/tests/Application/config/packages/test_cached/doctrine.yaml new file mode 100644 index 0000000..4952860 --- /dev/null +++ b/tests/Application/config/packages/test_cached/doctrine.yaml @@ -0,0 +1,16 @@ +doctrine: + orm: + entity_managers: + default: + result_cache_driver: + type: memcached + host: localhost + port: 11211 + query_cache_driver: + type: memcached + host: localhost + port: 11211 + metadata_cache_driver: + type: memcached + host: localhost + port: 11211 diff --git a/tests/Application/config/packages/test_cached/fos_rest.yaml b/tests/Application/config/packages/test_cached/fos_rest.yaml new file mode 100644 index 0000000..2b4189d --- /dev/null +++ b/tests/Application/config/packages/test_cached/fos_rest.yaml @@ -0,0 +1,3 @@ +fos_rest: + exception: + debug: true diff --git a/tests/Application/config/packages/test_cached/framework.yaml b/tests/Application/config/packages/test_cached/framework.yaml new file mode 100644 index 0000000..76d7e5e --- /dev/null +++ b/tests/Application/config/packages/test_cached/framework.yaml @@ -0,0 +1,4 @@ +framework: + test: ~ + session: + storage_id: session.storage.mock_file diff --git a/tests/Application/config/packages/test_cached/monolog.yaml b/tests/Application/config/packages/test_cached/monolog.yaml new file mode 100644 index 0000000..7e2b9e3 --- /dev/null +++ b/tests/Application/config/packages/test_cached/monolog.yaml @@ -0,0 +1,6 @@ +monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: error diff --git a/tests/Application/config/packages/test_cached/swiftmailer.yaml b/tests/Application/config/packages/test_cached/swiftmailer.yaml new file mode 100644 index 0000000..c438f4b --- /dev/null +++ b/tests/Application/config/packages/test_cached/swiftmailer.yaml @@ -0,0 +1,6 @@ +swiftmailer: + disable_delivery: true + logging: true + spool: + type: file + path: "%kernel.cache_dir%/spool" diff --git a/tests/Application/config/packages/test_cached/sylius_channel.yaml b/tests/Application/config/packages/test_cached/sylius_channel.yaml new file mode 100644 index 0000000..bab83ef --- /dev/null +++ b/tests/Application/config/packages/test_cached/sylius_channel.yaml @@ -0,0 +1,2 @@ +sylius_channel: + debug: true diff --git a/tests/Application/config/packages/test_cached/sylius_theme.yaml b/tests/Application/config/packages/test_cached/sylius_theme.yaml new file mode 100644 index 0000000..4d34199 --- /dev/null +++ b/tests/Application/config/packages/test_cached/sylius_theme.yaml @@ -0,0 +1,3 @@ +sylius_theme: + sources: + test: ~ diff --git a/tests/Application/config/packages/test_cached/twig.yaml b/tests/Application/config/packages/test_cached/twig.yaml new file mode 100644 index 0000000..8c6e0b4 --- /dev/null +++ b/tests/Application/config/packages/test_cached/twig.yaml @@ -0,0 +1,2 @@ +twig: + strict_variables: true diff --git a/tests/Application/config/packages/translation.yaml b/tests/Application/config/packages/translation.yaml new file mode 100644 index 0000000..1f4f966 --- /dev/null +++ b/tests/Application/config/packages/translation.yaml @@ -0,0 +1,8 @@ +framework: + default_locale: '%locale%' + translator: + paths: + - '%kernel.project_dir%/translations' + fallbacks: + - '%locale%' + - 'en' diff --git a/tests/Application/config/packages/twig.yaml b/tests/Application/config/packages/twig.yaml new file mode 100644 index 0000000..3b315dc --- /dev/null +++ b/tests/Application/config/packages/twig.yaml @@ -0,0 +1,4 @@ +twig: + paths: ['%kernel.project_dir%/templates'] + debug: '%kernel.debug%' + strict_variables: '%kernel.debug%' diff --git a/tests/Application/config/packages/twig_extensions.yaml b/tests/Application/config/packages/twig_extensions.yaml new file mode 100644 index 0000000..0881cc9 --- /dev/null +++ b/tests/Application/config/packages/twig_extensions.yaml @@ -0,0 +1,11 @@ +services: + _defaults: + public: false + autowire: true + autoconfigure: true + + # Uncomment any lines below to activate that Twig extension + #Twig\Extensions\ArrayExtension: ~ + #Twig\Extensions\DateExtension: ~ + #Twig\Extensions\IntlExtension: ~ + #Twig\Extensions\TextExtension: ~ diff --git a/tests/Application/config/packages/validator.yaml b/tests/Application/config/packages/validator.yaml new file mode 100644 index 0000000..61807db --- /dev/null +++ b/tests/Application/config/packages/validator.yaml @@ -0,0 +1,3 @@ +framework: + validation: + enable_annotations: true diff --git a/etc/build/.gitignore b/tests/Application/config/routes.yaml similarity index 100% rename from etc/build/.gitignore rename to tests/Application/config/routes.yaml diff --git a/tests/Application/config/routes/dev/twig.yaml b/tests/Application/config/routes/dev/twig.yaml new file mode 100644 index 0000000..f4ee839 --- /dev/null +++ b/tests/Application/config/routes/dev/twig.yaml @@ -0,0 +1,3 @@ +_errors: + resource: '@TwigBundle/Resources/config/routing/errors.xml' + prefix: /_error diff --git a/tests/Application/config/routes/dev/web_profiler.yaml b/tests/Application/config/routes/dev/web_profiler.yaml new file mode 100644 index 0000000..3e79dc2 --- /dev/null +++ b/tests/Application/config/routes/dev/web_profiler.yaml @@ -0,0 +1,7 @@ +_wdt: + resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" + prefix: /_wdt + +_profiler: + resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" + prefix: /_profiler diff --git a/tests/Application/config/routes/liip_imagine.yaml b/tests/Application/config/routes/liip_imagine.yaml new file mode 100644 index 0000000..201cbd5 --- /dev/null +++ b/tests/Application/config/routes/liip_imagine.yaml @@ -0,0 +1,2 @@ +_liip_imagine: + resource: "@LiipImagineBundle/Resources/config/routing.yaml" diff --git a/tests/Application/config/routes/sylius_admin.yaml b/tests/Application/config/routes/sylius_admin.yaml new file mode 100644 index 0000000..1ba48d6 --- /dev/null +++ b/tests/Application/config/routes/sylius_admin.yaml @@ -0,0 +1,3 @@ +sylius_admin: + resource: "@SyliusAdminBundle/Resources/config/routing.yml" + prefix: /admin diff --git a/tests/Application/config/routes/sylius_admin_api.yaml b/tests/Application/config/routes/sylius_admin_api.yaml new file mode 100644 index 0000000..80aed45 --- /dev/null +++ b/tests/Application/config/routes/sylius_admin_api.yaml @@ -0,0 +1,3 @@ +sylius_admin_api: + resource: "@SyliusAdminApiBundle/Resources/config/routing.yml" + prefix: /api diff --git a/tests/Application/config/routes/sylius_shop.yaml b/tests/Application/config/routes/sylius_shop.yaml new file mode 100644 index 0000000..8818568 --- /dev/null +++ b/tests/Application/config/routes/sylius_shop.yaml @@ -0,0 +1,14 @@ +sylius_shop: + resource: "@SyliusShopBundle/Resources/config/routing.yml" + prefix: /{_locale} + requirements: + _locale: ^[a-z]{2}(?:_[A-Z]{2})?$ + +sylius_shop_payum: + resource: "@SyliusShopBundle/Resources/config/routing/payum.yml" + +sylius_shop_default_locale: + path: / + methods: [GET] + defaults: + _controller: sylius.controller.shop.locale_switch:switchAction diff --git a/tests/Application/config/services.yaml b/tests/Application/config/services.yaml new file mode 100644 index 0000000..615506e --- /dev/null +++ b/tests/Application/config/services.yaml @@ -0,0 +1,4 @@ +# Put parameters here that don't need to change on each machine where the app is deployed +# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration +parameters: + locale: en_US diff --git a/tests/Application/config/services_test.yaml b/tests/Application/config/services_test.yaml new file mode 100644 index 0000000..b0c2d6a --- /dev/null +++ b/tests/Application/config/services_test.yaml @@ -0,0 +1,3 @@ +imports: +# - { resource: "../../Behat/Resources/services.xml" } +# - { resource: "../../../vendor/sylius/sylius/src/Sylius/Behat/Resources/config/services.xml" } diff --git a/tests/Application/gulpfile.babel.js b/tests/Application/gulpfile.babel.js new file mode 100644 index 0000000..5920316 --- /dev/null +++ b/tests/Application/gulpfile.babel.js @@ -0,0 +1,60 @@ +import chug from 'gulp-chug'; +import gulp from 'gulp'; +import yargs from 'yargs'; + +const { argv } = yargs + .options({ + rootPath: { + description: ' path to public assets directory', + type: 'string', + requiresArg: true, + required: false, + }, + nodeModulesPath: { + description: ' path to node_modules directory', + type: 'string', + requiresArg: true, + required: false, + }, + }); + +const config = [ + '--rootPath', + argv.rootPath || '../../../../../../../tests/Application/public/assets', + '--nodeModulesPath', + argv.nodeModulesPath || '../../../../../../../tests/Application/node_modules', +]; + +export const buildAdmin = function buildAdmin() { + return gulp.src('../../vendor/sylius/sylius/src/Sylius/Bundle/AdminBundle/gulpfile.babel.js', { read: false }) + .pipe(chug({ args: config, tasks: 'build' })); +}; +buildAdmin.description = 'Build admin assets.'; + +export const watchAdmin = function watchAdmin() { + return gulp.src('../../vendor/sylius/sylius/src/Sylius/Bundle/AdminBundle/gulpfile.babel.js', { read: false }) + .pipe(chug({ args: config, tasks: 'watch' })); +}; +watchAdmin.description = 'Watch admin asset sources and rebuild on changes.'; + +export const buildShop = function buildShop() { + return gulp.src('../../vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/gulpfile.babel.js', { read: false }) + .pipe(chug({ args: config, tasks: 'build' })); +}; +buildShop.description = 'Build shop assets.'; + +export const watchShop = function watchShop() { + return gulp.src('../../vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/gulpfile.babel.js', { read: false }) + .pipe(chug({ args: config, tasks: 'watch' })); +}; +watchShop.description = 'Watch shop asset sources and rebuild on changes.'; + +export const build = gulp.parallel(buildAdmin, buildShop); +build.description = 'Build assets.'; + +gulp.task('admin', buildAdmin); +gulp.task('admin-watch', watchAdmin); +gulp.task('shop', buildShop); +gulp.task('shop-watch', watchShop); + +export default build; diff --git a/tests/Application/package.json b/tests/Application/package.json new file mode 100644 index 0000000..0f3d7c7 --- /dev/null +++ b/tests/Application/package.json @@ -0,0 +1,54 @@ +{ + "dependencies": { + "babel-polyfill": "^6.26.0", + "jquery": "^3.2.0", + "jquery.dirtyforms": "^2.0.0", + "lightbox2": "^2.9.0", + "semantic-ui-css": "^2.2.0" + }, + "devDependencies": { + "babel-core": "^6.26.3", + "babel-plugin-external-helpers": "^6.22.0", + "babel-plugin-module-resolver": "^3.1.1", + "babel-plugin-transform-object-rest-spread": "^6.26.0", + "babel-preset-env": "^1.7.0", + "babel-register": "^6.26.0", + "dedent": "^0.7.0", + "eslint": "^4.19.1", + "eslint-config-airbnb-base": "^12.1.0", + "eslint-import-resolver-babel-module": "^4.0.0", + "eslint-plugin-import": "^2.12.0", + "fast-async": "^6.3.7", + "gulp": "^4.0.0", + "gulp-chug": "^0.5", + "gulp-concat": "^2.6.0", + "gulp-debug": "^2.1.2", + "gulp-if": "^2.0.0", + "gulp-livereload": "^3.8.1", + "gulp-order": "^1.1.1", + "gulp-sass": "^4.0.1", + "gulp-sourcemaps": "^1.6.0", + "gulp-uglifycss": "^1.0.5", + "merge-stream": "^1.0.0", + "rollup": "^0.60.7", + "rollup-plugin-babel": "^3.0.4", + "rollup-plugin-commonjs": "^9.1.3", + "rollup-plugin-inject": "^2.0.0", + "rollup-plugin-node-resolve": "^3.3.0", + "rollup-plugin-uglify": "^4.0.0", + "upath": "^1.1.0", + "yargs": "^6.4.0" + }, + "scripts": { + "build": "gulp build", + "gulp": "gulp build", + "lint": "yarn lint:js", + "lint:js": "eslint gulpfile.babel.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Sylius/Sylius.git" + }, + "author": "Paweł Jędrzejewski", + "license": "MIT" +} diff --git a/tests/Application/public/.htaccess b/tests/Application/public/.htaccess new file mode 100644 index 0000000..99ed00d --- /dev/null +++ b/tests/Application/public/.htaccess @@ -0,0 +1,25 @@ +DirectoryIndex app.php + + + RewriteEngine On + + RewriteCond %{HTTP:Authorization} ^(.*) + RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] + + RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ + RewriteRule ^(.*) - [E=BASE:%1] + + RewriteCond %{ENV:REDIRECT_STATUS} ^$ + RewriteRule ^index\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L] + + RewriteCond %{REQUEST_FILENAME} -f + RewriteRule .? - [L] + + RewriteRule .? %{ENV:BASE}/index.php [L] + + + + + RedirectMatch 302 ^/$ /index.php/ + + diff --git a/tests/Application/public/favicon.ico b/tests/Application/public/favicon.ico new file mode 100644 index 0000000..592f7a8 Binary files /dev/null and b/tests/Application/public/favicon.ico differ diff --git a/tests/Application/public/index.php b/tests/Application/public/index.php new file mode 100644 index 0000000..0daab38 --- /dev/null +++ b/tests/Application/public/index.php @@ -0,0 +1,27 @@ +handle($request); +$response->send(); +$kernel->terminate($request, $response); diff --git a/features/.gitkeep b/tests/Application/public/media/image/.gitignore similarity index 100% rename from features/.gitkeep rename to tests/Application/public/media/image/.gitignore diff --git a/tests/Application/public/robots.txt b/tests/Application/public/robots.txt new file mode 100644 index 0000000..214e411 --- /dev/null +++ b/tests/Application/public/robots.txt @@ -0,0 +1,4 @@ +# www.robotstxt.org/ +# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 + +User-agent: * diff --git a/tests/Application/templates/.gitignore b/tests/Application/templates/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/tests/Application/templates/bundles/SyliusUiBundle/Security/_login.html.twig b/tests/Application/templates/bundles/SyliusUiBundle/Security/_login.html.twig new file mode 100644 index 0000000..a3be91c --- /dev/null +++ b/tests/Application/templates/bundles/SyliusUiBundle/Security/_login.html.twig @@ -0,0 +1,35 @@ +{% form_theme form '@SyliusUi/Form/theme.html.twig' %} + +{% import '@SyliusUi/Macro/messages.html.twig' as messages %} + +
+
+ {{ sonata_block_render_event('sylius.admin.login.before_form', {'form': form}) }} + + {% if last_error %} +
+ {{ messages.error(last_error.messageKey) }} +
+ {% endif %} + + {{ form_start(form, {'action': action|default('/'), 'attr': {'class': 'ui large loadable form', 'novalidate': 'novalidate'}}) }} +
+ + {% if paths.logo is defined %} +
+ +
+ {% endif %} + + {{ form_row(form._username, {'value': last_username|default('')}) }} + {{ form_row(form._password) }} + {{ form_row(form._remember_me) }} + + +
+ + {{ sonata_block_render_event('sylius.admin.login.form', {'form': form}) }} + + {{ form_end(form, {'render_rest': false}) }} +
+
diff --git a/tests/Application/translations/.gitignore b/tests/Application/translations/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/tests/Behat/Resources/services.xml b/tests/Behat/Resources/services.xml deleted file mode 100644 index 8996f62..0000000 --- a/tests/Behat/Resources/services.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/tests/Behat/Resources/suites.yml b/tests/Behat/Resources/suites.yml deleted file mode 100644 index c88421b..0000000 --- a/tests/Behat/Resources/suites.yml +++ /dev/null @@ -1,5 +0,0 @@ -# Put your Behat suites definitions here - -default: - suites: -