diff --git a/codeception.yml b/codeception.yml new file mode 100644 index 0000000..32ed5c7 --- /dev/null +++ b/codeception.yml @@ -0,0 +1,16 @@ +paths: + tests: tests + output: tests/_output + data: tests/_data + support: tests/_support + envs: tests/_envs +actor_suffix: Tester +extensions: + enabled: + - Codeception\Extension\RunFailed + +coverage: + enabled: true + whitelist: + include: + - src/* \ No newline at end of file diff --git a/composer.json b/composer.json index 5a38e21..e6bb31e 100644 --- a/composer.json +++ b/composer.json @@ -29,5 +29,10 @@ "psr-4": { "ObjectivePHP\\Gateway\\MySql\\": "src/" } + }, + "autoload-dev": { + "psr-4": { + "Test\\ObjectivePHP\\Gateway\\MySql\\": "tests/unit/" + } } } diff --git a/composer.lock b/composer.lock index 5b9a801..19d6fc4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,6 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "4875cab9ddebd2342228c2682cefec93", "content-hash": "830f719fd3583ba377c5264e9924b489", "packages": [ { @@ -69,7 +68,7 @@ "sqlserver", "update" ], - "time": "2016-10-03 20:34:56" + "time": "2016-10-03T20:34:56+00:00" }, { "name": "container-interop/container-interop", @@ -100,23 +99,243 @@ ], "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", "homepage": "https://github.com/container-interop/container-interop", - "time": "2017-02-14 19:40:03" + "time": "2017-02-14T19:40:03+00:00" + }, + { + "name": "doctrine/annotations", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "54cacc9b81758b14e3ce750f205a393d52339e97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97", + "reference": "54cacc9b81758b14e3ce750f205a393d52339e97", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2017-02-24T16:22:25+00:00" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "objective-php/config", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "https://github.com/objective-php/config.git", + "reference": "4a78526c7b2e66fa6c5daa06a3f6309855dc8269" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/objective-php/config/zipball/4a78526c7b2e66fa6c5daa06a3f6309855dc8269", + "reference": "4a78526c7b2e66fa6c5daa06a3f6309855dc8269", + "shasum": "" + }, + "require": { + "objective-php/matcher": "1.*", + "objective-php/primitives": "1.*", + "php": ">=7.0.0" + }, + "require-dev": { + "objective-php/phpunit-extension": "1.0", + "phpunit/phpunit": "5.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "ObjectivePHP\\Config\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "Gauthier 'Rusty' Delamarre", + "email": "gauthier@objective-php.org", + "role": "lead" + } + ], + "description": "Config component for ObjectivePHP", + "homepage": "https://github.com/objective-php/config", + "keywords": [ + "config", + "objective-php" + ], + "time": "2017-09-06T09:34:52+00:00" + }, + { + "name": "objective-php/events-handler", + "version": "v1.0.7", + "source": { + "type": "git", + "url": "https://github.com/objective-php/events-handler.git", + "reference": "4311aa5cce903de98d61cb4fb74c9abf6d44064a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/objective-php/events-handler/zipball/4311aa5cce903de98d61cb4fb74c9abf6d44064a", + "reference": "4311aa5cce903de98d61cb4fb74c9abf6d44064a", + "shasum": "" + }, + "require": { + "objective-php/matcher": "1.*", + "objective-php/primitives": "1.*", + "objective-php/services-factory": "^1.0", + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "5.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "ObjectivePHP\\Events\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "Gauthier 'Rusty' Delamarre", + "email": "gauthier@objective-php.org", + "role": "lead" + } + ], + "description": "Events Handler for ObjectivePHP", + "homepage": "https://github.com/objective-php/events-handler", + "keywords": [ + "events", + "events handler", + "objective php" + ], + "time": "2017-10-09T11:50:38+00:00" }, { "name": "objective-php/gateway", - "version": "v1.0.0", + "version": "v1.0.5", "source": { "type": "git", "url": "https://github.com/objective-php/gateway.git", - "reference": "92573e6deaaf0304b8ece2b093b9c3b4b5658e99" + "reference": "b28b4fda2f57003f81a0d84d163bd0e8b6c919ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/objective-php/gateway/zipball/92573e6deaaf0304b8ece2b093b9c3b4b5658e99", - "reference": "92573e6deaaf0304b8ece2b093b9c3b4b5658e99", + "url": "https://api.github.com/repos/objective-php/gateway/zipball/b28b4fda2f57003f81a0d84d163bd0e8b6c919ec", + "reference": "b28b4fda2f57003f81a0d84d163bd0e8b6c919ec", "shasum": "" }, "require": { + "objective-php/events-handler": "^1.0", "objective-php/notification": "^1.1.0", "objective-php/primitives": "^1.3.6", "php": ">=7.0", @@ -156,7 +375,55 @@ "database", "objective php" ], - "time": "2017-08-09 14:46:51" + "time": "2017-10-05T09:50:41+00:00" + }, + { + "name": "objective-php/invokable", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/objective-php/invokable.git", + "reference": "aec03eea6e85f133e30182cf9ca03bb1c85da1c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/objective-php/invokable/zipball/aec03eea6e85f133e30182cf9ca03bb1c85da1c1", + "reference": "aec03eea6e85f133e30182cf9ca03bb1c85da1c1", + "shasum": "" + }, + "require": { + "objective-php/primitives": "1.3.*", + "php": ">=7.0" + }, + "require-dev": { + "objective-php/application": "dev-master", + "objective-php/components": "1.0.*", + "phpunit/phpunit": "5.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "ObjectivePHP\\Invokable\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "Gauthier 'Rusty' Delamarre", + "email": "gauthier@objective-php.org", + "role": "lead" + } + ], + "description": "Objective PHP Invokable component", + "homepage": "https://github.com/objective-php/invokable", + "keywords": [ + "invokable", + "objective php" + ], + "time": "2017-06-29T12:46:13+00:00" }, { "name": "objective-php/matcher", @@ -202,7 +469,7 @@ "matcher", "objective php" ], - "time": "2016-05-05 13:13:34" + "time": "2016-05-05T13:13:34+00:00" }, { "name": "objective-php/notification", @@ -255,7 +522,7 @@ "components", "objective php" ], - "time": "2017-04-26 16:31:48" + "time": "2017-04-26T16:31:48+00:00" }, { "name": "objective-php/phpunit-extension", @@ -300,20 +567,20 @@ "objective php", "phpunit" ], - "time": "2016-05-05 12:55:53" + "time": "2016-05-05T12:55:53+00:00" }, { "name": "objective-php/primitives", - "version": "v1.3.6", + "version": "v1.3.7", "source": { "type": "git", "url": "https://github.com/objective-php/primitives.git", - "reference": "a582360b8d5792b84ab443ce2a309d1a224dc737" + "reference": "7b6db199310dbfdd83be307ae33914a34fe8fd4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/objective-php/primitives/zipball/a582360b8d5792b84ab443ce2a309d1a224dc737", - "reference": "a582360b8d5792b84ab443ce2a309d1a224dc737", + "url": "https://api.github.com/repos/objective-php/primitives/zipball/7b6db199310dbfdd83be307ae33914a34fe8fd4b", + "reference": "7b6db199310dbfdd83be307ae33914a34fe8fd4b", "shasum": "" }, "require": { @@ -348,13 +615,215 @@ "role": "dev" } ], - "description": "Primitives classes for ObjectivePHP", - "homepage": "https://github.com/objective-php/primitives", - "keywords": [ - "objective php", - "primitives" + "description": "Primitives classes for ObjectivePHP", + "homepage": "https://github.com/objective-php/primitives", + "keywords": [ + "objective php", + "primitives" + ], + "time": "2017-09-04T12:32:58+00:00" + }, + { + "name": "objective-php/services-factory", + "version": "v1.2.3", + "source": { + "type": "git", + "url": "https://github.com/objective-php/services-factory.git", + "reference": "a85e2f6de94290e8a3b5249cc01906c7d9028be7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/objective-php/services-factory/zipball/a85e2f6de94290e8a3b5249cc01906c7d9028be7", + "reference": "a85e2f6de94290e8a3b5249cc01906c7d9028be7", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.1", + "doctrine/annotations": "*", + "objective-php/config": "~1.0.0", + "objective-php/invokable": "~1.1.1", + "objective-php/matcher": "~1.0.0", + "objective-php/primitives": "~1.3.0", + "php": ">=7.0", + "phpdocumentor/reflection-docblock": "*" + }, + "require-dev": { + "objective-php/events-handler": "~1.0.0", + "objective-php/phpunit-extension": "~1.0.0", + "phpunit/phpunit": "5.*", + "zendframework/zend-servicemanager": "^2.7.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "ObjectivePHP\\ServicesFactory\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0" + ], + "authors": [ + { + "name": "Gauthier 'Rusty' Delamarre", + "email": "gauthier@objective-php.org", + "role": "lead" + } + ], + "description": "Services container for Objective PHP", + "homepage": "https://github.com/objective-php/services-factory", + "keywords": [ + "dependency injection", + "objective php", + "services" + ], + "time": "2017-08-07T10:17:14+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "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": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.1.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/2d3d238c433cf69caeb4842e97a3223a116f94b2", + "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-08-30T18:51:59+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } ], - "time": "2017-07-04 10:02:19" + "time": "2017-07-14T14:27:02+00:00" }, { "name": "psr/container", @@ -403,7 +872,57 @@ "container-interop", "psr" ], - "time": "2017-02-14 16:28:37" + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23T20:04:58+00:00" }, { "name": "zendframework/zend-eventmanager", @@ -457,7 +976,7 @@ "events", "zf2" ], - "time": "2017-07-11 19:17:22" + "time": "2017-07-11T19:17:22+00:00" }, { "name": "zendframework/zend-filter", @@ -517,28 +1036,28 @@ "filter", "zf2" ], - "time": "2017-05-17 20:56:17" + "time": "2017-05-17T20:56:17+00:00" }, { "name": "zendframework/zend-hydrator", - "version": "2.2.2", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-hydrator.git", - "reference": "e3ecc4920c1724e1949213163fee82200e8e6f6c" + "reference": "de0d6465fbc4b7ca345fddc148834c321c4b361f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/e3ecc4920c1724e1949213163fee82200e8e6f6c", - "reference": "e3ecc4920c1724e1949213163fee82200e8e6f6c", + "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/de0d6465fbc4b7ca345fddc148834c321c4b361f", + "reference": "de0d6465fbc4b7ca345fddc148834c321c4b361f", "shasum": "" }, "require": { - "php": "^7.0 || ^5.6", + "php": "^5.6 || ^7.0", "zendframework/zend-stdlib": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^6.0.10 || ^5.7.17", + "phpunit/phpunit": "^5.7.21 || ^6.3", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-eventmanager": "^3.0", "zendframework/zend-filter": "^2.6", @@ -557,8 +1076,8 @@ "branch-alias": { "dev-release-1.0": "1.0-dev", "dev-release-1.1": "1.1-dev", - "dev-master": "2.2-dev", - "dev-develop": "2.3-dev" + "dev-master": "2.3-dev", + "dev-develop": "2.4-dev" }, "zf": { "component": "Zend\\Hydrator", @@ -579,7 +1098,7 @@ "hydrator", "zf2" ], - "time": "2017-05-17 18:40:45" + "time": "2017-10-02T15:01:27+00:00" }, { "name": "zendframework/zend-servicemanager", @@ -642,7 +1161,7 @@ "servicemanager", "zf" ], - "time": "2017-03-01 22:08:02" + "time": "2017-03-01T22:08:02+00:00" }, { "name": "zendframework/zend-stdlib", @@ -687,7 +1206,7 @@ "stdlib", "zf2" ], - "time": "2016-09-13 14:38:50" + "time": "2016-09-13T14:38:50+00:00" } ], "packages-dev": [ @@ -748,20 +1267,20 @@ "gherkin", "parser" ], - "time": "2016-10-30 11:50:56" + "time": "2016-10-30T11:50:56+00:00" }, { "name": "codeception/codeception", - "version": "2.3.5", + "version": "2.3.6", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "e807cd458eb9f7ae7464f33ad835a2f54aa73194" + "reference": "c3dd3b5d9e0b1ea6c2fcca52457736dc756716f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/e807cd458eb9f7ae7464f33ad835a2f54aa73194", - "reference": "e807cd458eb9f7ae7464f33ad835a2f54aa73194", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/c3dd3b5d9e0b1ea6c2fcca52457736dc756716f8", + "reference": "c3dd3b5d9e0b1ea6c2fcca52457736dc756716f8", "shasum": "" }, "require": { @@ -776,7 +1295,7 @@ "phpunit/phpunit": ">4.8.20 <7.0", "phpunit/phpunit-mock-objects": ">2.3 <5.0", "sebastian/comparator": ">1.1 <3.0", - "sebastian/diff": "^1.4", + "sebastian/diff": ">=1.4 <3.0", "stecman/symfony-console-completion": "^0.7.0", "symfony/browser-kit": ">=2.7 <4.0", "symfony/console": ">=2.7 <4.0", @@ -792,7 +1311,6 @@ "flow/jsonpath": "~0.2", "league/factory-muffin": "^3.0", "league/factory-muffin-faker": "^1.0", - "mongodb/mongodb": "^1.0", "monolog/monolog": "~1.8", "pda/pheanstalk": "~3.0", "php-amqplib/php-amqplib": "~2.4", @@ -843,7 +1361,7 @@ "functional testing", "unit testing" ], - "time": "2017-08-10 20:28:02" + "time": "2017-09-28T23:19:49+00:00" }, { "name": "doctrine/instantiator", @@ -897,7 +1415,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "facebook/webdriver", @@ -949,7 +1467,7 @@ "selenium", "webdriver" ], - "time": "2017-04-28 14:54:49" + "time": "2017-04-28T14:54:49+00:00" }, { "name": "guzzlehttp/guzzle", @@ -1014,7 +1532,7 @@ "rest", "web service" ], - "time": "2017-06-22 18:50:49" + "time": "2017-06-22T18:50:49+00:00" }, { "name": "guzzlehttp/promises", @@ -1065,7 +1583,7 @@ "keywords": [ "promise" ], - "time": "2016-12-20 10:07:11" + "time": "2016-12-20T10:07:11+00:00" }, { "name": "guzzlehttp/psr7", @@ -1130,7 +1648,7 @@ "uri", "url" ], - "time": "2017-03-20 17:10:46" + "time": "2017-03-20T17:10:46+00:00" }, { "name": "myclabs/deep-copy", @@ -1172,7 +1690,7 @@ "object", "object graph" ], - "time": "2017-04-12 18:52:22" + "time": "2017-04-12T18:52:22+00:00" }, { "name": "phar-io/manifest", @@ -1227,7 +1745,7 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05 18:14:27" + "time": "2017-03-05T18:14:27+00:00" }, { "name": "phar-io/version", @@ -1274,172 +1792,26 @@ } ], "description": "Library for handling version information and constraints", - "time": "2017-03-05 17:38:23" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "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": "2015-12-27 11:43:31" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "3.2.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157", - "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157", - "shasum": "" - }, - "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.3.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-08-08 06:39:58" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773", - "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "time": "2017-06-03 08:32:36" + "time": "2017-03-05T17:38:23+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.7.0", + "version": "v1.7.2", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", + "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", "sebastian/comparator": "^1.1|^2.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, @@ -1450,7 +1822,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.7.x-dev" } }, "autoload": { @@ -1483,7 +1855,7 @@ "spy", "stub" ], - "time": "2017-03-02 20:05:34" + "time": "2017-09-04T11:05:03+00:00" }, { "name": "phpunit/php-code-coverage", @@ -1547,7 +1919,7 @@ "testing", "xunit" ], - "time": "2017-08-03 12:40:43" + "time": "2017-08-03T12:40:43+00:00" }, { "name": "phpunit/php-file-iterator", @@ -1594,7 +1966,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03 07:40:28" + "time": "2016-10-03T07:40:28+00:00" }, { "name": "phpunit/php-text-template", @@ -1635,7 +2007,7 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", @@ -1684,20 +2056,20 @@ "keywords": [ "timer" ], - "time": "2017-02-26 11:10:40" + "time": "2017-02-26T11:10:40+00:00" }, { "name": "phpunit/php-token-stream", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "ecb0b2cdaa0add708fe6f329ef65ae0c5225130b" + "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ecb0b2cdaa0add708fe6f329ef65ae0c5225130b", - "reference": "ecb0b2cdaa0add708fe6f329ef65ae0c5225130b", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9a02332089ac48e704c70f6cefed30c224e3c0b0", + "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0", "shasum": "" }, "require": { @@ -1733,20 +2105,20 @@ "keywords": [ "tokenizer" ], - "time": "2017-08-03 14:17:41" + "time": "2017-08-20T05:47:52+00:00" }, { "name": "phpunit/phpunit", - "version": "6.2.4", + "version": "6.4.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ff3a76a58ac293657808aefd58c8aaf05945f4d9" + "reference": "06b28548fd2b4a20c3cd6e247dc86331a7d4db13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ff3a76a58ac293657808aefd58c8aaf05945f4d9", - "reference": "ff3a76a58ac293657808aefd58c8aaf05945f4d9", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/06b28548fd2b4a20c3cd6e247dc86331a7d4db13", + "reference": "06b28548fd2b4a20c3cd6e247dc86331a7d4db13", "shasum": "" }, "require": { @@ -1755,24 +2127,24 @@ "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.3", + "myclabs/deep-copy": "^1.6.1", "phar-io/manifest": "^1.0.1", "phar-io/version": "^1.0", "php": "^7.0", "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.2", - "phpunit/php-file-iterator": "^1.4", - "phpunit/php-text-template": "^1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^4.0", - "sebastian/comparator": "^2.0", - "sebastian/diff": "^1.4.3", - "sebastian/environment": "^3.0.2", + "phpunit/php-code-coverage": "^5.2.2", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^4.0.3", + "sebastian/comparator": "^2.0.2", + "sebastian/diff": "^2.0", + "sebastian/environment": "^3.1", "sebastian/exporter": "^3.1", - "sebastian/global-state": "^1.1 || ^2.0", - "sebastian/object-enumerator": "^3.0.2", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", "sebastian/resource-operations": "^1.0", - "sebastian/version": "^2.0" + "sebastian/version": "^2.0.1" }, "conflict": { "phpdocumentor/reflection-docblock": "3.0.2", @@ -1791,7 +2163,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.2.x-dev" + "dev-master": "6.4.x-dev" } }, "autoload": { @@ -1817,7 +2189,7 @@ "testing", "xunit" ], - "time": "2017-08-03 13:59:28" + "time": "2017-10-16T13:18:59+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -1876,7 +2248,7 @@ "mock", "xunit" ], - "time": "2017-08-03 14:08:16" + "time": "2017-08-03T14:08:16+00:00" }, { "name": "psr/http-message", @@ -1926,7 +2298,7 @@ "request", "response" ], - "time": "2016-08-06 14:39:51" + "time": "2016-08-06T14:39:51+00:00" }, { "name": "psr/log", @@ -1973,7 +2345,7 @@ "psr", "psr-3" ], - "time": "2016-10-10 12:19:37" + "time": "2016-10-10T12:19:37+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -2018,25 +2390,25 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04 06:30:41" + "time": "2017-03-04T06:30:41+00:00" }, { "name": "sebastian/comparator", - "version": "2.0.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "20f84f468cb67efee293246e6a09619b891f55f0" + "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/20f84f468cb67efee293246e6a09619b891f55f0", - "reference": "20f84f468cb67efee293246e6a09619b891f55f0", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/ae068fede81d06e7bb9bb46a367210a3d3e1fe6a", + "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a", "shasum": "" }, "require": { "php": "^7.0", - "sebastian/diff": "^1.2", + "sebastian/diff": "^2.0", "sebastian/exporter": "^3.0" }, "require-dev": { @@ -2082,32 +2454,32 @@ "compare", "equality" ], - "time": "2017-03-03 06:26:08" + "time": "2017-08-03T07:14:59+00:00" }, { "name": "sebastian/diff", - "version": "1.4.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2134,7 +2506,7 @@ "keywords": [ "diff" ], - "time": "2017-05-22 07:24:03" + "time": "2017-08-03T08:09:46+00:00" }, { "name": "sebastian/environment", @@ -2184,7 +2556,7 @@ "environment", "hhvm" ], - "time": "2017-07-01 08:51:00" + "time": "2017-07-01T08:51:00+00:00" }, { "name": "sebastian/exporter", @@ -2251,7 +2623,7 @@ "export", "exporter" ], - "time": "2017-04-03 13:19:02" + "time": "2017-04-03T13:19:02+00:00" }, { "name": "sebastian/global-state", @@ -2302,7 +2674,7 @@ "keywords": [ "global state" ], - "time": "2017-04-27 15:39:26" + "time": "2017-04-27T15:39:26+00:00" }, { "name": "sebastian/object-enumerator", @@ -2349,7 +2721,7 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03 12:35:26" + "time": "2017-08-03T12:35:26+00:00" }, { "name": "sebastian/object-reflector", @@ -2394,7 +2766,7 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29 09:07:27" + "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", @@ -2447,7 +2819,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03 06:23:57" + "time": "2017-03-03T06:23:57+00:00" }, { "name": "sebastian/resource-operations", @@ -2489,7 +2861,7 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28 20:34:47" + "time": "2015-07-28T20:34:47+00:00" }, { "name": "sebastian/version", @@ -2532,7 +2904,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03 07:35:21" + "time": "2016-10-03T07:35:21+00:00" }, { "name": "stecman/symfony-console-completion", @@ -2577,24 +2949,24 @@ } ], "description": "Automatic BASH completion for Symfony Console Component based applications.", - "time": "2016-02-24 05:08:54" + "time": "2016-02-24T05:08:54+00:00" }, { "name": "symfony/browser-kit", - "version": "v3.3.6", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0" + "reference": "317d5bdf0127f06db7ea294186132b4f5b036839" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0", - "reference": "8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/317d5bdf0127f06db7ea294186132b4f5b036839", + "reference": "317d5bdf0127f06db7ea294186132b4f5b036839", "shasum": "" }, "require": { - "php": ">=5.5.9", + "php": "^5.5.9|>=7.0.8", "symfony/dom-crawler": "~2.8|~3.0" }, "require-dev": { @@ -2634,24 +3006,24 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2017-07-12 13:03:20" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/console", - "version": "v3.3.6", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "b0878233cb5c4391347e5495089c7af11b8e6201" + "reference": "116bc56e45a8e5572e51eb43ab58c769a352366c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/b0878233cb5c4391347e5495089c7af11b8e6201", - "reference": "b0878233cb5c4391347e5495089c7af11b8e6201", + "url": "https://api.github.com/repos/symfony/console/zipball/116bc56e45a8e5572e51eb43ab58c769a352366c", + "reference": "116bc56e45a8e5572e51eb43ab58c769a352366c", "shasum": "" }, "require": { - "php": ">=5.5.9", + "php": "^5.5.9|>=7.0.8", "symfony/debug": "~2.8|~3.0", "symfony/polyfill-mbstring": "~1.0" }, @@ -2664,7 +3036,6 @@ "symfony/dependency-injection": "~3.3", "symfony/event-dispatcher": "~2.8|~3.0", "symfony/filesystem": "~2.8|~3.0", - "symfony/http-kernel": "~2.8|~3.0", "symfony/process": "~2.8|~3.0" }, "suggest": { @@ -2703,24 +3074,24 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:27:59" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/css-selector", - "version": "v3.3.6", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "4d882dced7b995d5274293039370148e291808f2" + "reference": "07447650225ca9223bd5c97180fe7c8267f7d332" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/4d882dced7b995d5274293039370148e291808f2", - "reference": "4d882dced7b995d5274293039370148e291808f2", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/07447650225ca9223bd5c97180fe7c8267f7d332", + "reference": "07447650225ca9223bd5c97180fe7c8267f7d332", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { @@ -2756,24 +3127,24 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2017-05-01 15:01:29" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/debug", - "version": "v3.3.6", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13" + "reference": "eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/7c13ae8ce1e2adbbd574fc39de7be498e1284e13", - "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13", + "url": "https://api.github.com/repos/symfony/debug/zipball/eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd", + "reference": "eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd", "shasum": "" }, "require": { - "php": ">=5.5.9", + "php": "^5.5.9|>=7.0.8", "psr/log": "~1.0" }, "conflict": { @@ -2812,24 +3183,24 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2017-07-28 15:27:31" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/dom-crawler", - "version": "v3.3.6", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1" + "reference": "40dafd42d5dad7fe5ad4e958413d92a207522ac1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1", - "reference": "fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/40dafd42d5dad7fe5ad4e958413d92a207522ac1", + "reference": "40dafd42d5dad7fe5ad4e958413d92a207522ac1", "shasum": "" }, "require": { - "php": ">=5.5.9", + "php": "^5.5.9|>=7.0.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { @@ -2868,24 +3239,24 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2017-05-25 23:10:31" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.3.6", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e" + "reference": "d7ba037e4b8221956ab1e221c73c9e27e05dd423" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67535f1e3fd662bdc68d7ba317c93eecd973617e", - "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d7ba037e4b8221956ab1e221c73c9e27e05dd423", + "reference": "d7ba037e4b8221956ab1e221c73c9e27e05dd423", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^5.5.9|>=7.0.8" }, "conflict": { "symfony/dependency-injection": "<3.3" @@ -2931,24 +3302,24 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-06-09 14:53:08" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/finder", - "version": "v3.3.6", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4" + "reference": "773e19a491d97926f236942484cb541560ce862d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/baea7f66d30854ad32988c11a09d7ffd485810c4", - "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4", + "url": "https://api.github.com/repos/symfony/finder/zipball/773e19a491d97926f236942484cb541560ce862d", + "reference": "773e19a491d97926f236942484cb541560ce862d", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { @@ -2980,20 +3351,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-06-01 21:01:25" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.4.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "f29dca382a6485c3cbe6379f0c61230167681937" + "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f29dca382a6485c3cbe6379f0c61230167681937", - "reference": "f29dca382a6485c3cbe6379f0c61230167681937", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", + "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", "shasum": "" }, "require": { @@ -3005,7 +3376,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.6-dev" } }, "autoload": { @@ -3039,24 +3410,24 @@ "portable", "shim" ], - "time": "2017-06-09 14:24:12" + "time": "2017-10-11T12:05:26+00:00" }, { "name": "symfony/process", - "version": "v3.3.6", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a" + "reference": "fdf89e57a723a29baf536e288d6e232c059697b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/07432804942b9f6dd7b7377faf9920af5f95d70a", - "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a", + "url": "https://api.github.com/repos/symfony/process/zipball/fdf89e57a723a29baf536e288d6e232c059697b1", + "reference": "fdf89e57a723a29baf536e288d6e232c059697b1", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { @@ -3088,24 +3459,24 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-07-13 13:05:09" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/yaml", - "version": "v3.3.6", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed" + "reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed", - "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed", + "url": "https://api.github.com/repos/symfony/yaml/zipball/8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46", + "reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^5.5.9|>=7.0.8" }, "require-dev": { "symfony/console": "~2.8|~3.0" @@ -3143,7 +3514,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-07-23 12:43:26" + "time": "2017-10-05T14:43:42+00:00" }, { "name": "theseer/tokenizer", @@ -3183,57 +3554,7 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07 12:08:54" - }, - { - "name": "webmozart/assert", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2016-11-23 20:04:58" + "time": "2017-04-07T12:08:54+00:00" } ], "aliases": [], diff --git a/src/AbstractMySqlGateway.php b/src/AbstractMySqlGateway.php index f93a6c8..6ce67b1 100644 --- a/src/AbstractMySqlGateway.php +++ b/src/AbstractMySqlGateway.php @@ -31,7 +31,7 @@ abstract class AbstractMySqlGateway extends AbstractPaginableGateway { /** - * @var Link[] + * @var Link[][] */ protected $links; @@ -59,7 +59,7 @@ public function getLinks($method = self::ALL) $links = []; foreach ($this->links as $key => $pool) { - if ($method & $key) { + if ($method & $key && $key >= $method) { /** @var Link $link */ foreach ($pool as $link) { if ($link->runFilters()) { diff --git a/src/Link.php b/src/Link.php index cfcafe1..0cf80c8 100644 --- a/src/Link.php +++ b/src/Link.php @@ -1,11 +1,11 @@ createMysqlMock(); + $instance = $this->createAbstractMySqlGateway(); + + $instance->registerLink($link, $method, ...$filters); + $instance->registerLink($link, $method, ...$filters); + + $this->assertAttributeEquals( + [$method => [ + new Link($link, ...$filters), + new Link($link, ...$filters), + ]], + 'links', + $instance + ); + } + + /** + * @return array + */ + public function listMethods() + { + return [ + 'method AbstractMySqlGateway::FETCH' => [AbstractMySqlGateway::FETCH], + 'method AbstractMySqlGateway::FETCH_ONE' => [AbstractMySqlGateway::FETCH_ONE], + 'method AbstractMySqlGateway::FETCH_ALL' => [AbstractMySqlGateway::FETCH_ALL], + 'method AbstractMySqlGateway::PERSIST' => [AbstractMySqlGateway::PERSIST], + 'method AbstractMySqlGateway::UPDATE' => [AbstractMySqlGateway::UPDATE], + 'method AbstractMySqlGateway::DELETE' => [AbstractMySqlGateway::DELETE], + 'method AbstractMySqlGateway::PURGE' => [AbstractMySqlGateway::PURGE], + 'method AbstractMySqlGateway::WRITE' => [AbstractMySqlGateway::WRITE], + 'method AbstractMySqlGateway::READ' => [AbstractMySqlGateway::READ], + 'method AbstractMySqlGateway::ALL' => [AbstractMySqlGateway::ALL], + ]; + } + /** + * @return array + */ + public function linkProvider() + { + $filter = $this->filtersProvider()['trueFilter'][0]; + + $linksData = $this->listMethods(); + + $linksData['default'] = []; + + // note that it seems no direct validation of any method existence is done. + $linksData['128 is an invalid value but alas it works !!'] = [128]; + $linksData['a text string, invalid value, works again!!'] = ['whatever compiles!']; + + $linksData['AbstractMySqlGateway::FETCH + filter'] = [AbstractMySqlGateway::FETCH, $filter]; + $linksData['AbstractMySqlGateway::FETCH + filters'] = [AbstractMySqlGateway::FETCH, $filter, $filter, $filter]; + + return $linksData; + } + + /** + * Target is to "filter" registered Links according to their registration methods and researched method + * + * Due to extensive tests on Link class, + * they will be given either 0 or 1 filter, giving when calling runFilters(): + * - true (no filter), + * - true (true return callable), + * - false (false return callable) + * + * The FILTER part is a sanity check for their proper integration in AbstractMysqlGateway + * + * With a Gateway populated with Links, method -> filterResult: + * - PERSIST -> true + * - FETCH_ONE -> false + * - FETCH_ALL -> true (no filter) + * - READ -> false + * - READ -> true + * - READ -> true (no filter) + * + * Expected output should be, method -> count : + * - PERSIST -> 1 + * - READ -> 2 (RE + * - FETCH_ALL -> 3 (FETCH_ALL , READ *2) + * - any other -> 0 + */ + public function getLinksProvider() + { + $instance = $this->createAbstractMySqlGateway(); + + $linksProviderData = array_map(function($array) use ($instance) { + $array[] = $instance; + $array[] = []; + return $array; + }, $this->listMethods()); + + $trueFilter = function() { + return true; + }; + $falseFilter = function() { + return false; + }; + + $linksData = [ + 'PERSIST' => [ + 'methodName' => 'method AbstractMySqlGateway::PERSIST', + 'methodId' => AbstractMySqlGateway::PERSIST, + 'filter' => $trueFilter, + ], + 'FETCH_ONE_false' => [ + 'methodName' => 'method AbstractMySqlGateway::FETCH_ONE', + 'methodId' => AbstractMySqlGateway::FETCH_ONE, + 'filter' => $falseFilter, + ], + 'FETCH_ALL' => [ + 'methodName' => 'method AbstractMySqlGateway::FETCH_ALL', + 'methodId' => AbstractMySqlGateway::FETCH_ALL, + ], + 'READ_true' => [ + 'methodName' => 'method AbstractMySqlGateway::READ', + 'methodId' => AbstractMySqlGateway::READ, + 'filter' => $trueFilter, + ], + 'READ_false' => [ + 'methodName' => 'method AbstractMySqlGateway::READ', + 'methodId' => AbstractMySqlGateway::READ, + 'filter' => $falseFilter, + ], + 'READ' => [ + 'methodName' => 'method AbstractMySqlGateway::READ', + 'methodId' => AbstractMySqlGateway::READ, + ], + ]; + + // preparing mysqli connection according to specs above. + $mysqlis = []; + foreach ($linksData as $key => $data) { + $mysqlis[$key] = $this->createMysqlMock()->setConnectionIdentifier($data['methodName']); + if (isset($data['filter'])) { + $instance->registerLink($mysqlis[$key], $data['methodId'], $data['filter']); + } else { + $instance->registerLink($mysqlis[$key], $data['methodId']); + } + } + + // updating expected elements according to spec above + $linksProviderData['method AbstractMySqlGateway::PERSIST'][2] = $this->extractIdentifiers([ + $mysqlis['PERSIST'] + ]); + $linksProviderData['method AbstractMySqlGateway::FETCH_ALL'][2] = $this->extractIdentifiers([ + $mysqlis['FETCH_ALL'], + $mysqlis['READ_true'], + $mysqlis['READ'] + ]); + $linksProviderData['method AbstractMySqlGateway::READ'][2] = $this->extractIdentifiers([ + $mysqlis['READ_true'], + $mysqlis['READ'] + ]); + $linksProviderData['method AbstractMySqlGateway::FETCH_ONE'][2] = $this->extractIdentifiers([ + $mysqlis['READ_true'], $mysqlis['READ'] + ]); + $linksProviderData['method AbstractMySqlGateway::FETCH'][2] = $this->extractIdentifiers([ + $mysqlis['READ_true'], + $mysqlis['READ'] + ]); + + return $linksProviderData; + } + + /** + * It seems some magical cloning happens when dealing with dataProviders, + * and \mysqli being uncloneable (its mocks && extension altogether), + * the only 'same' assert can be done on an identifying property + * + * @param $method + * @param AbstractMySqlGateway $instance + * @param array $foundLinks + * @dataProvider getLinksProvider + */ + public function testGetLinks($method = AbstractMySqlGateway::ALL, $instance, array $foundLinks = []) + { + $this->assertSame($foundLinks, $this->extractIdentifiers($instance->getLinks($method))); + } + + public function testFetch() + { + $this->expectException(MySqlGatewayException::class); + $this->createAbstractMySqlGateway()->fetch(new ResultSetDescriptor('')); + } + + public function testPurge() + { + $this->expectException(MySqlGatewayException::class); + $this->createAbstractMySqlGateway()->purge(new ResultSetDescriptor('')); + } + + public function testFetchAll() + { + + $queryMockedGateway = $this->getMockBuilder(AbstractMySqlGateway::class) + ->setMethods(['query']) + ->getMock(); + + /** + * @var AbstractMySqlGateway $queryMockedGateway + */ + $queryMockedGateway->registerLink($this->createMysqlMock(), AbstractMySqlGateway::READ); + + $baseRDS = (new ResultSetDescriptor('elements')) + ->addFilter('external_reference', 42); + + $queryMockedGateway + ->expects($this->once()) + ->method('query') + ->willReturn(new ResultSet()); + + $this->assertInstanceOf(ResultSetInterface::class, $queryMockedGateway->fetchAll($baseRDS)); + } +} diff --git a/tests/unit/IdentifiableMySqli.php b/tests/unit/IdentifiableMySqli.php new file mode 100644 index 0000000..cc515ad --- /dev/null +++ b/tests/unit/IdentifiableMySqli.php @@ -0,0 +1,27 @@ +connectionIdentifier; + } + + /** + * @param mixed $connectionIdentifier + * @return IdentifiableMySqli + */ + public function setConnectionIdentifier($connectionIdentifier) + { + $this->connectionIdentifier = $connectionIdentifier; + return $this; + } +} \ No newline at end of file diff --git a/tests/unit/LinkTest.php b/tests/unit/LinkTest.php new file mode 100644 index 0000000..1f148f8 --- /dev/null +++ b/tests/unit/LinkTest.php @@ -0,0 +1,64 @@ +createMysqlMock(); + + $link = new Link($mysqli, ...$filters); + $this->assertSame($mysqli, $link->getLink()); + $this->assertSame($filters, $link->getFilters()); + } + + /** + * @param callable[] ...$filters + * @dataProvider filtersProvider + */ + public function testGettersSetters(callable ...$filters) + { + $link = new Link($this->createMysqlMock()); + + $anotherMysqli = $this->createMysqlMock(); + $this->assertSame($anotherMysqli, $link->setLink($anotherMysqli)->getLink()); + $this->assertEquals([], $link->getFilters()); + + $link->setFilters($filters); + $this->assertSame($filters, $link->getFilters()); + + } + + /** + * @param callable[] $filters + * @param $expectedValue + * @dataProvider filtersRunResultsProvider + */ + public function testRunFilters($filters, $expectedValue) + { + $this->assertEquals($expectedValue, (new Link($this->createMysqlMock(), ...$filters))->runFilters()); + } + + public function filtersRunResultsProvider() + { + $filters = $this->filtersProvider(); + $expected = [ + 'noFilters' => [$filters['noFilters'], true], + 'trueFilter' => [$filters['trueFilter'], true], + 'falseFilter' => [$filters['falseFilter'], false], + 'trueFalseFilter' => [$filters['trueFalseFilter'], false], + 'falseTrueFilter' => [$filters['falseTrueFilter'], false], + ]; + return $expected; + } +} diff --git a/tests/unit/MySqlGatewayTestTrait.php b/tests/unit/MySqlGatewayTestTrait.php new file mode 100644 index 0000000..c29dc41 --- /dev/null +++ b/tests/unit/MySqlGatewayTestTrait.php @@ -0,0 +1,68 @@ +getMockBuilder(IdentifiableMySqli::class) + ->disableOriginalConstructor() + ->setMethodsExcept(['getConnectionIdentifier', 'setConnectionIdentifier']) + ->getMock(); + + return $mock; + } + + /** + * @return callable[][] + */ + public function filtersProvider() : array + { + $trueFilter = function() { + return true; + }; + $falseFilter = function() { + return false; + }; + return [ + 'noFilters' => [ + ], + 'trueFilter' => [ + $trueFilter, + ], + 'falseFilter' => [ + $falseFilter, + ], + 'trueFalseFilter' => [ + $trueFilter, + $falseFilter, + ], + 'falseTrueFilter' => [ + $falseFilter, + $trueFilter, + ], + ]; + } + + /** + * @param IdentifiableMySqli[] $mysqlis + * @return string[] + */ + public function extractIdentifiers($mysqlis) :array + { + return array_map(function($mysqli) { + /** + * @var IdentifiableMySqli $mysqli + */ + return $mysqli->getConnectionIdentifier(); + }, $mysqlis); + } +}