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