diff --git a/.gitignore b/.gitignore index 410e0f7ab3..3b5a2aa81d 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,7 @@ dev-*.* .idea # dbv /data/meta/revision +localconfig_*.php +!localconfig_travis.php +!localconfig_EXAMPLE.php +!localconfig_vagrant.php diff --git a/.travis.yml b/.travis.yml index 3275289d09..48322a0fd9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -57,11 +57,16 @@ before_script: # sauce setup # - bash testFramework/setup/do-sauce.sh - mkdir -p build/logs +# start PHP webserver + - "php -S 127.0.0.1:8000 > /dev/null &" +# Start PhantomJS + - "phantomjs --webdriver=8643 --ignore-ssl-errors=true > /dev/null &" script: +# unittests - php vendor/bin/phpunit -c testFramework/unittests/phpunit.xml - #uncomment the following to trigger webtests -# - testFramework/webtests/vendor/bin/phpunit testFramework/webtests/allWebTests.php +# webtests + - vendor/bin/behat after_script: #- vendor/bin/phpcs --standard=PSR2 includes/ testFramework/ diff --git a/behat.yml b/behat.yml new file mode 100644 index 0000000000..7dfdfde29e --- /dev/null +++ b/behat.yml @@ -0,0 +1,36 @@ +default: + autoload: + - %paths.base%/testFramework/behat/features/bootstrap + suites: + installer_features: + paths: [ %paths.base%/testFramework/behat/features/testFeatures/testInstaller.feature ] + contexts: [ MainContext ] + taxzone_features: + paths: [ %paths.base%/testFramework/behat/features/testFeatures/testTaxZones.feature ] + contexts: [ MainContext ] + customer_features: + paths: [ %paths.base%/testFramework/behat/features/testFeatures/createCustomers.feature ] + contexts: [ MainContext ] + gv_features: + paths: [ %paths.base%/testFramework/behat/features/testFeatures/giftVoucherPurchase.feature ] + contexts: [ MainContext ] + create_coupons_features: + paths: [ %paths.base%/testFramework/behat/features/testFeatures/createCoupons.feature ] + contexts: [ MainContext ] + use_coupons_features: + paths: [ %paths.base%/testFramework/behat/features/testFeatures/useCoupons.feature ] + contexts: [ MainContext ] + group_discount_features: + paths: [ %paths.base%/testFramework/behat/features/testFeatures/groupDiscount.feature ] + contexts: [ MainContext ] + low_order_fee_features: + paths: [ %paths.base%/testFramework/behat/features/testFeatures/lowOrderFee.feature ] + contexts: [ MainContext ] + + extensions: + Behat\MinkExtension: + goutte: + guzzle_parameters: + verify: false + selenium2: + wd_host: "http://localhost:8643/wd/hub" diff --git a/composer.json b/composer.json index d59b5de261..fcaf1fd096 100644 --- a/composer.json +++ b/composer.json @@ -14,10 +14,14 @@ "php": ">=5.5" }, "require-dev": { - "phpunit/phpunit": ">4.8", - "phpdocumentor/phpdocumentor": ">=2.9", + "jakoch/phantomjs-installer": "^2.1", + "phpunit/phpunit": "=4.8", "mikey179/vfsStream": ">1.6", - "phpunit/phpunit-selenium": ">=1.2" + "behat/behat": "^3.2", + "behat/mink": "^1.7", + "behat/mink-goutte-driver": "^1.2", + "behat/mink-selenium2-driver": "^1.3", + "behat/mink-extension": "^2.2" }, "autoload": { "classmap": ["includes/classes", "includes/modules"], @@ -30,8 +34,18 @@ "classmap": ["testFramework"] }, "include-path": ["includes/"], + "config": { + "bin-dir": "vendor/bin" + }, "scripts": { + "post-install-cmd": [ + "PhantomInstaller\\Installer::installPhantomJS" + ], + "post-update-cmd": [ + "PhantomInstaller\\Installer::installPhantomJS" + ], "tests": "phpunit --verbose -c testFramework/unittests/phpunit.xml", - "webtests": "phpunit --verbose -c testFramework/webtests/phpunit.xml --debug" + "webtests": "phpunit --verbose -c testFramework/webtests/phpunit.xml --debug", + "behat": "vendor/bin/behat" } } diff --git a/composer.lock b/composer.lock index 3122338b61..800b153f30 100644 --- a/composer.lock +++ b/composer.lock @@ -4,49 +4,60 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "8a24eceaebee8a00e91a908102e138ba", - "content-hash": "ec1f437634f58a56844f8f1f5b443194", + "hash": "cf9182b2f58b4ec4fe9941386bb7365a", + "content-hash": "5e0c6ad5f1246346513f8a8d6cbf875e", "packages": [], "packages-dev": [ { - "name": "cilex/cilex", - "version": "1.1.0", + "name": "behat/behat", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/Cilex/Cilex.git", - "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5" + "url": "https://github.com/Behat/Behat.git", + "reference": "df7d9225e9ee37fdaa54273e3e0aecf2515bbe76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Cilex/Cilex/zipball/7acd965a609a56d0345e8b6071c261fbdb926cb5", - "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5", + "url": "https://api.github.com/repos/Behat/Behat/zipball/df7d9225e9ee37fdaa54273e3e0aecf2515bbe76", + "reference": "df7d9225e9ee37fdaa54273e3e0aecf2515bbe76", "shasum": "" }, "require": { - "cilex/console-service-provider": "1.*", + "behat/gherkin": "^4.4.4", + "behat/transliterator": "~1.0", + "ext-mbstring": "*", "php": ">=5.3.3", - "pimple/pimple": "~1.0", - "symfony/finder": "~2.1", - "symfony/process": "~2.1" + "symfony/class-loader": "~2.1||~3.0", + "symfony/config": "~2.3||~3.0", + "symfony/console": "~2.5||~3.0", + "symfony/dependency-injection": "~2.1||~3.0", + "symfony/event-dispatcher": "~2.1||~3.0", + "symfony/translation": "~2.3||~3.0", + "symfony/yaml": "~2.1||~3.0" }, "require-dev": { - "phpunit/phpunit": "3.7.*", - "symfony/validator": "~2.1" + "herrera-io/box": "~1.6.1", + "phpunit/phpunit": "~4.5", + "symfony/process": "~2.5|~3.0" }, "suggest": { - "monolog/monolog": ">=1.0.0", - "symfony/validator": ">=1.0.0", - "symfony/yaml": ">=1.0.0" + "behat/mink-extension": "for integration with Mink testing framework", + "behat/symfony2-extension": "for integration with Symfony2 web framework", + "behat/yii-extension": "for integration with Yii web framework" }, + "bin": [ + "bin/behat" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "3.2.x-dev" } }, "autoload": { "psr-0": { - "Cilex": "src/" + "Behat\\Behat": "src/", + "Behat\\Testwork": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -55,50 +66,63 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" } ], - "description": "The PHP micro-framework for Command line tools based on the Symfony2 Components", - "homepage": "http://cilex.github.com", + "description": "Scenario-oriented BDD framework for PHP 5.3", + "homepage": "http://behat.org/", "keywords": [ - "cli", - "microframework" + "Agile", + "BDD", + "ScenarioBDD", + "Scrum", + "StoryBDD", + "User story", + "business", + "development", + "documentation", + "examples", + "symfony", + "testing" ], - "time": "2014-03-29 14:03:13" + "time": "2016-09-25 09:40:39" }, { - "name": "cilex/console-service-provider", - "version": "1.0.0", + "name": "behat/gherkin", + "version": "v4.4.5", "source": { "type": "git", - "url": "https://github.com/Cilex/console-service-provider.git", - "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e" + "url": "https://github.com/Behat/Gherkin.git", + "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Cilex/console-service-provider/zipball/25ee3d1875243d38e1a3448ff94bdf944f70d24e", - "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/5c14cff4f955b17d20d088dec1bde61c0539ec74", + "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74", "shasum": "" }, "require": { - "php": ">=5.3.3", - "pimple/pimple": "1.*@dev", - "symfony/console": "~2.1" + "php": ">=5.3.1" }, "require-dev": { - "cilex/cilex": "1.*@dev", - "silex/silex": "1.*@dev" + "phpunit/phpunit": "~4.5|~5", + "symfony/phpunit-bridge": "~2.7|~3", + "symfony/yaml": "~2.3|~3" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "4.4-dev" } }, "autoload": { "psr-0": { - "Cilex\\Provider\\Console": "src" + "Behat\\Gherkin": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -107,83 +131,114 @@ ], "authors": [ { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" } ], - "description": "Console Service Provider", + "description": "Gherkin DSL parser for PHP 5.3", + "homepage": "http://behat.org/", "keywords": [ - "cilex", - "console", - "pimple", - "service-provider", - "silex" + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" ], - "time": "2012-12-19 10:50:58" + "time": "2016-10-30 11:50:56" }, { - "name": "container-interop/container-interop", - "version": "1.1.0", + "name": "behat/mink", + "version": "v1.7.1", "source": { "type": "git", - "url": "https://github.com/container-interop/container-interop.git", - "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e" + "url": "https://github.com/minkphp/Mink.git", + "reference": "e6930b9c74693dff7f4e58577e1b1743399f3ff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/container-interop/container-interop/zipball/fc08354828f8fd3245f77a66b9e23a6bca48297e", - "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e", + "url": "https://api.github.com/repos/minkphp/Mink/zipball/e6930b9c74693dff7f4e58577e1b1743399f3ff9", + "reference": "e6930b9c74693dff7f4e58577e1b1743399f3ff9", "shasum": "" }, + "require": { + "php": ">=5.3.1", + "symfony/css-selector": "~2.1|~3.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7|~3.0" + }, + "suggest": { + "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)", + "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation", + "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)", + "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, "autoload": { "psr-4": { - "Interop\\Container\\": "src/Interop/Container/" + "Behat\\Mink\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", - "time": "2014-12-30 15:22:37" + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Browser controller/emulator abstraction for PHP", + "homepage": "http://mink.behat.org/", + "keywords": [ + "browser", + "testing", + "web" + ], + "time": "2016-03-05 08:26:18" }, { - "name": "doctrine/annotations", - "version": "v1.2.7", + "name": "behat/mink-browserkit-driver", + "version": "v1.3.2", "source": { "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" + "url": "https://github.com/minkphp/MinkBrowserKitDriver.git", + "reference": "10e67fb4a295efcd62ea0bf16025a85ea19534fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", - "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/10e67fb4a295efcd62ea0bf16025a85ea19534fb", + "reference": "10e67fb4a295efcd62ea0bf16025a85ea19534fb", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", - "php": ">=5.3.2" + "behat/mink": "^1.7.1@dev", + "php": ">=5.3.6", + "symfony/browser-kit": "~2.3|~3.0", + "symfony/dom-crawler": "~2.3|~3.0" }, "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "4.*" + "silex/silex": "~1.2", + "symfony/phpunit-bridge": "~2.7|~3.0" }, - "type": "library", + "type": "mink-driver", "extra": { "branch-alias": { "dev-master": "1.3.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Annotations\\": "lib/" + "psr-4": { + "Behat\\Mink\\Driver\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -192,68 +247,112 @@ ], "authors": [ { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Symfony2 BrowserKit driver for Mink framework", + "homepage": "http://mink.behat.org/", + "keywords": [ + "Mink", + "Symfony2", + "browser", + "testing" + ], + "time": "2016-03-05 08:59:47" + }, + { + "name": "behat/mink-extension", + "version": "v2.2", + "source": { + "type": "git", + "url": "https://github.com/Behat/MinkExtension.git", + "reference": "5b4bda64ff456104564317e212c823e45cad9d59" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/5b4bda64ff456104564317e212c823e45cad9d59", + "reference": "5b4bda64ff456104564317e212c823e45cad9d59", + "shasum": "" + }, + "require": { + "behat/behat": "~3.0,>=3.0.5", + "behat/mink": "~1.5", + "php": ">=5.3.2", + "symfony/config": "~2.2|~3.0" + }, + "require-dev": { + "behat/mink-goutte-driver": "~1.1", + "phpspec/phpspec": "~2.0" + }, + "type": "behat-extension", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\MinkExtension": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" + "name": "Christophe Coevoet", + "email": "stof@notk.org" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" } ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", + "description": "Mink extension for Behat", + "homepage": "http://extensions.behat.org/mink", "keywords": [ - "annotations", - "docblock", - "parser" + "browser", + "gui", + "test", + "web" ], - "time": "2015-08-31 12:32:49" + "time": "2016-02-15 07:55:18" }, { - "name": "doctrine/instantiator", - "version": "1.0.5", + "name": "behat/mink-goutte-driver", + "version": "v1.2.1", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "url": "https://github.com/minkphp/MinkGoutteDriver.git", + "reference": "8b9ad6d2d95bc70b840d15323365f52fcdaea6ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/8b9ad6d2d95bc70b840d15323365f52fcdaea6ca", + "reference": "8b9ad6d2d95bc70b840d15323365f52fcdaea6ca", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "behat/mink": "~1.6@dev", + "behat/mink-browserkit-driver": "~1.2@dev", + "fabpot/goutte": "~1.0.4|~2.0|~3.1", + "php": ">=5.3.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "symfony/phpunit-bridge": "~2.7|~3.0" }, - "type": "library", + "type": "mink-driver", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + "Behat\\Mink\\Driver\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -262,45 +361,52 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "description": "Goutte driver for Mink framework", + "homepage": "http://mink.behat.org/", "keywords": [ - "constructor", - "instantiate" + "browser", + "goutte", + "headless", + "testing" ], - "time": "2015-06-14 21:17:01" + "time": "2016-03-05 09:04:22" }, { - "name": "doctrine/lexer", - "version": "v1.0.1", + "name": "behat/mink-selenium2-driver", + "version": "v1.3.1", "source": { "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "url": "https://github.com/minkphp/MinkSelenium2Driver.git", + "reference": "473a9f3ebe0c134ee1e623ce8a9c852832020288" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/minkphp/MinkSelenium2Driver/zipball/473a9f3ebe0c134ee1e623ce8a9c852832020288", + "reference": "473a9f3ebe0c134ee1e623ce8a9c852832020288", "shasum": "" }, "require": { - "php": ">=5.3.2" + "behat/mink": "~1.7@dev", + "instaclick/php-webdriver": "~1.1", + "php": ">=5.3.1" }, - "type": "library", + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "mink-driver", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "psr-4": { + "Behat\\Mink\\Driver\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -309,102 +415,101 @@ ], "authors": [ { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Pete Otaqui", + "email": "pete@otaqui.com", + "homepage": "https://github.com/pete-otaqui" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "description": "Selenium2 (WebDriver) driver for Mink framework", + "homepage": "http://mink.behat.org/", "keywords": [ - "lexer", - "parser" + "ajax", + "browser", + "javascript", + "selenium", + "testing", + "webdriver" ], - "time": "2014-09-09 13:34:57" + "time": "2016-03-05 09:10:18" }, { - "name": "erusev/parsedown", - "version": "1.6.0", + "name": "behat/transliterator", + "version": "v1.1.0", "source": { "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7" + "url": "https://github.com/Behat/Transliterator.git", + "reference": "868e05be3a9f25ba6424c2dd4849567f50715003" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7", - "reference": "3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7", + "url": "https://api.github.com/repos/Behat/Transliterator/zipball/868e05be3a9f25ba6424c2dd4849567f50715003", + "reference": "868e05be3a9f25ba6424c2dd4849567f50715003", "shasum": "" }, + "require": { + "php": ">=5.3.3" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, "autoload": { "psr-0": { - "Parsedown": "" + "Behat\\Transliterator": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } + "Artistic-1.0" ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", + "description": "String transliterator", "keywords": [ - "markdown", - "parser" + "i18n", + "slug", + "transliterator" ], - "time": "2015-10-04 16:44:32" + "time": "2015-09-28 16:26:35" }, { - "name": "herrera-io/json", - "version": "1.0.3", + "name": "doctrine/instantiator", + "version": "1.0.5", "source": { "type": "git", - "url": "https://github.com/kherge-abandoned/php-json.git", - "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kherge-abandoned/php-json/zipball/60c696c9370a1e5136816ca557c17f82a6fa83f1", - "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", "shasum": "" }, "require": { - "ext-json": "*", - "justinrainbow/json-schema": ">=1.0,<2.0-dev", - "php": ">=5.3.3", - "seld/jsonlint": ">=1.0,<2.0-dev" + "php": ">=5.3,<8.0-DEV" }, "require-dev": { - "herrera-io/phpunit-test-case": "1.*", - "mikey179/vfsstream": "1.1.0", - "phpunit/phpunit": "3.7.*" + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "files": [ - "src/lib/json_version.php" - ], - "psr-0": { - "Herrera\\Json": "src/lib" + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, "notification-url": "https://packagist.org/downloads/", @@ -413,57 +518,49 @@ ], "authors": [ { - "name": "Kevin Herrera", - "email": "kevin@herrera.io", - "homepage": "http://kevin.herrera.io" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" } ], - "description": "A library for simplifying JSON linting and validation.", - "homepage": "http://herrera-io.github.com/php-json", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", "keywords": [ - "json", - "lint", - "schema", - "validate" + "constructor", + "instantiate" ], - "time": "2013-10-30 16:51:34" + "time": "2015-06-14 21:17:01" }, { - "name": "herrera-io/phar-update", - "version": "1.0.3", + "name": "fabpot/goutte", + "version": "v3.1.2", "source": { "type": "git", - "url": "https://github.com/kherge-abandoned/php-phar-update.git", - "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b" + "url": "https://github.com/FriendsOfPHP/Goutte.git", + "reference": "3cbc6ed222422a28400e470050f14928a153207e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kherge-abandoned/php-phar-update/zipball/00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b", - "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b", + "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/3cbc6ed222422a28400e470050f14928a153207e", + "reference": "3cbc6ed222422a28400e470050f14928a153207e", "shasum": "" }, "require": { - "herrera-io/json": "1.*", - "kherge/version": "1.*", - "php": ">=5.3.3" - }, - "require-dev": { - "herrera-io/phpunit-test-case": "1.*", - "mikey179/vfsstream": "1.1.0", - "phpunit/phpunit": "3.7.*" + "guzzlehttp/guzzle": "^6.0", + "php": ">=5.5.0", + "symfony/browser-kit": "~2.1|~3.0", + "symfony/css-selector": "~2.1|~3.0", + "symfony/dom-crawler": "~2.1|~3.0" }, - "type": "library", + "type": "application", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { - "files": [ - "src/lib/constants.php" - ], - "psr-0": { - "Herrera\\Phar\\Update": "src/lib" + "psr-4": { + "Goutte\\": "Goutte" } }, "notification-url": "https://packagist.org/downloads/", @@ -472,87 +569,98 @@ ], "authors": [ { - "name": "Kevin Herrera", - "email": "kevin@herrera.io", - "homepage": "http://kevin.herrera.io" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "A library for self-updating Phars.", - "homepage": "http://herrera-io.github.com/php-phar-update", + "description": "A simple PHP Web Scraper", + "homepage": "https://github.com/FriendsOfPHP/Goutte", "keywords": [ - "phar", - "update" + "scraper" ], - "time": "2013-10-30 17:23:01" + "time": "2015-11-05 12:58:44" }, { - "name": "jms/metadata", - "version": "1.5.1", + "name": "guzzlehttp/guzzle", + "version": "6.2.2", "source": { "type": "git", - "url": "https://github.com/schmittjoh/metadata.git", - "reference": "22b72455559a25777cfd28c4ffda81ff7639f353" + "url": "https://github.com/guzzle/guzzle.git", + "reference": "ebf29dee597f02f09f4d5bbecc68230ea9b08f60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/22b72455559a25777cfd28c4ffda81ff7639f353", - "reference": "22b72455559a25777cfd28c4ffda81ff7639f353", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ebf29dee597f02f09f4d5bbecc68230ea9b08f60", + "reference": "ebf29dee597f02f09f4d5bbecc68230ea9b08f60", "shasum": "" }, "require": { - "php": ">=5.3.0" + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.3.1", + "php": ">=5.5" }, "require-dev": { - "doctrine/cache": "~1.0" + "ext-curl": "*", + "phpunit/phpunit": "^4.0", + "psr/log": "^1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5.x-dev" + "dev-master": "6.2-dev" } }, "autoload": { - "psr-0": { - "Metadata\\": "src/" + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache" + "MIT" ], "authors": [ { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh", - "role": "Developer of wrapped JMSSerializerBundle" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "description": "Class/method/property metadata management in PHP", + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", "keywords": [ - "annotations", - "metadata", - "xml", - "yaml" + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" ], - "time": "2014-07-12 07:13:19" + "time": "2016-10-08 15:01:37" }, { - "name": "jms/parser-lib", - "version": "1.0.0", + "name": "guzzlehttp/promises", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/schmittjoh/parser-lib.git", - "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" + "url": "https://github.com/guzzle/promises.git", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", - "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/c10d860e2a9595f8883527fa0021c7da9e65f579", + "reference": "c10d860e2a9595f8883527fa0021c7da9e65f579", "shasum": "" }, "require": { - "phpoption/phpoption": ">=0.9,<2.0-dev" + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" }, "type": "library", "extra": { @@ -561,183 +669,176 @@ } }, "autoload": { - "psr-0": { - "JMS\\": "src/" - } + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache2" + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" ], - "description": "A library for easily creating recursive-descent parsers.", - "time": "2012-11-18 18:08:43" + "time": "2016-05-18 16:56:05" }, { - "name": "jms/serializer", + "name": "guzzlehttp/psr7", "version": "1.3.1", "source": { "type": "git", - "url": "https://github.com/schmittjoh/serializer.git", - "reference": "705d0b4633b9c44e6253aa18306b3972282cd3a3" + "url": "https://github.com/guzzle/psr7.git", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/705d0b4633b9c44e6253aa18306b3972282cd3a3", - "reference": "705d0b4633b9c44e6253aa18306b3972282cd3a3", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", + "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "doctrine/instantiator": "^1.0.3", - "jms/metadata": "~1.1", - "jms/parser-lib": "1.*", - "php": ">=5.5.0", - "phpcollection/phpcollection": "~0.1", - "phpoption/phpoption": "^1.1" + "php": ">=5.4.0", + "psr/http-message": "~1.0" }, - "conflict": { - "twig/twig": "<1.12" + "provide": { + "psr/http-message-implementation": "1.0" }, "require-dev": { - "doctrine/orm": "~2.1", - "doctrine/phpcr-odm": "^1.3|^2.0", - "jackalope/jackalope-doctrine-dbal": "^1.1.5", - "phpunit/phpunit": "^4.8|^5.0", - "propel/propel1": "~1.7", - "symfony/filesystem": "^2.1", - "symfony/form": "~2.1", - "symfony/translation": "^2.1", - "symfony/validator": "^2.2", - "symfony/yaml": "^2.1", - "twig/twig": "~1.12|~2.0" - }, - "suggest": { - "symfony/yaml": "Required if you'd like to serialize data to YAML format." + "phpunit/phpunit": "~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.4-dev" } }, "autoload": { - "psr-0": { - "JMS\\Serializer": "src/" - } + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache2" + "MIT" ], "authors": [ { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.", - "homepage": "http://jmsyst.com/libs/serializer", + "description": "PSR-7 message implementation", "keywords": [ - "deserialization", - "jaxb", - "json", - "serialization", - "xml" + "http", + "message", + "stream", + "uri" ], - "time": "2016-08-23 17:20:24" + "time": "2016-06-24 23:00:38" }, { - "name": "justinrainbow/json-schema", - "version": "1.6.1", + "name": "instaclick/php-webdriver", + "version": "1.4.3", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341" + "url": "https://github.com/instaclick/php-webdriver.git", + "reference": "0c20707dcf30a32728fd6bdeeab996c887fdb2fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/cc84765fb7317f6b07bd8ac78364747f95b86341", - "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341", + "url": "https://api.github.com/repos/instaclick/php-webdriver/zipball/0c20707dcf30a32728fd6bdeeab996c887fdb2fb", + "reference": "0c20707dcf30a32728fd6bdeeab996c887fdb2fb", "shasum": "" }, "require": { - "php": ">=5.3.29" + "ext-curl": "*", + "php": ">=5.3.2" }, "require-dev": { - "json-schema/json-schema-test-suite": "1.1.0", - "phpdocumentor/phpdocumentor": "~2", - "phpunit/phpunit": "~3.7" + "satooshi/php-coveralls": "dev-master" }, - "bin": [ - "bin/validate-json" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" + "psr-0": { + "WebDriver": "lib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "Apache-2.0" ], "authors": [ { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "name": "Justin Bishop", + "email": "jubishop@gmail.com", + "role": "Developer" }, { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" + "name": "Anthon Pang", + "email": "apang@softwaredevelopment.ca", + "role": "Fork Maintainer" } ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", + "description": "PHP WebDriver for Selenium 2", + "homepage": "http://instaclick.com/", "keywords": [ - "json", - "schema" + "browser", + "selenium", + "webdriver", + "webtest" ], - "time": "2016-01-25 15:43:01" + "time": "2015-06-15 20:19:33" }, { - "name": "kherge/version", - "version": "1.0.1", + "name": "jakoch/phantomjs-installer", + "version": "2.1.1-p07", "source": { "type": "git", - "url": "https://github.com/kherge-abandoned/Version.git", - "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30" + "url": "https://github.com/jakoch/phantomjs-installer.git", + "reference": "4d0e994f110a79738b73083c2c3086d162547bd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kherge-abandoned/Version/zipball/f07cf83f8ce533be8f93d2893d96d674bbeb7e30", - "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30", + "url": "https://api.github.com/repos/jakoch/phantomjs-installer/zipball/4d0e994f110a79738b73083c2c3086d162547bd6", + "reference": "4d0e994f110a79738b73083c2c3086d162547bd6", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ext-bz2": "*", + "ext-openssl": "*", + "php": ">5.3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } + "require-dev": { + "composer/composer": "^1.2", + "phpunit/phpunit": "^4.8" }, + "type": "custom-installer", "autoload": { + "psr-4": { + "PhantomInstaller\\Test\\": "tests/" + }, "psr-0": { - "KevinGH\\Version": "src/lib/" + "PhantomInstaller\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -746,13 +847,17 @@ ], "authors": [ { - "name": "Kevin Herrera", - "email": "me@kevingh.com" + "name": "Jens-André Koch", + "email": "jakoch@web.de" } ], - "description": "A parsing and comparison library for semantic versioning.", - "homepage": "http://github.com/kherge/Version", - "time": "2012-08-16 17:13:03" + "description": "A Composer package which installs the PhantomJS binary (Linux, Windows, Mac) into `/bin` of your project.", + "keywords": [ + "binaries", + "headless", + "phantomjs" + ], + "time": "2016-10-12 01:52:42" }, { "name": "mikey179/vfsStream", @@ -801,245 +906,35 @@ "time": "2016-07-18 14:02:57" }, { - "name": "monolog/monolog", - "version": "1.21.0", + "name": "phpdocumentor/reflection-common", + "version": "1.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952", - "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" + "php": ">=5.5" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "~5.3" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "phpunit/phpunit": "^4.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "time": "2016-07-29 03:23:52" - }, - { - "name": "nikic/php-parser", - "version": "v1.4.1", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51", - "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "files": [ - "lib/bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2015-09-19 14:15:08" - }, - { - "name": "phpcollection/phpcollection", - "version": "0.5.0", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-collection.git", - "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", - "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", - "shasum": "" - }, - "require": { - "phpoption/phpoption": "1.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.4-dev" - } - }, - "autoload": { - "psr-0": { - "PhpCollection": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache2" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "General-Purpose Collection Library for PHP", - "keywords": [ - "collection", - "list", - "map", - "sequence", - "set" - ], - "time": "2015-05-17 12:39:23" - }, - { - "name": "phpdocumentor/fileset", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/Fileset.git", - "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/Fileset/zipball/bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", - "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/finder": "~2.1" - }, - "require-dev": { - "phpunit/phpunit": "~3.7" - }, - "type": "library", - "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/", - "tests/unit/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Fileset component for collecting a set of files given directories and file paths", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "files", - "fileset", - "phpdoc" - ], - "time": "2013-08-06 21:07:42" - }, - { - "name": "phpdocumentor/graphviz", - "version": "1.0.4", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/GraphViz.git", - "reference": "a906a90a9f230535f25ea31caf81b2323956283f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/GraphViz/zipball/a906a90a9f230535f25ea31caf81b2323956283f", - "reference": "a906a90a9f230535f25ea31caf81b2323956283f", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/", - "tests/unit" + "phpDocumentor\\Reflection\\": [ + "src" ] } }, @@ -1049,188 +944,49 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "time": "2016-02-02 13:00:08" - }, - { - "name": "phpdocumentor/phpdocumentor", - "version": "v2.9.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/phpDocumentor2.git", - "reference": "be607da0eef9b9249c43c5b4820d25d631c73667" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/phpDocumentor2/zipball/be607da0eef9b9249c43c5b4820d25d631c73667", - "reference": "be607da0eef9b9249c43c5b4820d25d631c73667", - "shasum": "" - }, - "require": { - "cilex/cilex": "~1.0", - "erusev/parsedown": "~1.0", - "herrera-io/phar-update": "1.0.3", - "jms/serializer": ">=0.12", - "monolog/monolog": "~1.6", - "php": ">=5.3.3", - "phpdocumentor/fileset": "~1.0", - "phpdocumentor/graphviz": "~1.0", - "phpdocumentor/reflection": "^3.0", - "phpdocumentor/reflection-docblock": "~2.0", - "symfony/config": "~2.3", - "symfony/console": "~2.3", - "symfony/event-dispatcher": "~2.1", - "symfony/process": "~2.0", - "symfony/stopwatch": "~2.3", - "symfony/validator": "~2.2", - "twig/twig": "~1.3", - "zendframework/zend-cache": "~2.1", - "zendframework/zend-config": "~2.1", - "zendframework/zend-filter": "~2.1", - "zendframework/zend-i18n": "~2.1", - "zendframework/zend-serializer": "~2.1", - "zendframework/zend-servicemanager": "~2.1", - "zendframework/zend-stdlib": "~2.1", - "zetacomponents/document": ">=1.3.1" - }, - "require-dev": { - "behat/behat": "~3.0", - "mikey179/vfsstream": "~1.2", - "mockery/mockery": "~0.9@dev", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.4", - "symfony/expression-language": "~2.4" - }, - "suggest": { - "ext-twig": "Enabling the twig extension improves the generation of twig based templates.", - "ext-xslcache": "Enabling the XSLCache extension improves the generation of xml based templates." - }, - "bin": [ - "bin/phpdoc.php", - "bin/phpdoc" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "2.9-dev" - } - }, - "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/", - "tests/unit/" - ], - "Cilex\\Provider": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Documentation Generator for PHP", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "api", - "application", - "dga", - "documentation", - "phpdoc" - ], - "time": "2016-05-22 09:50:56" - }, - { - "name": "phpdocumentor/reflection", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/Reflection.git", - "reference": "793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/Reflection/zipball/793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d", - "reference": "793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^1.0", - "php": ">=5.3.3", - "phpdocumentor/reflection-docblock": "~2.0", - "psr/log": "~1.0" - }, - "require-dev": { - "behat/behat": "~2.4", - "mockery/mockery": "~0.8", - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/", - "tests/unit/", - "tests/mocks/" - ] + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" ], - "description": "Reflection library to do Static Analysis for PHP Projects", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", "homepage": "http://www.phpdoc.org", "keywords": [ + "FQSEN", "phpDocumentor", "phpdoc", "reflection", "static analysis" ], - "time": "2016-05-21 08:42:32" + "time": "2015-12-27 11:43:31" }, { "name": "phpdocumentor/reflection-docblock", - "version": "2.0.4", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { - "psr-0": { - "phpDocumentor": [ + "psr-4": { + "phpDocumentor\\Reflection\\": [ "src/" ] } @@ -1242,60 +998,58 @@ "authors": [ { "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" + "email": "me@mikevanriel.com" } ], - "time": "2015-02-03 12:10:50" + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-09-30 07:12:33" }, { - "name": "phpoption/phpoption", - "version": "1.5.0", + "name": "phpdocumentor/type-resolver", + "version": "0.2", "source": { "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", - "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { - "phpunit/phpunit": "4.7.*" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "PhpOption\\": "src/" + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache2" + "MIT" ], "authors": [ { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ], - "time": "2015-07-25 16:39:46" + "time": "2016-06-10 07:14:17" }, { "name": "phpspec/prophecy", @@ -1604,16 +1358,16 @@ }, { "name": "phpunit/phpunit", - "version": "4.8.27", + "version": "4.8.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90" + "reference": "283111a903eb9225aedb95e846bef876e006a688" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c062dddcb68e44b563f66ee319ddae2b5a322a90", - "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/283111a903eb9225aedb95e846bef876e006a688", + "reference": "283111a903eb9225aedb95e846bef876e006a688", "shasum": "" }, "require": { @@ -1627,7 +1381,7 @@ "phpunit/php-code-coverage": "~2.1", "phpunit/php-file-iterator": "~1.4", "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", + "phpunit/php-timer": ">=1.0.6", "phpunit/phpunit-mock-objects": "~2.3", "sebastian/comparator": "~1.1", "sebastian/diff": "~1.2", @@ -1672,7 +1426,7 @@ "testing", "xunit" ], - "time": "2016-07-21 06:48:14" + "time": "2015-08-07 03:57:43" }, { "name": "phpunit/phpunit-mock-objects", @@ -1731,81 +1485,67 @@ "time": "2015-10-02 06:51:40" }, { - "name": "phpunit/phpunit-selenium", - "version": "2.0.2", + "name": "psr/http-message", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/giorgiosironi/phpunit-selenium.git", - "reference": "2bad798ec0daf20d2854400e3bc5329ee0a7b2d1" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/giorgiosironi/phpunit-selenium/zipball/2bad798ec0daf20d2854400e3bc5329ee0a7b2d1", - "reference": "2bad798ec0daf20d2854400e3bc5329ee0a7b2d1", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "ext-curl": "*", - "ext-dom": "*", - "php": ">=5.3.3", - "phpunit/phpunit": "~4.8", - "sebastian/comparator": "~1.0" - }, - "require-dev": { - "phing/phing": "2.*" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { - "classmap": [ - "PHPUnit/" - ] + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Giorgio Sironi", - "email": "info@giorgiosironi.com", - "role": "developer" - }, - { - "name": "Ivan Kurnosov", - "email": "zerkms@zerkms.com", - "role": "developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "original developer" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Selenium Server integration for PHPUnit", - "homepage": "http://www.phpunit.de/", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "phpunit", - "selenium", - "testing", - "xunit" + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" ], - "time": "2016-03-01 10:33:56" + "time": "2016-08-06 14:39:51" }, { - "name": "pimple/pimple", - "version": "v1.1.1", + "name": "psr/log", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", - "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", "shasum": "" }, "require": { @@ -1814,53 +1554,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-0": { - "Pimple": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", - "homepage": "http://pimple.sensiolabs.org", - "keywords": [ - "container", - "dependency injection" - ], - "time": "2013-11-22 08:30:29" - }, - { - "name": "psr/log", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -2260,30 +1954,43 @@ "time": "2015-06-21 13:59:46" }, { - "name": "seld/jsonlint", - "version": "1.4.1", + "name": "symfony/browser-kit", + "version": "v3.1.6", "source": { "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "e827b5254d3e58c736ea2c5616710983d80b0b70" + "url": "https://github.com/symfony/browser-kit.git", + "reference": "901319a31c9b3cee7857b4aeeb81b5d64dfa34fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/e827b5254d3e58c736ea2c5616710983d80b0b70", - "reference": "e827b5254d3e58c736ea2c5616710983d80b0b70", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/901319a31c9b3cee7857b4aeeb81b5d64dfa34fc", + "reference": "901319a31c9b3cee7857b4aeeb81b5d64dfa34fc", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0" + "php": ">=5.5.9", + "symfony/dom-crawler": "~2.8|~3.0" + }, + "require-dev": { + "symfony/css-selector": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" + }, + "suggest": { + "symfony/process": "" }, - "bin": [ - "bin/jsonlint" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, "autoload": { "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2291,37 +1998,91 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" + "description": "Symfony BrowserKit Component", + "homepage": "https://symfony.com", + "time": "2016-09-06 11:02:40" + }, + { + "name": "symfony/class-loader", + "version": "v3.1.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/class-loader.git", + "reference": "bcb072aba46ddf3b1a496438c63be6be647739aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/bcb072aba46ddf3b1a496438c63be6be647739aa", + "reference": "bcb072aba46ddf3b1a496438c63be6be647739aa", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "symfony/finder": "~2.8|~3.0", + "symfony/polyfill-apcu": "~1.1" + }, + "suggest": { + "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\ClassLoader\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } ], - "time": "2016-09-14 15:17:56" + "description": "Symfony ClassLoader Component", + "homepage": "https://symfony.com", + "time": "2016-09-06 23:30:54" }, { "name": "symfony/config", - "version": "v2.8.12", + "version": "v3.1.6", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "f8b1922bbda9d2ac86aecd649399040bce849fde" + "reference": "949e7e846743a7f9e46dc50eb639d5fde1f53341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/f8b1922bbda9d2ac86aecd649399040bce849fde", - "reference": "f8b1922bbda9d2ac86aecd649399040bce849fde", + "url": "https://api.github.com/repos/symfony/config/zipball/949e7e846743a7f9e46dc50eb639d5fde1f53341", + "reference": "949e7e846743a7f9e46dc50eb639d5fde1f53341", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/filesystem": "~2.3|~3.0.0" + "php": ">=5.5.9", + "symfony/filesystem": "~2.8|~3.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -2329,7 +2090,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -2356,31 +2117,31 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2016-09-14 20:31:12" + "time": "2016-09-25 08:27:07" }, { "name": "symfony/console", - "version": "v2.8.12", + "version": "v3.1.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "d7a5a88178f94dcc29531ea4028ea614e35452d4" + "reference": "c99da1119ae61e15de0e4829196b9fba6f73d065" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/d7a5a88178f94dcc29531ea4028ea614e35452d4", - "reference": "d7a5a88178f94dcc29531ea4028ea614e35452d4", + "url": "https://api.github.com/repos/symfony/console/zipball/c99da1119ae61e15de0e4829196b9fba6f73d065", + "reference": "c99da1119ae61e15de0e4829196b9fba6f73d065", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/debug": "~2.7,>=2.7.2|~3.0.0", + "php": ">=5.5.9", + "symfony/debug": "~2.8|~3.0", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1|~3.0.0", - "symfony/process": "~2.1|~3.0.0" + "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" }, "suggest": { "psr/log": "For using the console logger", @@ -2390,7 +2151,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -2417,42 +2178,34 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2016-09-28 00:10:16" + "time": "2016-10-06 01:44:51" }, { - "name": "symfony/debug", - "version": "v3.0.9", + "name": "symfony/css-selector", + "version": "v3.1.6", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a" + "url": "https://github.com/symfony/css-selector.git", + "reference": "ca809c64072e0fe61c1c7fb3c76cdc32265042ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a", - "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ca809c64072e0fe61c1c7fb3c76cdc32265042ac", + "reference": "ca809c64072e0fe61c1c7fb3c76cdc32265042ac", "shasum": "" }, "require": { - "php": ">=5.5.9", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/class-loader": "~2.8|~3.0", - "symfony/http-kernel": "~2.8|~3.0" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\CssSelector\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2463,6 +2216,10 @@ "MIT" ], "authors": [ + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" @@ -2472,47 +2229,44 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Debug Component", + "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2016-07-30 07:22:48" + "time": "2016-09-06 11:02:40" }, { - "name": "symfony/event-dispatcher", - "version": "v2.8.12", + "name": "symfony/debug", + "version": "v3.1.6", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "889983a79a043dfda68f38c38b6dba092dd49cd8" + "url": "https://github.com/symfony/debug.git", + "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/889983a79a043dfda68f38c38b6dba092dd49cd8", - "reference": "889983a79a043dfda68f38c38b6dba092dd49cd8", + "url": "https://api.github.com/repos/symfony/debug/zipball/e2b3f74a67fc928adc3c1b9027f73e1bc01190a8", + "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9", + "psr/log": "~1.0" }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.0,>=2.0.5|~3.0.0", - "symfony/dependency-injection": "~2.6|~3.0.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/stopwatch": "~2.3|~3.0.0" + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "require-dev": { + "symfony/class-loader": "~2.8|~3.0", + "symfony/http-kernel": "~2.8|~3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Component\\Debug\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2532,36 +2286,47 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony EventDispatcher Component", + "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2016-07-28 16:56:28" + "time": "2016-09-06 11:02:40" }, { - "name": "symfony/filesystem", - "version": "v3.0.9", + "name": "symfony/dependency-injection", + "version": "v3.1.6", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "b2da5009d9bacbd91d83486aa1f44c793a8c380d" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "c578891216090069cd6d2e573402e13e39b3ad5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2da5009d9bacbd91d83486aa1f44c793a8c380d", - "reference": "b2da5009d9bacbd91d83486aa1f44c793a8c380d", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/c578891216090069cd6d2e573402e13e39b3ad5c", + "reference": "c578891216090069cd6d2e573402e13e39b3ad5c", "shasum": "" }, "require": { "php": ">=5.5.9" }, + "require-dev": { + "symfony/config": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/yaml": "~2.8.7|~3.0.7|~3.1.1|~3.2" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Filesystem\\": "" + "Symfony\\Component\\DependencyInjection\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2581,36 +2346,43 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Filesystem Component", + "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2016-07-20 05:43:46" + "time": "2016-10-24 15:52:44" }, { - "name": "symfony/finder", - "version": "v2.8.12", + "name": "symfony/dom-crawler", + "version": "v3.1.6", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "bc24c8f5674c6f6841f2856b70e5d60784be5691" + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "59eee3c76eb89f21857798620ebdad7a05ad14f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/bc24c8f5674c6f6841f2856b70e5d60784be5691", - "reference": "bc24c8f5674c6f6841f2856b70e5d60784be5691", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/59eee3c76eb89f21857798620ebdad7a05ad14f4", + "reference": "59eee3c76eb89f21857798620ebdad7a05ad14f4", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "symfony/css-selector": "~2.8|~3.0" + }, + "suggest": { + "symfony/css-selector": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" + "Symfony\\Component\\DomCrawler\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2630,42 +2402,50 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Finder Component", + "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2016-09-28 00:10:16" + "time": "2016-10-18 15:46:07" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.2.0", + "name": "symfony/event-dispatcher", + "version": "v3.1.6", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "dff51f72b0706335131b00a7f49606168c582594" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "28b0832b2553ffb80cabef6a7a812ff1e670c0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594", - "reference": "dff51f72b0706335131b00a7f49606168c582594", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/28b0832b2553ffb80cabef6a7a812ff1e670c0bc", + "reference": "28b0832b2553ffb80cabef6a7a812ff1e670c0bc", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0", + "symfony/dependency-injection": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0" }, "suggest": { - "ext-mbstring": "For best performance" + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "3.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Component\\EventDispatcher\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2674,51 +2454,44 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2016-05-18 14:26:46" + "time": "2016-10-13 06:28:43" }, { - "name": "symfony/process", - "version": "v2.8.12", + "name": "symfony/filesystem", + "version": "v3.1.6", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "024de37f8a6b9e5e8244d9eb3fcf3e467dd2a93f" + "url": "https://github.com/symfony/filesystem.git", + "reference": "0565b61bf098cb4dc09f4f103f033138ae4f42c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/024de37f8a6b9e5e8244d9eb3fcf3e467dd2a93f", - "reference": "024de37f8a6b9e5e8244d9eb3fcf3e467dd2a93f", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/0565b61bf098cb4dc09f4f103f033138ae4f42c6", + "reference": "0565b61bf098cb4dc09f4f103f033138ae4f42c6", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Component\\Filesystem\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2738,39 +2511,42 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2016-09-29 14:03:54" + "time": "2016-10-18 04:30:12" }, { - "name": "symfony/stopwatch", - "version": "v2.8.12", + "name": "symfony/polyfill-mbstring", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "35bae476693150728b0eb51647faac82faf9aaca" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "dff51f72b0706335131b00a7f49606168c582594" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/35bae476693150728b0eb51647faac82faf9aaca", - "reference": "35bae476693150728b0eb51647faac82faf9aaca", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594", + "reference": "dff51f72b0706335131b00a7f49606168c582594", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "1.2-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" + "Symfony\\Polyfill\\Mbstring\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2779,30 +2555,37 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Stopwatch Component", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", - "time": "2016-06-29 05:29:29" + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2016-05-18 14:26:46" }, { "name": "symfony/translation", - "version": "v3.0.9", + "version": "v3.1.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26" + "reference": "ff1285087397d2f64041b35e591f3025881c90cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/eee6c664853fd0576f21ae25725cfffeafe83f26", - "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26", + "url": "https://api.github.com/repos/symfony/translation/zipball/ff1285087397d2f64041b35e591f3025881c90cd", + "reference": "ff1285087397d2f64041b35e591f3025881c90cd", "shasum": "" }, "require": { @@ -2826,7 +2609,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -2853,107 +2636,34 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2016-07-30 07:22:48" + "time": "2016-10-18 04:30:12" }, { - "name": "symfony/validator", - "version": "v2.8.12", + "name": "symfony/yaml", + "version": "v3.1.6", "source": { "type": "git", - "url": "https://github.com/symfony/validator.git", - "reference": "bbd771ada2317a13acaba1e72e8d6e175bd1de18" + "url": "https://github.com/symfony/yaml.git", + "reference": "7ff51b06c6c3d5cc6686df69004a42c69df09e27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/bbd771ada2317a13acaba1e72e8d6e175bd1de18", - "reference": "bbd771ada2317a13acaba1e72e8d6e175bd1de18", + "url": "https://api.github.com/repos/symfony/yaml/zipball/7ff51b06c6c3d5cc6686df69004a42c69df09e27", + "reference": "7ff51b06c6c3d5cc6686df69004a42c69df09e27", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation": "~2.4|~3.0.0" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/cache": "~1.0", - "egulias/email-validator": "~1.2,>=1.2.1", - "symfony/config": "~2.2|~3.0.0", - "symfony/expression-language": "~2.4|~3.0.0", - "symfony/http-foundation": "~2.3|~3.0.0", - "symfony/intl": "~2.7.4|~2.8|~3.0.0", - "symfony/property-access": "~2.3|~3.0.0", - "symfony/yaml": "~2.0,>=2.0.5|~3.0.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader and metadata cache.", - "egulias/email-validator": "Strict (RFC compliant) email validation", - "symfony/config": "", - "symfony/expression-language": "For using the 2.4 Expression validator", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For using the 2.4 Validator API", - "symfony/yaml": "" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Validator\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Validator Component", - "homepage": "https://symfony.com", - "time": "2016-10-03 17:30:13" - }, - { - "name": "symfony/yaml", - "version": "v3.1.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "368b9738d4033c8b93454cb0dbd45d305135a6d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/368b9738d4033c8b93454cb0dbd45d305135a6d3", - "reference": "368b9738d4033c8b93454cb0dbd45d305135a6d3", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" + "Symfony\\Component\\Yaml\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2975,769 +2685,57 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2016-09-25 08:27:07" - }, - { - "name": "twig/twig", - "version": "v1.26.1", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "a09d8ee17ac1cfea29ed60c83960ad685c6a898d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a09d8ee17ac1cfea29ed60c83960ad685c6a898d", - "reference": "a09d8ee17ac1cfea29ed60c83960ad685c6a898d", - "shasum": "" - }, - "require": { - "php": ">=5.2.7" - }, - "require-dev": { - "symfony/debug": "~2.7", - "symfony/phpunit-bridge": "~2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.26-dev" - } - }, - "autoload": { - "psr-0": { - "Twig_": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - }, - { - "name": "Twig Team", - "homepage": "http://twig.sensiolabs.org/contributors", - "role": "Contributors" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "http://twig.sensiolabs.org", - "keywords": [ - "templating" - ], - "time": "2016-10-05 18:57:41" - }, - { - "name": "zendframework/zend-cache", - "version": "2.7.1", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-cache.git", - "reference": "2c68def8f96ce842d2f2a9a69e2f3508c2f5312d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-cache/zipball/2c68def8f96ce842d2f2a9a69e2f3508c2f5312d", - "reference": "2c68def8f96ce842d2f2a9a69e2f3508c2f5312d", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpbench/phpbench": "^0.10.0", - "phpunit/phpunit": "^4.5", - "zendframework/zend-serializer": "^2.6", - "zendframework/zend-session": "^2.6.2" - }, - "suggest": { - "ext-apc": "APC or compatible extension, to use the APC storage adapter", - "ext-apcu": "APCU >= 5.1.0, to use the APCu storage adapter", - "ext-dba": "DBA, to use the DBA storage adapter", - "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter", - "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter", - "ext-mongo": "Mongo, to use MongoDb storage adapter", - "ext-redis": "Redis, to use Redis storage adapter", - "ext-wincache": "WinCache, to use the WinCache storage adapter", - "ext-xcache": "XCache, to use the XCache storage adapter", - "mongofill/mongofill": "Alternative to ext-mongo - a pure PHP implementation designed as a drop in replacement", - "zendframework/zend-serializer": "Zend\\Serializer component", - "zendframework/zend-session": "Zend\\Session component" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev", - "dev-develop": "2.8-dev" - }, - "zf": { - "component": "Zend\\Cache", - "config-provider": "Zend\\Cache\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Zend\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides a generic way to cache any data", - "homepage": "https://github.com/zendframework/zend-cache", - "keywords": [ - "cache", - "zf2" - ], - "time": "2016-05-12 21:47:55" - }, - { - "name": "zendframework/zend-config", - "version": "2.6.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-config.git", - "reference": "2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-config/zipball/2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d", - "reference": "2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "zendframework/zend-filter": "^2.6", - "zendframework/zend-i18n": "^2.5", - "zendframework/zend-json": "^2.6.1", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" - }, - "suggest": { - "zendframework/zend-filter": "Zend\\Filter component", - "zendframework/zend-i18n": "Zend\\I18n component", - "zendframework/zend-json": "Zend\\Json to use the Json reader or writer classes", - "zendframework/zend-servicemanager": "Zend\\ServiceManager for use with the Config Factory to retrieve reader and writer instances" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev", - "dev-develop": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Config\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides a nested object property based user interface for accessing this configuration data within application code", - "homepage": "https://github.com/zendframework/zend-config", - "keywords": [ - "config", - "zf2" - ], - "time": "2016-02-04 23:01:10" - }, - { - "name": "zendframework/zend-eventmanager", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-eventmanager.git", - "reference": "5c80bdee0e952be112dcec0968bad770082c3a6e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/5c80bdee0e952be112dcec0968bad770082c3a6e", - "reference": "5c80bdee0e952be112dcec0968bad770082c3a6e", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0" - }, - "require-dev": { - "athletic/athletic": "^0.1", - "container-interop/container-interop": "^1.1.0", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "^2.0", - "zendframework/zend-stdlib": "^2.7.3 || ^3.0" - }, - "suggest": { - "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", - "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\EventManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Trigger and listen to events within a PHP application", - "homepage": "https://github.com/zendframework/zend-eventmanager", - "keywords": [ - "event", - "eventmanager", - "events", - "zf2" - ], - "time": "2016-02-18 20:53:00" - }, - { - "name": "zendframework/zend-filter", - "version": "2.7.1", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-filter.git", - "reference": "84c50246428efb0a1e52868e162dab3e149d5b80" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/84c50246428efb0a1e52868e162dab3e149d5b80", - "reference": "84c50246428efb0a1e52868e162dab3e149d5b80", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "pear/archive_tar": "^1.4", - "phpunit/phpunit": "~4.0", - "zendframework/zend-crypt": "^2.6", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-uri": "^2.5" - }, - "suggest": { - "zendframework/zend-crypt": "Zend\\Crypt component, for encryption filters", - "zendframework/zend-i18n": "Zend\\I18n component for filters depending on i18n functionality", - "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for using the filter chain functionality", - "zendframework/zend-uri": "Zend\\Uri component, for the UriNormalize filter" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev", - "dev-develop": "2.8-dev" - }, - "zf": { - "component": "Zend\\Filter", - "config-provider": "Zend\\Filter\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Zend\\Filter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides a set of commonly needed data filters", - "homepage": "https://github.com/zendframework/zend-filter", - "keywords": [ - "filter", - "zf2" - ], - "time": "2016-04-18 18:32:43" + "time": "2016-10-24 18:41:13" }, { - "name": "zendframework/zend-hydrator", + "name": "webmozart/assert", "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-hydrator.git", - "reference": "22652e1661a5a10b3f564cf7824a2206cf5a4a65" + "url": "https://github.com/webmozart/assert.git", + "reference": "bb2d123231c095735130cc8f6d31385a44c7b308" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/22652e1661a5a10b3f564cf7824a2206cf5a4a65", - "reference": "22652e1661a5a10b3f564cf7824a2206cf5a4a65", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bb2d123231c095735130cc8f6d31385a44c7b308", + "reference": "bb2d123231c095735130cc8f6d31385a44c7b308", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" + "php": "^5.3.3|^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "^2.0@dev", - "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", - "zendframework/zend-filter": "^2.6", - "zendframework/zend-inputfilter": "^2.6", - "zendframework/zend-serializer": "^2.6.1", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" - }, - "suggest": { - "zendframework/zend-eventmanager": "^2.6.2 || ^3.0, to support aggregate hydrator usage", - "zendframework/zend-filter": "^2.6, to support naming strategy hydrator usage", - "zendframework/zend-serializer": "^2.6.1, to use the SerializableStrategy", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3, to support hydrator plugin manager usage" + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" }, "type": "library", "extra": { "branch-alias": { - "dev-release-1.0": "1.0-dev", - "dev-release-1.1": "1.1-dev", - "dev-master": "2.0-dev", - "dev-develop": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Hydrator\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "homepage": "https://github.com/zendframework/zend-hydrator", - "keywords": [ - "hydrator", - "zf2" - ], - "time": "2016-02-18 22:38:26" - }, - { - "name": "zendframework/zend-i18n", - "version": "2.7.3", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-i18n.git", - "reference": "b2db0d8246a865c659f93199f90f5fc2cd2f3cd8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/b2db0d8246a865c659f93199f90f5fc2cd2f3cd8", - "reference": "b2db0d8246a865c659f93199f90f5fc2cd2f3cd8", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "zendframework/zend-cache": "^2.6.1", - "zendframework/zend-config": "^2.6", - "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", - "zendframework/zend-filter": "^2.6.1", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-validator": "^2.6", - "zendframework/zend-view": "^2.6.3" - }, - "suggest": { - "ext-intl": "Required for most features of Zend\\I18n; included in default builds of PHP", - "zendframework/zend-cache": "Zend\\Cache component", - "zendframework/zend-config": "Zend\\Config component", - "zendframework/zend-eventmanager": "You should install this package to use the events in the translator", - "zendframework/zend-filter": "You should install this package to use the provided filters", - "zendframework/zend-i18n-resources": "Translation resources", - "zendframework/zend-servicemanager": "Zend\\ServiceManager component", - "zendframework/zend-validator": "You should install this package to use the provided validators", - "zendframework/zend-view": "You should install this package to use the provided view helpers" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev", - "dev-develop": "2.8-dev" - }, - "zf": { - "component": "Zend\\I18n", - "config-provider": "Zend\\I18n\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Zend\\I18n\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "homepage": "https://github.com/zendframework/zend-i18n", - "keywords": [ - "i18n", - "zf2" - ], - "time": "2016-06-07 21:08:30" - }, - { - "name": "zendframework/zend-json", - "version": "2.6.1", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-json.git", - "reference": "4c8705dbe4ad7d7e51b2876c5b9eea0ef916ba28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-json/zipball/4c8705dbe4ad7d7e51b2876c5b9eea0ef916ba28", - "reference": "4c8705dbe4ad7d7e51b2876c5b9eea0ef916ba28", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0" - }, - "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "zendframework/zend-http": "^2.5.4", - "zendframework/zend-server": "^2.6.1", - "zendframework/zend-stdlib": "^2.5 || ^3.0", - "zendframework/zendxml": "^1.0.2" - }, - "suggest": { - "zendframework/zend-http": "Zend\\Http component, required to use Zend\\Json\\Server", - "zendframework/zend-server": "Zend\\Server component, required to use Zend\\Json\\Server", - "zendframework/zend-stdlib": "Zend\\Stdlib component, for use with caching Zend\\Json\\Server responses", - "zendframework/zendxml": "To support Zend\\Json\\Json::fromXml() usage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev", - "dev-develop": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Json\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", - "homepage": "https://github.com/zendframework/zend-json", - "keywords": [ - "json", - "zf2" - ], - "time": "2016-02-04 21:20:26" - }, - { - "name": "zendframework/zend-serializer", - "version": "2.7.2", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-serializer.git", - "reference": "95385c2342fc335d5164eb95ac3ca230aa51223b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/95385c2342fc335d5164eb95ac3ca230aa51223b", - "reference": "95385c2342fc335d5164eb95ac3ca230aa51223b", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-json": "^2.5", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "^4.5", - "zendframework/zend-math": "^2.6", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" - }, - "suggest": { - "zendframework/zend-math": "(^2.6) To support Python Pickle serialization", - "zendframework/zend-servicemanager": "To support plugin manager support" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev", - "dev-develop": "2.8-dev" - }, - "zf": { - "component": "Zend\\Serializer", - "config-provider": "Zend\\Serializer\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Zend\\Serializer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover", - "homepage": "https://github.com/zendframework/zend-serializer", - "keywords": [ - "serializer", - "zf2" - ], - "time": "2016-05-11 16:05:56" - }, - { - "name": "zendframework/zend-servicemanager", - "version": "2.7.7", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-servicemanager.git", - "reference": "eeecb78945c2a9f653caded36ba5274e8a8f5468" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/eeecb78945c2a9f653caded36ba5274e8a8f5468", - "reference": "eeecb78945c2a9f653caded36ba5274e8a8f5468", - "shasum": "" - }, - "require": { - "container-interop/container-interop": "~1.0", - "php": "^5.5 || ^7.0" - }, - "require-dev": { - "athletic/athletic": "dev-master", - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "zendframework/zend-di": "~2.5", - "zendframework/zend-mvc": "~2.5" - }, - "suggest": { - "ocramius/proxy-manager": "ProxyManager 0.5.* to handle lazy initialization of services", - "zendframework/zend-di": "Zend\\Di component" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev", - "dev-develop": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\ServiceManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "homepage": "https://github.com/zendframework/zend-servicemanager", - "keywords": [ - "servicemanager", - "zf2" - ], - "time": "2016-09-01 19:03:15" - }, - { - "name": "zendframework/zend-stdlib", - "version": "2.7.7", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-stdlib.git", - "reference": "0e44eb46788f65e09e077eb7f44d2659143bcc1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/0e44eb46788f65e09e077eb7f44d2659143bcc1f", - "reference": "0e44eb46788f65e09e077eb7f44d2659143bcc1f", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-hydrator": "~1.1" - }, - "require-dev": { - "athletic/athletic": "~0.1", - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "zendframework/zend-config": "~2.5", - "zendframework/zend-eventmanager": "~2.5", - "zendframework/zend-filter": "~2.5", - "zendframework/zend-inputfilter": "~2.5", - "zendframework/zend-serializer": "~2.5", - "zendframework/zend-servicemanager": "~2.5" - }, - "suggest": { - "zendframework/zend-eventmanager": "To support aggregate hydrator usage", - "zendframework/zend-filter": "To support naming strategy hydrator usage", - "zendframework/zend-serializer": "Zend\\Serializer component", - "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-release-2.7": "2.7-dev", - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { "psr-4": { - "Zend\\Stdlib\\": "src/" + "Webmozart\\Assert\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "homepage": "https://github.com/zendframework/zend-stdlib", - "keywords": [ - "stdlib", - "zf2" - ], - "time": "2016-04-12 21:17:31" - }, - { - "name": "zetacomponents/base", - "version": "1.9", - "source": { - "type": "git", - "url": "https://github.com/zetacomponents/Base.git", - "reference": "f20df24e8de3e48b6b69b2503f917e457281e687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zetacomponents/Base/zipball/f20df24e8de3e48b6b69b2503f917e457281e687", - "reference": "f20df24e8de3e48b6b69b2503f917e457281e687", - "shasum": "" - }, - "require-dev": { - "zetacomponents/unit-test": "*" - }, - "type": "library", - "autoload": { - "classmap": [ - "src" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" + "MIT" ], "authors": [ { - "name": "Sergey Alexeev" - }, - { - "name": "Sebastian Bergmann" - }, - { - "name": "Jan Borsodi" - }, - { - "name": "Raymond Bosman" - }, - { - "name": "Frederik Holljen" - }, - { - "name": "Kore Nordmann" - }, - { - "name": "Derick Rethans" - }, - { - "name": "Vadym Savchuk" - }, - { - "name": "Tobias Schlitt" - }, - { - "name": "Alexandru Stanoi" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "The Base package provides the basic infrastructure that all packages rely on. Therefore every component relies on this package.", - "homepage": "https://github.com/zetacomponents", - "time": "2014-09-19 03:28:34" - }, - { - "name": "zetacomponents/document", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/zetacomponents/Document.git", - "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zetacomponents/Document/zipball/688abfde573cf3fe0730f82538fbd7aa9fc95bc8", - "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8", - "shasum": "" - }, - "require": { - "zetacomponents/base": "*" - }, - "require-dev": { - "zetacomponents/unit-test": "dev-master" - }, - "type": "library", - "autoload": { - "classmap": [ - "src" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Sebastian Bergmann" - }, - { - "name": "Kore Nordmann" - }, - { - "name": "Derick Rethans" - }, - { - "name": "Tobias Schlitt" - }, - { - "name": "Alexandru Stanoi" - } + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" ], - "description": "The Document components provides a general conversion framework for different semantic document markup languages like XHTML, Docbook, RST and similar.", - "homepage": "https://github.com/zetacomponents", - "time": "2013-12-19 11:40:00" + "time": "2016-08-09 15:02:57" } ], "aliases": [], diff --git a/testFramework/behat/features/bootstrap/MainContext.php b/testFramework/behat/features/bootstrap/MainContext.php new file mode 100644 index 0000000000..761d06df71 --- /dev/null +++ b/testFramework/behat/features/bootstrap/MainContext.php @@ -0,0 +1,137 @@ +setTimeZone(); + $this->loadLocalConfig(); + $this->baseUrl = $this->configParams['base_url']; + } + + /** + * @param null $tz + */ + public function setTimeZone($tz = null) + { + $TZ = $tz ?: 'UTC'; + putenv('TZ=' . $TZ); + date_default_timezone_set($TZ); + } + + /** + * + */ + protected function loadLocalConfig() + { + $user = isset($_SERVER['USER']) ? $_SERVER['USER'] : 'EXAMPLE'; + if ($user == 'EXAMPLE' && isset($_ENV['USER'])) { + $user = $_ENV['USER']; + } + + $path = dirname(__DIR__); + + $travis = $user == 'travis' || (isset($_SERVER['TRAVIS']) && $_SERVER['TRAVIS'] == 'true') || (isset($_ENV['TRAVIS']) && $_ENV['TRAVIS'] == 'true'); + if ($travis && file_exists($path . '/config/localconfig_travis.php')) { + $user = 'travis'; + } + + echo "\nSeeking config file: " . $path . '/config/localconfig_' . $user . '.php' . "\n\n"; + if ($travis) { + include($path . '/config/localconfig_travis.php'); + } elseif (isset($user) && $user != '' && file_exists($path . '/config/localconfig_' . $user . '.php')) { + include($path . '/config/localconfig_' . $user . '.php'); + } elseif (file_exists($path . '/config/localconfig_EXAMPLE.php')) { + include($path . '/config/localconfig_EXAMPLE.php'); + } else { + die('COULD NOT FIND CONFIG FILE'); + } + $this->setLocalConfigParams(); + } + + /** + * + */ + protected function setLocalConfigParams() + { + $this->configParams['admin_password_main'] = $this->configParams['admin_password_install']; + if ($this->configParams['serverSchema'] == 'http://') { + $this->configParams['admin_password_main'] = $this->configParams['admin_password_install'] . '1'; + } + } + + + /** + * @param string $sql + * @return bool|mysqli_result + */ + public function doDbQuery($sql = '') + { + if (!isset($this->dbActive)) { + $this->dbActive = false; + } + if ($sql == '') { + return false; + } + if (!$this->dbActive) { + $this->dbLink = mysqli_connect($this->configParams['db_host'], $this->configParams['db_user'], + $this->configParams['db_password']); + if ($this->dbLink) { + mysqli_select_db($this->dbLink, $this->configParams['db_name']); + $this->dbActive = true; + } else { + echo 'MySQL error: ' . mysqli_errno($this->dbLink) . ' ' . mysqli_error($this->dbLink); + sleep(10); + die('Script aborted. ' . __FILE__ . ':(' . __LINE__ . ')'); + } + } + $result = mysqli_query($this->dbLink, $sql); + return $result; + } + + public function getCustomerIdFromEmail($customerEmail) + { + $sql = "SELECT customers_id FROM " . $this->configParams['db_prefix'] . "customers WHERE customers_email_address = '" . $customerEmail . "'"; + $q = $this->doDbQuery($sql); + if ($q === false || $q->num_rows == 0) { + return false; + } + $result = mysqli_fetch_assoc($q); + + return $result['customers_id']; + } + + +} diff --git a/testFramework/behat/features/bootstrap/ZenCartCouponHelpersTrait.php b/testFramework/behat/features/bootstrap/ZenCartCouponHelpersTrait.php new file mode 100644 index 0000000000..6f0969e729 --- /dev/null +++ b/testFramework/behat/features/bootstrap/ZenCartCouponHelpersTrait.php @@ -0,0 +1,109 @@ +doesCouponExist($couponCode)) { + return; + } + $couponMap = array( + 'test10percent' => array('coupon_amount' => "10%", 'coupon_name' => 'test10percent'), + 'test10fixed' => array('coupon_amount' => "10", 'coupon_name' => 'test10fixed'), + 'test100fixed' => array('coupon_amount' => "100", 'coupon_name' => 'test100fixed'), + 'test100percent' => array('coupon_amount' => "100%", 'coupon_name' => 'test100percent'), + 'testfreeshipping' => array('coupon_amount' => "", 'coupon_name' => 'testfreeshipping', 'coupon_free_ship' => true), + 'test10percentrestricted' => array( + 'coupon_amount' => "10%", + 'coupon_name' => 'test10percentrestricted', + 'restrict' => 'true' + ), + ); + if (!isset($couponMap[$couponCode])) { + throw new \InvalidArgumentException(sprintf('Could not find coupon code in map: "%s"', $couponCode)); + } + $this->iDoAStandardAdminLoginWithParamParam('admin_user_main', 'admin_password_main'); + $this->createCouponFromMap($couponMap[$couponCode]); + + } + + public function doesCouponExist($couponCode) + { + $sql = "SELECT coupon_code FROM " . $this->configParams['db_prefix'] . "coupons WHERE coupon_code = '" . $couponCode . "'"; + $q = $this->doDbQuery($sql); + if ($q === false || $q->num_rows == 0) { + return false; + } + + return true; + } + + protected function createCouponFromMap($couponDetail) + { + + $this->iVisit('admin/index.php?cmd=coupon_admin&action=new'); + $this->fillField('coupon_amount', $couponDetail['coupon_amount']); + $this->fillField('coupon_name[1]', $couponDetail['coupon_name']); + $this->fillField('coupon_uses_user', ""); + $this->fillField('coupon_code', $couponDetail['coupon_name']); + if (isset($couponDetail['coupon_free_ship']) && $couponDetail['coupon_free_ship'] === true) { + $this->iClickOnTheElementWithCss("input[name='coupon_free_ship']"); + } + $this->iClickOnTheElementWithCss("input[type='image']"); + $this->iClickOnTheElementWithCss("input[type='image']"); + $this->assertPageContainsText('Multiple Discount Coupons'); + $this->assertPageContainsText($couponDetail['coupon_name']); + + if (!isset($couponDetail['restrict'])) { + return; + } + $this->iClickOnTheElementWithCss("img[alt=\"Restrict Discount Coupon\"]"); + $method = 'couponRestrict' . ucfirst($couponDetail['coupon_name']); + if (!method_exists($this, $method)) { + throw new \InvalidArgumentException(sprintf('Could not find method: "%s"', $method)); + } + $this->$method(); + } + + + /** + * + */ + public function couponRestrictTest10percentrestricted() + { + $this->selectOption('cPath_prod', 9); + $this->selectOption('products_drop', 3); + $this->selectOption('restrict_status_product', 'Allow'); + $this->iClickOnTheElementWithXPath("//input[@name='add' and @value='Update']"); + } + + /** + * @param $customerEmail + * @return int + */ + public function getGVBalanceCustomer($customerEmail) + { + $customerId = $this->getCustomerIdFromEmail($customerEmail); + if ($customerId === false) { + return 0; + } + $sql = "SELECT amount FROM " . $this->configParams['db_prefix'] . "coupon_gv_customer WHERE customer_id = '" . $customerId . "'"; + $q = $this->doDbQuery($sql); + if ($q->num_rows == 0) { + return 0; + } + $result = mysqli_fetch_assoc($q); + + return $result['amount']; + } + +} diff --git a/testFramework/behat/features/bootstrap/ZenCartSpecificSteps.php b/testFramework/behat/features/bootstrap/ZenCartSpecificSteps.php new file mode 100644 index 0000000000..e938f6dbcc --- /dev/null +++ b/testFramework/behat/features/bootstrap/ZenCartSpecificSteps.php @@ -0,0 +1,248 @@ +doDbQuery($sql); + } + + + /** + * @Then I should reset install + */ + public function iShouldResetInstall() + { + if (!defined('CWD')) { + define('CWD', getcwd()); + } + $file_contents = file_get_contents(CWD . '/includes/dist-configure.php'); + $fp = fopen(CWD . '/includes/configure.php', 'w'); + chmod(CWD . '/includes/configure.php', 0777); + if ($fp) { + fputs($fp, $file_contents); + fclose($fp); + } + + $the_file = getcwd() . '/zc_install/includes/extra_configures/dev----developer_mode.php'; + if (!file_exists($the_file)) { + $fp = fopen($the_file, 'w'); + if ($fp) { + fputs($fp, ":arg1, :arg2 + */ + public function iDoAStandardAdminLoginWithParamParam($arg1, $arg2) + { + $this->visit('/admin/index.php?cmd=logoff'); + $this->visit('/admin/'); + $this->assertPageContainsText('Admin Login'); + $this->fillField('admin_name', $this->configParams[$arg1]); + $this->fillField('admin_pass', $this->configParams[$arg2]); + $this->iSubmitTheForm('loginForm'); + } + + /** + * @Given I do a standard customer login with :arg1, :arg2 + */ + public function iDoAStandardCustomerLoginWithParamParam($arg1, $arg2) + { + $this->visit('/'); + $this->visit('/index.php?main_page=logoff'); + $this->visit('/index.php?main_page=login'); + $this->fillField('login-email-address', $this->configParams[$arg1]); + $this->fillField('login-password', $this->configParams[$arg2]); + $this->iClickOnTheElementWithXPath("//*[@id='loginForm']/div[1]/input"); + } + + + /** + * @Given I purchase a gift voucher queue on with :arg1, :arg2, :arg3 + */ + public function iPurchaseAGiftVoucherQueueOnWithParamParam($arg1, $arg2, $arg3) + { + $this->iDoAStandardCustomerLoginWithParamParam($arg1, $arg2); + $this->visit('index.php?main_page=shopping_cart&action=empty_cart'); + $this->visit('index.php?main_page=document_product_info&cPath=21&products_id=32'); + $this->iFillInCssElementWith('input[name=cart_quantity]', $arg3); + $this->iClickOnTheElementWithXPath("//*[@id='cartAdd']/input[3]"); + $this->visit('index.php?main_page=shopping_cart'); + $this->assertPageContainsText('Gift Certificate'); + $amount = number_format(100 * $arg3, 2); + $this->assertPageContainsText('Amount: $' . $amount); + $this->visit('index.php?main_page=checkout_shipping'); + $this->assertPageContainsText('Free Shipping'); + $this->iClickOnTheElementWithXPath("//*[@id='paymentSubmit']/input"); + $this->assertPageContainsText('Order Confirmation'); + $this->iClickOnTheElementWithXPath("//*[@id='btn_submit']"); + $this->assertPageContainsText('Checkout Success Sample Text'); + $this->iDoAStandardAdminLoginWithParamParam('admin_user_main', 'admin_password_main'); + $this->visit('/admin/index.php?cmd=gv_queue'); + $this->assertPageContainsText('Gift Certificate Release Queue'); + $this->iClickOnTheElementWithXPath("//*[@id='adminLeadItemRows']/tr/td[6]/a"); + $this->iClickOnTheElementWithXPath("//*[@id='rowGvReleaseConfirm']"); + } + + + /** + * @Then I use select2 to fill in field, search value with :arg1, :arg2 + */ + public function iUseSelectToFillInFieldSearchValueAndFinalValueWith($field, $searchValue) + { + $field = 's2id_entry_field_' . $field; + $this->iClickOnTheElementWithXPath("//div[contains(@id, '" . $field . "')]/descendant::a"); + $this->iWait(1); + $this->iClickOnTheElementWithXPath("//div[contains(@class, 'select2-result-label') and .//text()='" . $searchValue . "']"); + } + + /** + * @Given I do a first admin login with :arg1, :arg2, :arg3 + */ + public function iDoAFirstAdminLoginWithParamParamParam($arg1, $arg2, $arg3) + { + $this->visit('/admin/'); + + $this->iDoAStandardAdminLoginWithParamParam($arg1, $arg2); + + if ($this->configParams['serverSchema'] == 'https://') { + return; + } + + $this->iFillInWithParam('admin_name', 'admin_user_main'); + $this->iFillInWithParam('old_pwd', 'admin_password_install'); + $this->iFillInWithParam('admin_pass', 'admin_password_main'); + $this->iFillInWithParam('admin_pass2', 'admin_password_main'); + $this->iClickOnTheElementWithXPath("//*[@id='btn_submit']"); + } + + /** + * @Given I set a configuration value :arg1, :arg2 + */ + public function iSetAConfigurationValue($configKey, $configValue) + { + $sql = "UPDATE " . $this->configParams['db_prefix'] . "configuration SET configuration_value = '" . $configValue . "' where configuration_key = '" . $configKey . "'"; + $this->doDbQuery($sql); + } + + + /** + * @Given I switch shipping tax :arg1 + */ + public function iSwitchShippingTax($mode = 'on') + { + $sql = "UPDATE " . $this->configParams['db_prefix'] . "configuration SET configuration_value = '" . ($mode == 'on' ? '2' : '0') . "' where configuration_key = 'MODULE_SHIPPING_FLAT_TAX_CLASS'"; + $this->doDbQuery($sql); + } + + /** + * @Given I create a discount coupon :arg1 + */ + public function iCreateADiscountCoupon($arg1) + { + $this->createCoupon($arg1); + } + /** + * @Given I switch to tax :arg1 + */ + public function iSwitchToTax($arg1) + { + $setting = 'true'; + if ($arg1 == 'non-inclusive') { + $setting = 'false'; + } + $sql = "UPDATE " . $this->configParams['db_prefix'] . "configuration SET configuration_value = '" . $setting . "' where configuration_key = 'DISPLAY_PRICE_WITH_TAX'"; + $this->doDbQuery($sql); + } + + + /** + * @Given I switch item shipping tax :arg1 + */ + function iSwitchItemShippingTax($mode = 'on') + { + $sql = "UPDATE " . $this->configParams['db_prefix'] . "configuration SET configuration_value = '" . ($mode == 'on' ? '2' : '0') . "' where configuration_key = 'MODULE_SHIPPING_ITEM_TAX_CLASS'"; + $this->doDbQuery($sql); + } + + /** + * @Given I switch flat shipping tax :arg1 + */ + function iSwitchFlatShippingTax($mode = 'on') + { + $sql = "UPDATE " . $this->configParams['db_prefix'] . "configuration SET configuration_value = '" . ($mode == 'on' ? '2' : '0') . "' where configuration_key = 'MODULE_SHIPPING_FLAT_TAX_CLASS'"; + $this->doDbQuery($sql); + } + + /** + * @Given I switch split tax mode :arg1 + */ + function iSwitchSplitTaxMode($mode = 'on') + { + $this->doDbQuery("UPDATE " . $this->configParams['db_prefix'] . "configuration SET configuration_value = '" . ($mode == 'on' ? 'true' : 'false') . "' where configuration_key = 'SHOW_SPLIT_TAX_CHECKOUT'"); + } + + /** + * @Given I set customer :arg1 to group discount id :arg2 + */ + public function iSetCustomerToGroupDiscountId($arg1, $arg2) + { + $customerId = $this->getCustomerIdFromEmail($this->configParams[$arg1]); + if ($customerId === false) { + return; + } + $sql = "UPDATE " . $this->configParams['db_prefix'] . "customers set customers_group_pricing = " . (int)$arg2 . " where customers_id = " . (int)$customerId; + $this->doDbQuery($sql); + + } + + /** + * @Given I ensure gift voucher balance is :arg1 for customer :arg2, :arg3 + */ + public function iEnsureGiftVoucherBalanceIsForCustomer($arg1, $arg2, $arg3) + { + $gvAmount = $this->getGVBalanceCustomer($this->configParams[$arg2]); + if ($gvAmount < $arg1) { + $this->iPurchaseAGiftVoucherQueueOnWithParamParam($arg2, $arg3, $arg1/100); + } + } + + /** + * @Given I switch low order fee :arg1 + */ + public function iSwitchLowOrderFee($mode) + { + $sql = "UPDATE " . $this->configParams['db_prefix'] . "configuration set configuration_value = '" . ($mode == 'on' ? 'true' : 'false') . "' WHERE configuration_key = 'MODULE_ORDER_TOTAL_LOWORDERFEE_LOW_ORDER_FEE'"; + $this->doDbQuery($sql); + } + + +} diff --git a/testFramework/behat/features/bootstrap/behatExtensionsTrait.php b/testFramework/behat/features/bootstrap/behatExtensionsTrait.php new file mode 100644 index 0000000000..0de77635b4 --- /dev/null +++ b/testFramework/behat/features/bootstrap/behatExtensionsTrait.php @@ -0,0 +1,297 @@ +getEnvironment(); + foreach ($environment->getContexts() as $context) { + if ($context instanceof \Behat\MinkExtension\Context\RawMinkContext) { + $context->setMinkParameter('base_url', $this->baseUrl); + } + } + } + + /** + * @AfterStep + */ + public function takeScreenshotAfterFailedStep($event) + { + if (!isset($this->configParams['take_screenshot_on_failed_step']) || $this->configParams['take_screenshot_on_failed_step'] === false) { + return; + } + if ($event->getTestResult()->getResultCode() !== \Behat\Testwork\Tester\Result\TestResult::FAILED) { + return; + } + + $driver = $this->getSession()->getDriver(); + + if (!$driver instanceof Behat\Mink\Driver\Selenium2Driver) { + return; + } + $stepText = $event->getStep()->getText(); + $fileName = 'testFailed_' . preg_replace('#[^a-zA-Z0-9\._-]#', '', $stepText) . '.png'; + $filePath = $this->configParams['screenshot_path']; + $this->saveScreenshot($fileName, $filePath); + print "Screenshot for '{$stepText}' placed in " . $filePath . DIRECTORY_SEPARATOR . $fileName . "\n"; + + } + + /** + * @AfterStep + */ + public function dumpResponseAfterFailedStep($event) + { + if (!isset($this->configParams['dump_response_on_failed_step']) || $this->configParams['dump_response_on_failed_step'] === false) { + return; + } + if ($event->getTestResult()->getResultCode() !== \Behat\Testwork\Tester\Result\TestResult::FAILED) { + return; + } + + $this->iShouldOutputPage(); + + if (isset($this->configParams['die_after_dump_repsonse']) && $this->configParams['die_after_dump_repsonse'] === true) { + die(); + } + + } + + + /** + * @Then I take a screenshot :arg1 + */ + public function iTakeAScreenshot($arg1) + { + $fileName = $arg1 . '.png'; + $filePath = $this->configParams['screenshot_path']; + $this->saveScreenshot($fileName, $filePath); + } + + /** + * Click on the element with the provided xpath query + * + * @When /^I click on the element with xpath "([^"]*)"$/ + */ + public function iClickOnTheElementWithXPath($xpath) + { + $session = $this->getSession(); // get the mink session + $element = $session->getPage()->find( + 'xpath', + $session->getSelectorsHandler()->selectorToXpath('xpath', $xpath) + ); // runs the actual query and returns the element + + // errors must not pass silently + if (null === $element) { + throw new \InvalidArgumentException(sprintf('Could not evaluate XPath: "%s"', $xpath)); + } + + // ok, let's click on it + $element->click(); + sleep(1); + + } + + /** + * @When I fill in :arg1 with :arg2 + */ + public function iFillInWithParam($arg1, $arg2) + { + $this->fillField($arg1, $this->configParams[$arg2]); + } + + /** + * @Then I wait :arg1 + */ + public function iWait($arg1) + { + sleep($arg1); + } + + /** + * @Then I fill in css element :arg1 with :arg2 + */ + public function iFillInCssElementWith($arg1, $arg2) + { + $session = $this->getSession(); + $element = $session->getPage()->find('css', $arg1); + if (null === $element) { + throw new \InvalidArgumentException(sprintf('Could not evaluate CSS Selector: "%s"', $arg1)); + } + $element->setValue($arg2); + } + + /** + * @Then I should output page + */ + public function iShouldOutputPage() + { + $html = $this->getSession()->getPage()->getHtml(); + var_dump($html); + } + + /** + * @Then I visit :arg1 + */ + public function iVisit($arg1) + { + $this->visit($arg1); + } + + /** + * @Then I submit the form :arg1 + */ + public function iSubmitTheForm($arg1) + { + $page = $this->getSession()->getPage(); + $formNode = $page->find('named', array('id_or_name', $arg1)); + if (null === $formNode) { + throw new \InvalidArgumentException(sprintf('Could not find form with id|name: "%s"', $arg1)); + } + $formNode->submit(); + } + + /** + * @Then I click on the element with css :arg1 + */ + public function iClickOnTheElementWithCss($arg1) + { + $page = $this->getSession()->getPage(); + $element = $page->find('css', $arg1); + if (null === $element) { + throw new \InvalidArgumentException(sprintf('Could not find css element: "%s"', $arg1)); + } + $element->click(); + } + + /** + * This function prevents Behat form failing a tests if the HTML is not loaded yet. + * Behat with Selenium often executes tests faster thant Selenium is able to retreive + * the HTML causing false negatives. + * + * Use this for all test cases that depend on a presence of some elements on the + * website. + * + * Pass an anonymous function containing your normal test as an argument. + * The function needs to return a boolean. + * + * @see http://docs.behat.org/cookbook/using_spin_functions.html + * + * @param \Closure $closure + * @param int $tries + * + * @return bool + * + * @throws \Exception|UnsupportedTestException + * @throws \Exception + */ + public function spin($closure, $tries = 30) + { + for ($i = 0; $i < $tries; $i++) { + try { + if ($result = $closure($this)) { + if (!is_bool($result)) { + throw new UnsupportedTestException( + 'The spinned callback needs to return true on success or throw an Exception' + ); + } + + return true; + } + } catch (UnsupportedTestException $e) { + // If the test is unsupported, we quit + throw $e; + } catch (\Exception $e) { + // do nothing to continue the loop + } + + usleep(300000); + } + + $backtrace = debug_backtrace(); + throw new \Exception( + "Timeout thrown by " . $backtrace[1]['class'] . "::" . $backtrace[1]['function'] . "()\n" . + "With the following arguments: " . print_r($backtrace[1]['args'], true) + ); + } + + + /** + * @Given /^I wait to see "(?P(?:[^"]|\\")*)"$/ + * + * @param string $text + * + * @return bool + */ + public function iWaitToSee($text) + { + return $this->assertPageContainsTextSpin($text); + } + + /** + * Overrides MinkContext method by adding a spin + * + * {@inheritdoc} + */ + public function assertPageContainsTextSpin($text) + { + $this->waitUntilPageLoaded(); + + return $this->spin( + function ($context) use ($text) { + $context->assertSession()->pageTextContains($context->fixStepArgument($text)); + + return true; + } + ); + } + + /** + * This methods makes Selenium2 wait until the body element is present. + * This supposes that the html is loaded (even if it's not 100% reliable). + * + * @return bool + */ + protected function waitUntilPageLoaded() + { + $this->spin( + function ($context) { + $context->assertSession()->elementExists('xpath', '//body'); + + return true; + } + ); + } + + /** + * @Given /^I press button "(?P(?:[^"]|\\")*)"$/ + * @param $arg1 + */ + public function iPressButton($arg1) + { + $this->iClickOnTheElementWithCss("#" . $arg1); + } + + /** + * @Then I press button by name :arg1 + */ + public function iPressButtonByName($arg1) + { + + $this->iClickOnTheElementWithCss("input[name=$arg1]"); + } + +} + diff --git a/testFramework/behat/features/config/localconfig_EXAMPLE.php b/testFramework/behat/features/config/localconfig_EXAMPLE.php new file mode 100644 index 0000000000..7ddb0e40ab --- /dev/null +++ b/testFramework/behat/features/config/localconfig_EXAMPLE.php @@ -0,0 +1,31 @@ +configParams = [ + 'serverSchema' => $serverSchema, + 'base_url' => $serverSchema . $serverName . '/', + 'db_host' => 'localhost', + 'db_user' => 'travis', + 'db_name' => 'zencart', + 'db_password' => '', + 'db_prefix' => '', + 'installer_admin_name' => 'Admin', + 'store_owner_email' => 'test@' . $serverName, + 'admin_user_main' => 'Admin', + 'admin_password_install' => 'developer1', + 'store_name' => 'Behat Test Store', + 'store_owner' => 'Behat Store Owner', + 'default_customer_email' => 'test1@' . $serverName, + 'default_customer_password' => 'password', + 'uk_customer_email' => 'testuk@' . $serverName, + 'uk_customer_password' => 'password', + 'canada_customer_email' => 'testcanada@' . $serverName, + 'canada_customer_password' => 'password', + 'screenshot_path' => getcwd(), + 'take_screenshot_on_failed_step' => true, + 'dump_response_on_failed_step' => true, + 'die_after_dump_repsonse' => false, + +]; diff --git a/testFramework/behat/features/config/localconfig_travis.php b/testFramework/behat/features/config/localconfig_travis.php new file mode 100644 index 0000000000..b4f5b51477 --- /dev/null +++ b/testFramework/behat/features/config/localconfig_travis.php @@ -0,0 +1,31 @@ +configParams = [ + 'serverSchema' => $serverSchema, + 'base_url' => $serverSchema . $serverName . '/', + 'db_host' => 'localhost', + 'db_user' => 'travis', + 'db_name' => 'zencart', + 'db_password' => '', + 'db_prefix' => '', + 'installer_admin_name' => 'Admin', + 'store_owner_email' => 'test@example.com', + 'admin_user_main' => 'Admin', + 'admin_password_install' => 'developer1', + 'store_name' => 'Behat Test Store', + 'store_owner' => 'Behat Store Owner', + 'default_customer_email' => 'test1@example.com', + 'default_customer_password' => 'password', + 'uk_customer_email' => 'testuk@example.com', + 'uk_customer_password' => 'password', + 'canada_customer_email' => 'testcanada@example.com', + 'canada_customer_password' => 'password', + 'screenshot_path' => getcwd(), + 'take_screenshot_on_failed_step' => true, + 'dump_response_on_failed_step' => true, + 'die_after_dump_repsonse' => false, + +]; diff --git a/testFramework/behat/features/config/localconfig_vagrant.php b/testFramework/behat/features/config/localconfig_vagrant.php new file mode 100644 index 0000000000..d139d74bfe --- /dev/null +++ b/testFramework/behat/features/config/localconfig_vagrant.php @@ -0,0 +1,31 @@ +configParams = [ + 'serverSchema' => $serverSchema, + 'base_url' => $serverSchema . $serverName . '/', + 'db_host' => '172.22.22.22', + 'db_user' => 'zencart', + 'db_name' => 'zencart', + 'db_password' => 'zencart', + 'db_prefix' => '', + 'installer_admin_name' => 'Admin', + 'store_owner_email' => 'test@' . $serverName, + 'admin_user_main' => 'Admin', + 'admin_password_install' => 'developer1', + 'store_name' => 'Behat Test Store', + 'store_owner' => 'Behat Store Owner', + 'default_customer_email' => 'test1@' . $serverName, + 'default_customer_password' => 'password', + 'uk_customer_email' => 'testuk@' . $serverName, + 'uk_customer_password' => 'password', + 'canada_customer_email' => 'testcanada@' . $serverName, + 'canada_customer_password' => 'password', + 'screenshot_path' => getcwd(), + 'take_screenshot_on_failed_step' => true, + 'dump_response_on_failed_step' => true, + 'die_after_dump_repsonse' => false, + +]; diff --git a/testFramework/behat/features/testFeatures/createCoupons.feature b/testFramework/behat/features/testFeatures/createCoupons.feature new file mode 100644 index 0000000000..862e628de9 --- /dev/null +++ b/testFramework/behat/features/testFeatures/createCoupons.feature @@ -0,0 +1,11 @@ +Feature: Customer Discount Coupons + Test the creation of Discount Coupons + + @javascript + Scenario: Create Discount Coupons + Given I create a discount coupon "test10percent" + Given I create a discount coupon "test10fixed" + Given I create a discount coupon "test100fixed" + Given I create a discount coupon "test100percent" + Given I create a discount coupon "test10percentrestricted" + Given I create a discount coupon "testfreeshipping" diff --git a/testFramework/behat/features/testFeatures/createCustomers.feature b/testFramework/behat/features/testFeatures/createCustomers.feature new file mode 100644 index 0000000000..731e2a3bce --- /dev/null +++ b/testFramework/behat/features/testFeatures/createCustomers.feature @@ -0,0 +1,56 @@ +Feature: Customer Accounts + Test the creation of customer accounts + + Scenario: Create US Account + Given I am on "/" + And I follow "Log In" + Then I should see "Welcome, Please Sign In" + Then I fill in "firstname" with "Tom" + And I fill in "lastname" with "Bombadil" + And I fill in "street-address" with "999 Some Street" + And I fill in "city" with "Miami" + And I fill in "postcode" with "33133" + And I fill in "telephone" with "+441202010109382" + And I fill in "state" with "Florida" + And I select "United States" from "country" + And I fill in "email-address" with "default_customer_email" + And I fill in "password-new" with "default_customer_password" + And I fill in "password-confirm" with "default_customer_password" + Then I click on the element with xpath "//*[@id='createAccountForm']/div/input" + Then I should see "Your Account Has Been Created" + + Scenario: Create UK Account + Given I am on "/" + And I follow "Log In" + Then I should see "Welcome, Please Sign In" + Then I fill in "firstname" with "UK Tom" + And I fill in "lastname" with "Bombadil" + And I fill in "street-address" with "999 Some Street" + And I fill in "city" with "Newcastle" + And I fill in "state" with "Tyne & Wear" + And I fill in "postcode" with "NE11AA" + And I fill in "telephone" with "+441202010109382" + And I select "United Kingdom" from "country" + And I fill in "email-address" with "uk_customer_email" + And I fill in "password-new" with "uk_customer_password" + And I fill in "password-confirm" with "uk_customer_password" + Then I click on the element with xpath "//*[@id='createAccountForm']/div/input" + Then I should see "Your Account Has Been Created" + + Scenario: Create Canada Account + Given I am on "/" + And I follow "Log In" + Then I should see "Welcome, Please Sign In" + Then I fill in "firstname" with "Canada Tom" + And I fill in "lastname" with "Bombadil" + And I fill in "street-address" with "999 Some Street" + And I fill in "city" with "Toronto" + And I fill in "state" with "Ontario" + And I fill in "postcode" with "NE11AA" + And I fill in "telephone" with "+441202010109382" + And I select "Canada" from "country" + And I fill in "email-address" with "canada_customer_email" + And I fill in "password-new" with "canada_customer_password" + And I fill in "password-confirm" with "canada_customer_password" + Then I click on the element with xpath "//*[@id='createAccountForm']/div/input" + Then I should see "Your Account Has Been Created" diff --git a/testFramework/behat/features/testFeatures/giftVoucherPurchase.feature b/testFramework/behat/features/testFeatures/giftVoucherPurchase.feature new file mode 100644 index 0000000000..60e07e45f4 --- /dev/null +++ b/testFramework/behat/features/testFeatures/giftVoucherPurchase.feature @@ -0,0 +1,80 @@ +Feature: Gift Voucher Purchase Tests + Test the purchase of gift vouchers + + @javascript + Scenario: Purchase an initial GV amount + + Given I set a configuration value "MODULE_ORDER_TOTAL_GV_QUEUE", true + Then I purchase a gift voucher queue on with "default_customer_email", "default_customer_password", "100" + And I set a configuration value "MODULE_ORDER_TOTAL_GV_QUEUE", false + + + Scenario: Make a purchase with a gift voucher + + Given I do a standard customer login with 'default_customer_email', 'default_customer_password' + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + Then I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + Then I visit "index.php?main_page=checkout_flow" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I fill in "cot_gv" with "100" + Then I click on the element with xpath "//*[@id='paymentSubmit']/input" + Then I should see "order Confirmation" + Then I click on the element with xpath "//*[@id='btn_submit']" + Then I should see "39.99" + Then I should see "45.29" + Then I click on the element with xpath "//*[@id='csNotifications']/form/div/input" + + + Scenario: Make a purchase with a gift voucher where credit does not cover + + Given I do a standard customer login with 'default_customer_email', 'default_customer_password' + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + Then I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + Then I visit "index.php?main_page=checkout_flow" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I fill in "cot_gv" with "45.28" + Then I click on the element with xpath "//*[@id='paymentSubmit']/input" + Then I should see "Please select a payment method" + + + + Scenario: Make a purchase with a gift voucher where credit does not cover and with shipping tax + + Given I switch shipping tax "on" + Given I do a standard customer login with 'default_customer_email', 'default_customer_password' + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + Then I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + Then I visit "index.php?main_page=checkout_flow" + Then I select "flat_flat" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I fill in "cot_gv" with "48.73" + Then I click on the element with xpath "//*[@id='paymentSubmit']/input" + Then I should see "Please select a payment method" + Given I switch shipping tax "off" + + + Scenario: Make a purchase with a gift voucher using Swedish Kroner + Given I set a configuration value "DEFAULT_CURRENCY", "SEK" + Given I do a standard customer login with 'default_customer_email', 'default_customer_password' + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + Then I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + Then I visit "index.php?main_page=checkout_flow" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I fill in "cot_gv" with "20.50" + Then I click on the element with xpath "//*[@id='paymentSubmit']/input" + Then I should see "SEK24,79" + Given I set a configuration value "DEFAULT_CURRENCY", "USD" + + Scenario: Send Gift Voucher using Swedish Kroner + Given I set a configuration value "DEFAULT_CURRENCY", "SEK" + Given I do a standard customer login with 'default_customer_email', 'default_customer_password' + Then I visit "index.php?main_page=gv_send" + Then I fill in "to-name" with "Tom Bombadil" + Then I fill in "email-address" with "default_customer_email" + Then I fill in "amount" with "20.50" + Then I fill in "message-area" with "This is a test message" + Then I submit the form "gv_send_send" + Then I should see "Send Gift Certificate Confirmation" + And I should see "SEK20,50" + Then I submit the form "gv_send_process" + Then I set a configuration value "DEFAULT_CURRENCY", "USD" diff --git a/testFramework/behat/features/testFeatures/groupDiscount.feature b/testFramework/behat/features/testFeatures/groupDiscount.feature new file mode 100644 index 0000000000..a609b67447 --- /dev/null +++ b/testFramework/behat/features/testFeatures/groupDiscount.feature @@ -0,0 +1,101 @@ +Feature: Customer Group Discounts + Test the use of Group Discounts in catalog + + + Scenario: I Test group discounts + Given I set customer "default_customer_email" to group discount id "1" + Then I create a discount coupon "test10percent" + Then I do a standard customer login with "default_customer_email", "default_customer_password" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "storepickup_storepickup0" from "shipping" + And I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I select "cod" from "payment" + And I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "39.99" + And I should see "-$4.00" + And I should see "2.52" + Then I should see "38.51" + Then I press button "btn_submit" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "storepickup_storepickup0" from "shipping" + And I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I fill in "dc_redeem_code" with "test10percent" + And I select "cod" from "payment" + And I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "39.99" + And I should see "-$4.00" + And I should see "-$3.60" + And I should see "2.27" + Then I should see "34.66" + Then I press button "btn_submit" + + Given I switch to tax "inclusive" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "storepickup_storepickup0" from "shipping" + And I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I select "cod" from "payment" + And I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "42.79" + And I should see "-$4.28" + And I should see "2.52" + Then I should see "38.51" + Then I press button "btn_submit" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "storepickup_storepickup0" from "shipping" + And I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I fill in "dc_redeem_code" with "test10percent" + And I select "cod" from "payment" + And I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "42.79" + And I should see "-$4.28" + And I should see "-$3.85" + And I should see "2.27" + Then I should see "34.66" + Then I press button "btn_submit" + + Given I switch flat shipping tax "on" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "flat_flat" from "shipping" + And I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I select "cod" from "payment" + And I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "42.79" + And I should see "-$4.28" + And I should see "3.47" + Then I should see "44.46" + Then I press button "btn_submit" + + Given I switch split tax mode "on" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "flat_flat" from "shipping" + And I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I select "cod" from "payment" + And I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "42.79" + Then I should see "5.95" + And I should see "-$4.28" + And I should see "2.52" + And I should see "0.95" + Then I should see "44.46" + Then I press button "btn_submit" + + Given I switch split tax mode "off" + Then I switch flat shipping tax "off" + Then I switch to tax "non-inclusive" + Then I set customer "default_customer_email" to group discount id "0" diff --git a/testFramework/behat/features/testFeatures/lowOrderFee.feature b/testFramework/behat/features/testFeatures/lowOrderFee.feature new file mode 100644 index 0000000000..deab97ec16 --- /dev/null +++ b/testFramework/behat/features/testFeatures/lowOrderFee.feature @@ -0,0 +1,146 @@ +Feature: Low Order Fee + Test the use of low order fees in catalog + + Scenario: I Test low order fees + + Given I ensure gift voucher balance is "300" for customer "default_customer_email", "default_customer_password" + Then I set customer "default_customer_email" to group discount id "1" + Then I switch item shipping tax "off" + And I switch low order fee "on" + And I do a standard customer login with "default_customer_email", "default_customer_password" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "39.99" + Then I should see "$2.50" + Then I should see "$2.52" + Then I should see "$5.00" + Then I should see "46.01" + Then I press button "btn_submit" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I fill in "cot_gv" with "45.28" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "Please select a payment method for your order" + + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I fill in "cot_gv" with "45.29" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "Please select a payment method for your order" + + + Then I switch item shipping tax "on" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I fill in "cot_gv" with "45.76" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "Please select a payment method for your order" + Then I switch item shipping tax "off" + + + Then I switch item shipping tax "on" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I fill in "cot_gv" with "46.48" + Then I select "cod" from "payment" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "39.99" + Then I should see "2.50" + Then I should see "2.99" + Then I should see "5.00" + Then I should see "-$46.48" + Then I should see "$0.00" + Then I switch item shipping tax "off" + + + Given I switch item shipping tax "on" + Then I switch to tax "inclusive" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I fill in "cot_gv" with "46.48" + Then I select "cod" from "payment" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + + Then I should see "42.79" + Then I should see "2.98" + Then I should see "-$4.28" + Then I should see "2.99" + Then I should see "5.00" + Then I should see "-$46.48" + Then I should see "$0.00" + + Then I switch to tax "non-inclusive" + Then I switch item shipping tax "off" + + + Given I set customer "default_customer_email" to group discount id "1" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "39.99" + Then I should see "2.50" + Then I should see "-$4.00" + Then I should see "2.52" + Then I should see "5.00" + Then I should see "46.01" + Then I set customer "default_customer_email" to group discount id "0" + + + Given I set customer "default_customer_email" to group discount id "1" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I fill in "cot_gv" with "45.29" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "Please select a payment method for your order" + Given I set customer "default_customer_email" to group discount id "0" + + Given I create a discount coupon "test10percent" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I fill in "cot_gv" with "46.01" + And I fill in "dc_redeem_code" with "test10percent" + Then I select "cod" from "payment" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "39.99" + Then I should see "2.50" + Then I should see "-$4.00" + Then I should see "2.52" + Then I should see "5.00" + Then I should see "$46.01" + + Then I switch low order fee "off" + Then I set customer "default_customer_email" to group discount id "0" diff --git a/testFramework/behat/features/testFeatures/testInstaller.feature b/testFramework/behat/features/testFeatures/testInstaller.feature new file mode 100644 index 0000000000..4bbcb70c91 --- /dev/null +++ b/testFramework/behat/features/testFeatures/testInstaller.feature @@ -0,0 +1,61 @@ +Feature: Installer + Test the Zen Cart Installer + + Scenario: Load the default page with a clean configure.php + Then I should reset install + Given I am on "/" + Then I should see "Hello. Thank you for loading Zen Cart" + + @javascript + Scenario: Attempt Basic Install, Load Admin and do the Admin Setup Wizard + Given I am on "/zc_install/" + Then I should see "System Inspection" + And I press button "btnsubmit" + + Then I should see "Agree to license terms" + And I check "agreeLicense" + And I press button "btnsubmit" + Then I wait to see "Load Demo Data" + And I check "demoData" + + When I fill in "db_host" with "db_host" + And I fill in "db_user" with "db_user" + And I fill in "db_password" with "db_password" + And I fill in "db_name" with "db_name" + And I press button "btnsubmit" + + Then I wait to see "Admin User Settings" + When I fill in "admin_user" with "installer_admin_name" + And I fill in "admin_email" with "store_owner_email" + And I fill in "admin_email2" with "store_owner_email" + And I press button "btnsubmit" + + Then I should see "Installation completed" + + Given I do a first admin login with "admin_user_main", "admin_password_install", "admin_password_main" + Then I should see "Initial Setup Wizard" + + Then I fill in "store_name" with "store_name" + And I fill in "store_owner" with "store_owner" + And I fill in "store_owner_email" with "store_owner_email" + And I press button "submit_button" + Then I should see "Add Widget" + + Scenario: Enable COD payment method + + Given I do a standard admin login with "admin_user_main", "admin_password_main" + Then I visit "admin/index.php?cmd=modules&set=payment&module=cod" + Then I press button by name "installButton" + + + Scenario: After Install, Check some Catalog Pages + Given I am on "/" + Then I should see "Sales Message Goes Here" + + Given I am on "index.php?main_page=index&cPath=1" + Then I should see "CDROM Drives" + And I should see "Keyboards" + + + Scenario: After Install, Enable Swedish Kroner + Given I add swedish kroner diff --git a/testFramework/behat/features/testFeatures/testTaxZones.feature b/testFramework/behat/features/testFeatures/testTaxZones.feature new file mode 100644 index 0000000000..ae0da5922e --- /dev/null +++ b/testFramework/behat/features/testFeatures/testTaxZones.feature @@ -0,0 +1,82 @@ +Feature: Add Tax Zones + Add Tax Zones + + @javascript + Scenario: Set up VAT + + Given I do a standard admin login with "admin_user_main", "admin_password_main" + Then I should see "Add Widget" + + Given I am on "admin/index.php?cmd=geo_zones&action=add" + And I fill in "entry_field_geo_zone_name" with "UK/VAT" + And I fill in "entry_field_geo_zone_description" with "United Kingdom VAT" + Then I press button "btnsubmit" + + Given I am on "admin/index.php?cmd=geo_zones_detail&geo_zone_id=2" + Then I follow "Add Zone Definition" + Then I use select2 to fill in field, search value with "countries_name", "United Kingdom" + Then I use select2 to fill in field, search value with "zone_name", "All Zones" + Then I press button "btnsubmit" + + Then I follow "Add Zone Definition" + + Then I use select2 to fill in field, search value with "countries_name", "Ireland" + Then I use select2 to fill in field, search value with "zone_name", "All Zones" + Then I press button "btnsubmit" + + Given I am on "admin/index.php?cmd=tax_rates&action=add" + Then I fill in "entry_field_tax_priority" with "1" + Then I fill in "entry_field_tax_rate" with "17.5" + Then I fill in "entry_field_tax_description" with "VAT 17.5%" + + Then I use select2 to fill in field, search value with "tax_class_title", "Taxable Goods" + Then I use select2 to fill in field, search value with "geo_zone_name", "UK/VAT" + Then I press button "btnsubmit" + + @javascript + Scenario: Set up California Tax + + Given I do a standard admin login with "admin_user_main", "admin_password_main" + Then I should see "Add Widget" + + Given I am on "admin/index.php?cmd=geo_zones&action=add" + And I fill in "entry_field_geo_zone_name" with "California" + And I fill in "entry_field_geo_zone_description" with "California Tax" + Then I press button "btnsubmit" + + Given I am on "admin/index.php?cmd=geo_zones_detail&geo_zone_id=3" + Then I follow "Add Zone Definition" + + Then I use select2 to fill in field, search value with "countries_name", "United States" + Then I use select2 to fill in field, search value with "zone_name", "California" + + Then I press button "btnsubmit" + + + Given I am on "admin/index.php?cmd=tax_rates&action=add" + Then I fill in "entry_field_tax_priority" with "1" + Then I fill in "entry_field_tax_rate" with "12.75" + Then I fill in "entry_field_tax_description" with "CA TAX 12.75%" + + Then I use select2 to fill in field, search value with "tax_class_title", "Taxable Goods" + Then I use select2 to fill in field, search value with "geo_zone_name", "California" + Then I press button "btnsubmit" + + @javascript + Scenario: Set up Postage Tax + + Given I do a standard admin login with "admin_user_main", "admin_password_main" + Then I should see "Add Widget" + + Given I am on "admin/index.php?cmd=tax_classes&action=add" + And I fill in "entry_field_tax_class_title" with "Taxable Postage" + And I fill in "entry_field_tax_class_description" with "Taxable Postage" + Then I press button "btnsubmit" + Given I am on "admin/index.php?cmd=tax_rates&action=add" + Then I fill in "entry_field_tax_priority" with "1" + Then I fill in "entry_field_tax_rate" with "19" + Then I fill in "entry_field_tax_description" with "POSTAGE TAX 19%" + Then I use select2 to fill in field, search value with "tax_class_title", "Taxable Postage" + Then I use select2 to fill in field, search value with "geo_zone_name", "Florida" + Then I press button "btnsubmit" + diff --git a/testFramework/behat/features/testFeatures/useCoupons.feature b/testFramework/behat/features/testFeatures/useCoupons.feature new file mode 100644 index 0000000000..eea7bdee86 --- /dev/null +++ b/testFramework/behat/features/testFeatures/useCoupons.feature @@ -0,0 +1,270 @@ +Feature: Customer Discount Coupons + Test the use of coupons in catalog + + + Scenario: I Test tax non inclusive excluding shipping tax + Given I do a standard customer login with "default_customer_email", "default_customer_password" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "storepickup_storepickup0" from "shipping" + And I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I select "cod" from "payment" + And I fill in "dc_redeem_code" with "test10percent" + And I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "499.99" + And I should see "-$50.00" + And I should see "31.50" + And I should see "481.49" + Then I press button "btn_submit" + + + Given I visit "index.php?main_page=shopping_cart&action=empty_cart" + Then I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "storepickup_storepickup0" from "shipping" + And I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I select "cod" from "payment" + And I fill in "dc_redeem_code" with "test100percent" + And I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "499.99" + And I should see "-$499.99" + And I should see "0.00" + Then I press button "btn_submit" + + Given I visit "index.php?main_page=shopping_cart&action=empty_cart" + Then I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "storepickup_storepickup0" from "shipping" + And I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I select "cod" from "payment" + And I fill in "dc_redeem_code" with "test10fixed" + And I click on the element with css "#paymentSubmit > input[type='submit']" + And I should see "499.99" + And I should see "-$10.00" + And I should see "34.30" + And I should see "524.29" + Then I press button "btn_submit" + + Given I visit "index.php?main_page=shopping_cart&action=empty_cart" + Then I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "storepickup_storepickup0" from "shipping" + And I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + And I select "cod" from "payment" + And I fill in "dc_redeem_code" with "test10percentrestricted" + And I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "579.97" + And I should see "-$8.00" + And I should see "40.04" + And I should see "612.01" + Then I press button "btn_submit" + + + + + Scenario: I Test tax inclusive excluding shipping tax + Given I switch to tax "inclusive" + Then I do a standard customer login with "default_customer_email", "default_customer_password" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "test10percent" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "534.99" + Then I should see "-$53.50" + Then I should see "31.50" + Then I should see "483.99" + Then I press button "btn_submit" + + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "test100percent" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "534.99" + Then I should see "-$534.99" + Then I should see "2.50" + Then I press button "btn_submit" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "test10fixed" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "534.99" + Then I should see "-$10.65" + Then I should see "34.35" + Then I should see "526.84" + Then I press button "btn_submit" + + + Given I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "test10percentrestricted" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "620.57" + Then I should see "-$8.56" + Then I should see "40.04" + Then I should see "619.51" + Then I press button "btn_submit" + + Given I switch to tax "non-inclusive" + + + Scenario: I Test tax non-inclusive including shipping tax + Given I switch item shipping tax "on" + + Given I do a standard customer login with "default_customer_email", "default_customer_password" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "test10percent" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "499.99" + Then I should see "-$50.00" + Then I should see "31.98" + Then I should see "484.47" + Then I press button "btn_submit" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "test100percent" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "499.99" + Then I should see "-$499.99" + Then I should see "2.50" + Then I should see "0.48" + Then I should see "2.98" + Then I press button "btn_submit" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "test10fixed" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "499.99" + Then I should see "-$10.00" + Then I should see "34.78" + Then I should see "527.27" + Then I press button "btn_submit" + Given I switch item shipping tax "off" + + + Scenario: I Test tax inclusive including shipping tax + Given I switch item shipping tax "on" + Given I switch to tax "inclusive" + + Given I do a standard customer login with "default_customer_email", "default_customer_password" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "test10percent" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "534.99" + Then I should see "2.98" + Then I should see "-$53.50" + Then I should see "31.98" + Then I should see "484.47" + Then I press button "btn_submit" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=3&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "test100percent" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "42.79" + Then I should see "-$42.79" + Then I should see "2.98" + Then I should see "0.48" + Then I press button "btn_submit" + + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "test10fixed" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "534.99" + Then I should see "-$10.65" + Then I should see "34.83" + Then I should see "527.32" + Then I should see "2.98" + Then I press button "btn_submit" + + + Then I switch to tax "non-inclusive" + Then I switch item shipping tax "off" + + + Scenario: I Test free shipping coupon + + Given I do a standard customer login with "default_customer_email", "default_customer_password" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "testfreeshipping" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "499.99" + Then I should see "$2.50" + Then I should see "-$2.50" + Then I should see "35.00" + Then I should see "534.99" + Then I press button "btn_submit" + + Given I switch item shipping tax "on" + Then I visit "index.php?main_page=shopping_cart&action=empty_cart" + And I visit "index.php?main_page=product_info&cPath=1_9&products_id=27&action=buy_now" + And I visit "index.php?main_page=checkout_shipping" + Then I select "item_item" from "shipping" + Then I click on the element with xpath "//*[@id='checkoutShipping']/form/div[5]/input" + Then I select "cod" from "payment" + Then I fill in "dc_redeem_code" with "testfreeshipping" + Then I click on the element with css "#paymentSubmit > input[type='submit']" + Then I should see "499.99" + Then I should see "$2.50" + Then I should see "-$2.50" + Then I should see "35.00" + Then I should see "534.99" + Then I press button "btn_submit" + + Then I switch item shipping tax "off" diff --git a/zc_install/includes/systemChecks.yml b/zc_install/includes/systemChecks.yml index 74e9805b87..b324a04f1f 100644 --- a/zc_install/includes/systemChecks.yml +++ b/zc_install/includes/systemChecks.yml @@ -36,9 +36,9 @@ systemChecks: checkPhpVersionMax: method: checkPhpVersion parameters: - version: 7.1.0 + version: 7.3.0 versionTest: lt - localErrorText: + localErrorText: checkPhpVersionRecommendation: runLevel: always errorLevel: WARN