From ba577a3d0b5979137aba107c48d7c9aae18439cd Mon Sep 17 00:00:00 2001 From: eugene-khorev Date: Thu, 13 Jun 2019 19:05:37 +0300 Subject: [PATCH 01/13] Very first untested version --- src/RpcServer.php | 70 ++++++++++++++++--- src/Smd/Annotation/AbstractType.php | 48 +++++++++++++ .../Definition/AbstractDefinitionType.php | 24 +++++++ .../Definition/ArrayDefinitionType.php | 38 ++++++++++ .../Definition/BooleanDefinitionType.php | 14 ++++ .../Annotation/Definition/DefinitionTrait.php | 20 ++++++ .../Definition/IntegerDefinitionType.php | 14 ++++ .../Definition/NumberDefinitionType.php | 14 ++++ .../Definition/ObjectDefinitionType.php | 56 +++++++++++++++ .../Definition/StringDefinitionType.php | 14 ++++ src/Smd/Annotation/Definitions.php | 19 +++++ src/Smd/Annotation/Error.php | 28 ++++++++ src/Smd/Annotation/Errors.php | 28 ++++++++ .../Parameter/AbstractParameterType.php | 33 +++++++++ .../Parameter/ArrayParameterType.php | 45 ++++++++++++ .../Parameter/BooleanParameterType.php | 12 ++++ .../Parameter/IntegerParameterType.php | 12 ++++ .../Parameter/NumberParameterType.php | 12 ++++ .../Parameter/ObjectParameterType.php | 35 ++++++++++ .../Parameter/StringParameterType.php | 12 ++++ src/Smd/Annotation/Parameters.php | 33 +++++++++ src/Smd/Annotation/Service.php | 49 +++++++++++++ src/Smd/SmdGenerator.php | 29 ++++++++ src/Smd/SmdGeneratorInterface.php | 7 ++ 24 files changed, 657 insertions(+), 9 deletions(-) mode change 100644 => 100755 src/RpcServer.php create mode 100644 src/Smd/Annotation/AbstractType.php create mode 100644 src/Smd/Annotation/Definition/AbstractDefinitionType.php create mode 100644 src/Smd/Annotation/Definition/ArrayDefinitionType.php create mode 100644 src/Smd/Annotation/Definition/BooleanDefinitionType.php create mode 100644 src/Smd/Annotation/Definition/DefinitionTrait.php create mode 100644 src/Smd/Annotation/Definition/IntegerDefinitionType.php create mode 100644 src/Smd/Annotation/Definition/NumberDefinitionType.php create mode 100644 src/Smd/Annotation/Definition/ObjectDefinitionType.php create mode 100644 src/Smd/Annotation/Definition/StringDefinitionType.php create mode 100644 src/Smd/Annotation/Definitions.php create mode 100644 src/Smd/Annotation/Error.php create mode 100644 src/Smd/Annotation/Errors.php create mode 100644 src/Smd/Annotation/Parameter/AbstractParameterType.php create mode 100644 src/Smd/Annotation/Parameter/ArrayParameterType.php create mode 100644 src/Smd/Annotation/Parameter/BooleanParameterType.php create mode 100644 src/Smd/Annotation/Parameter/IntegerParameterType.php create mode 100644 src/Smd/Annotation/Parameter/NumberParameterType.php create mode 100644 src/Smd/Annotation/Parameter/ObjectParameterType.php create mode 100644 src/Smd/Annotation/Parameter/StringParameterType.php create mode 100644 src/Smd/Annotation/Parameters.php create mode 100644 src/Smd/Annotation/Service.php create mode 100644 src/Smd/SmdGenerator.php create mode 100644 src/Smd/SmdGeneratorInterface.php diff --git a/src/RpcServer.php b/src/RpcServer.php old mode 100644 new mode 100755 index 25a83ca..9464f25 --- a/src/RpcServer.php +++ b/src/RpcServer.php @@ -8,8 +8,10 @@ use Devim\Component\RpcServer\Exception\RpcParseException; use Devim\Component\RpcServer\Exception\RpcServiceExistsException; use Devim\Component\RpcServer\Exception\RpcServiceNotFoundException; +use Devim\Component\RpcServer\Smd\SmdGeneratorInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; +use Doctrine\Common\Annotations\Reader as AnnotationReaderInterface; /** * Class RpcServer @@ -33,6 +35,27 @@ class RpcServer */ private $middleware = []; + /** + * @var AnnotationReaderInterface + */ + private $annotationReader; + + /** + * @var SmdGenerator + */ + private $smdGenerator; + + /** + * + * @param AnnotationReaderInterface $annotationReader + * @param SmdGeneratorInterface $smdGenerator + */ + public function __construct(AnnotationReaderInterface $annotationReader, SmdGeneratorInterface $smdGenerator) + { + $this->annotationReader = $annotationReader; + $this->smdGenerator = $smdGenerator; + } + /** * @param string $className * @param \Closure $parametersCallback @@ -86,17 +109,21 @@ public function run(Request $request) : JsonResponse { $response = []; - $payload = json_decode($request->getContent(), true); + if ($this->isSmdRequest($request)) { + $response = $this->smdGenerator->run($this->serviceAnnotationGenerator()); + } else { + $payload = json_decode($request->getContent(), true); - if ($this->isBatchRequest($payload)) { - foreach ($payload as $item) { - $response[] = $this->doRun($item); - } - if (count($response) === 1) { - $response = reset($response); + if ($this->isBatchRequest($payload)) { + foreach ($payload as $item) { + $response[] = $this->doRun($item); + } + if (count($response) === 1) { + $response = reset($response); + } + } else { + $response = $this->doRun($payload); } - } else { - $response = $this->doRun($payload); } return JsonResponse::create($response); @@ -150,6 +177,15 @@ private function validatePayload(&$payload) } } + /** + * + * @return bool + */ + private function isSmdRequest(Request $request) + { + return $request->query->has('smd'); + } + /** * @param mixed $payload * @@ -303,4 +339,20 @@ private function extractRequestId($payload) { return $payload['id'] ?? null; } + + private function serviceAnnotationGenerator() { + foreach ($this->services as $name => [$className, $parametersCallback]) { + $class = new \ReflectionClass($className); + $methods = $class->getMethods(\ReflectionMethod::IS_PUBLIC); + + foreach ($methods as $method) { + $annotation = $this->annotationReader->getMethodAnnotation($method, \Devim\Component\RpcServer\Smd\Annotation\Service::class); + + if (!empty($annotation)) { + $smdName = $name . '.' . $method->getName(); + yield $smdName => $annotation; + } + } + } + } } diff --git a/src/Smd/Annotation/AbstractType.php b/src/Smd/Annotation/AbstractType.php new file mode 100644 index 0000000..8f0d327 --- /dev/null +++ b/src/Smd/Annotation/AbstractType.php @@ -0,0 +1,48 @@ +getShortName(); + if (!preg_match('/^(.+)'.$prefix.'$/', $className, $matches)) { + throw new \Exception($className); + } + + return lcfirst($matches[1]); + } + + public function getSmdInfo() { + return [ + 'type' => $this->getTypeName(), + 'name' => $this->name, + 'description' => $this->description, + ]; + } +} diff --git a/src/Smd/Annotation/Definition/AbstractDefinitionType.php b/src/Smd/Annotation/Definition/AbstractDefinitionType.php new file mode 100644 index 0000000..a8e1da7 --- /dev/null +++ b/src/Smd/Annotation/Definition/AbstractDefinitionType.php @@ -0,0 +1,24 @@ +type, static::STD_TYPES)) { + $info['items'] = [ + 'type' => $this->type, + ]; + } else { + $info['items'] = [ + '$ref' => '#/definitions/' . $this->type, + ]; + } + + return $info; + } +} diff --git a/src/Smd/Annotation/Definition/BooleanDefinitionType.php b/src/Smd/Annotation/Definition/BooleanDefinitionType.php new file mode 100644 index 0000000..ec02e79 --- /dev/null +++ b/src/Smd/Annotation/Definition/BooleanDefinitionType.php @@ -0,0 +1,14 @@ + + */ + public $definitions = []; + + private function getSmdDefinitions() { + $result = []; + foreach ($this->definitions as $item) { + $result[$item->name] = $item->getSmdInfo(); + } + return $result; + } + +} diff --git a/src/Smd/Annotation/Definition/IntegerDefinitionType.php b/src/Smd/Annotation/Definition/IntegerDefinitionType.php new file mode 100644 index 0000000..3d299c0 --- /dev/null +++ b/src/Smd/Annotation/Definition/IntegerDefinitionType.php @@ -0,0 +1,14 @@ + + */ + public $properties; + + /** + * + * @var string + */ + public $ref; + + public function getSmdInfo() { + $info = parent::getSmdInfo(); + + $hasRef = !empty($this->ref); + $hasProperties = !empty($this->properties); + + if ($hasRef && $hasProperties) { + throw new \Exception('oops 1'); + } + + if ($hasRef) { + $info['$ref'] = '#/definitions/' . $this->ref; + } else if ($hasProperties) { + $info['properties'] = $this->getSmdProperties(); + } else { + throw new \Exception('oops 2'); + } + + return $info; + } + + private function getSmdProperties() + { + $result = []; + foreach ($this->properties as $item) { + $result[$item->name] = $item->getSmdInfo(); + } + return $result; + } + +} diff --git a/src/Smd/Annotation/Definition/StringDefinitionType.php b/src/Smd/Annotation/Definition/StringDefinitionType.php new file mode 100644 index 0000000..ec4af60 --- /dev/null +++ b/src/Smd/Annotation/Definition/StringDefinitionType.php @@ -0,0 +1,14 @@ + + */ + public $properties; +} diff --git a/src/Smd/Annotation/Error.php b/src/Smd/Annotation/Error.php new file mode 100644 index 0000000..401a3ea --- /dev/null +++ b/src/Smd/Annotation/Error.php @@ -0,0 +1,28 @@ + + */ + public $items; + + public function getSmdInfo() + { + $result = []; + foreach ($this->items as $error) { + $result[$error->code] = $error->description; + } + return $result; + } +} diff --git a/src/Smd/Annotation/Parameter/AbstractParameterType.php b/src/Smd/Annotation/Parameter/AbstractParameterType.php new file mode 100644 index 0000000..8d59b8e --- /dev/null +++ b/src/Smd/Annotation/Parameter/AbstractParameterType.php @@ -0,0 +1,33 @@ +type, static::STD_TYPES)) { + $info['items'] = [ + 'type' => $this->type, + ]; + } else if (!empty($this->definitions)) { + $info['definitions'] = $this->getSmdDefinitions(); + + if (!isset($info['definitions'][$this->type])) { + throw new \Exception('oops'); + } + + $info['items'] = [ + '$ref' => '#/definitions/' . $this->type, + ]; + } + + return $info; + } +} diff --git a/src/Smd/Annotation/Parameter/BooleanParameterType.php b/src/Smd/Annotation/Parameter/BooleanParameterType.php new file mode 100644 index 0000000..04ea27a --- /dev/null +++ b/src/Smd/Annotation/Parameter/BooleanParameterType.php @@ -0,0 +1,12 @@ +definitions)) { + $info['definitions'] = $this->getSmdDefinitions(); + } + + if (!empty($this->ref)) { + $info['$ref'] = '#/definitions/' . $this->ref; + } + + return $info; + } + +} diff --git a/src/Smd/Annotation/Parameter/StringParameterType.php b/src/Smd/Annotation/Parameter/StringParameterType.php new file mode 100644 index 0000000..7f30c60 --- /dev/null +++ b/src/Smd/Annotation/Parameter/StringParameterType.php @@ -0,0 +1,12 @@ + + */ + public $items; + + /** + * + * @var array + */ + public $definitions = []; + + public function getSmdInfo() { + $info = []; + foreach ($this->items as $item) { + $info[] = $item->getSmdInfo(); + } + return $info; + } +} diff --git a/src/Smd/Annotation/Service.php b/src/Smd/Annotation/Service.php new file mode 100644 index 0000000..ba94661 --- /dev/null +++ b/src/Smd/Annotation/Service.php @@ -0,0 +1,49 @@ + $this->description, + 'parameters' => $this->parameters->getSmdInfo(), + 'returns' => $this->returns->getSmdInfo(), + 'errors' => $this->errors->getSmdInfo(), + ]; + } +} diff --git a/src/Smd/SmdGenerator.php b/src/Smd/SmdGenerator.php new file mode 100644 index 0000000..9151dd2 --- /dev/null +++ b/src/Smd/SmdGenerator.php @@ -0,0 +1,29 @@ + $annotation) { + $services[$name] = $annotation->getSmdInfo(); + } + + return [ + 'transport' => 'POST', + 'envelope' => 'JSON-RPC-2.0', + 'contentType' => '', + 'SMDVersion' => '', + 'target' => '', + 'services' => $services, + ]; + + } +} diff --git a/src/Smd/SmdGeneratorInterface.php b/src/Smd/SmdGeneratorInterface.php new file mode 100644 index 0000000..c60e47b --- /dev/null +++ b/src/Smd/SmdGeneratorInterface.php @@ -0,0 +1,7 @@ + Date: Fri, 14 Jun 2019 10:06:42 +0300 Subject: [PATCH 02/13] RpcServer doc & comments --- src/RpcServer.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/RpcServer.php b/src/RpcServer.php index 9464f25..410bd4d 100755 --- a/src/RpcServer.php +++ b/src/RpcServer.php @@ -178,6 +178,7 @@ private function validatePayload(&$payload) } /** + * @param Request $request * * @return bool */ @@ -340,14 +341,20 @@ private function extractRequestId($payload) return $payload['id'] ?? null; } + /** + * @return \Generator + */ private function serviceAnnotationGenerator() { + // Loop over services foreach ($this->services as $name => [$className, $parametersCallback]) { + // Get public service methods $class = new \ReflectionClass($className); $methods = $class->getMethods(\ReflectionMethod::IS_PUBLIC); + // Loop over methods foreach ($methods as $method) { + // Check if there is service annotation in method's doc block $annotation = $this->annotationReader->getMethodAnnotation($method, \Devim\Component\RpcServer\Smd\Annotation\Service::class); - if (!empty($annotation)) { $smdName = $name . '.' . $method->getName(); yield $smdName => $annotation; From aec1995f40fa751de8fa7f38007fd3d832fdbe2b Mon Sep 17 00:00:00 2001 From: eugene-khorev Date: Fri, 14 Jun 2019 10:08:24 +0300 Subject: [PATCH 03/13] SmdGenerator doc & comments --- src/Smd/SmdGenerator.php | 11 +++++++---- src/Smd/SmdGeneratorInterface.php | 10 +++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/Smd/SmdGenerator.php b/src/Smd/SmdGenerator.php index 9151dd2..dd1e373 100644 --- a/src/Smd/SmdGenerator.php +++ b/src/Smd/SmdGenerator.php @@ -3,13 +3,16 @@ namespace Devim\Component\RpcServer\Smd; /** - * Description of SmdGenerator - * - * @author eugene + * Class SmdGenerator */ class SmdGenerator implements SmdGeneratorInterface { - public function run(\Generator $serviceAnnotationGenerator) { + /** + * @param \Generator $serviceAnnotationGenerator + * + * @return array + */ + public function run(\Generator $serviceAnnotationGenerator): array { $services = []; foreach ($serviceAnnotationGenerator as $name => $annotation) { diff --git a/src/Smd/SmdGeneratorInterface.php b/src/Smd/SmdGeneratorInterface.php index c60e47b..bba2fda 100644 --- a/src/Smd/SmdGeneratorInterface.php +++ b/src/Smd/SmdGeneratorInterface.php @@ -2,6 +2,14 @@ namespace Devim\Component\RpcServer\Smd; +/** + * Interface SmdGeneratorInterface + */ interface SmdGeneratorInterface { - public function run(\Generator $serviceAnnotationGenerator); + /** + * @param \Generator $serviceAnnotationGenerator + * + * @return array + */ + public function run(\Generator $serviceAnnotationGenerator): array; } \ No newline at end of file From 4e9c7ae4d6b1cebab8b4154a8e6d8b4a41b4cf02 Mon Sep 17 00:00:00 2001 From: eugene-khorev Date: Fri, 14 Jun 2019 10:20:47 +0300 Subject: [PATCH 04/13] Added configuration parameters for SmdGenerator class --- src/Smd/SmdGenerator.php | 51 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/src/Smd/SmdGenerator.php b/src/Smd/SmdGenerator.php index dd1e373..765fdcd 100644 --- a/src/Smd/SmdGenerator.php +++ b/src/Smd/SmdGenerator.php @@ -7,6 +7,47 @@ */ class SmdGenerator implements SmdGeneratorInterface { + /** + * @var string + */ + private $transport; + + /** + * @var string + */ + private $envelope; + + /** + * @var string + */ + private $contentType; + + /** + * @var string + */ + private $SMDVersion; + + /** + * @var string + */ + private $target; + + /** + * @param string $target + * @param string $transport + * @param string $envelope + * @param string $contentType + * @param string $SMDVersion + */ + public function __construct($target, $transport = 'POST', $envelope = 'JSON-RPC-2.0', $contentType = 'application/json', $SMDVersion = '2.0') + { + $this->target = $target; + $this->transport = $transport; + $this->envelope = $envelope; + $this->contentType = $contentType; + $this->SMDVersion = $SMDVersion; + } + /** * @param \Generator $serviceAnnotationGenerator * @@ -20,11 +61,11 @@ public function run(\Generator $serviceAnnotationGenerator): array { } return [ - 'transport' => 'POST', - 'envelope' => 'JSON-RPC-2.0', - 'contentType' => '', - 'SMDVersion' => '', - 'target' => '', + 'transport' => $this->transport, + 'envelope' => $this->envelope, + 'contentType' => $this->contentType, + 'SMDVersion' => $this->SMDVersion, + 'target' => $this->target, 'services' => $services, ]; From 04f572f859027bda68d001221a2e38c63cec11f4 Mon Sep 17 00:00:00 2001 From: eugene-khorev Date: Fri, 14 Jun 2019 11:06:31 +0300 Subject: [PATCH 05/13] Added SmdException & SmdInvalidClassNameException --- src/Smd/Annotation/AbstractType.php | 19 +++++++--- .../Definition/AbstractDefinitionType.php | 10 +---- .../Definition/ArrayDefinitionType.php | 2 +- .../Definition/ObjectDefinitionType.php | 2 +- src/Smd/Annotation/Error.php | 8 ++-- src/Smd/Annotation/Errors.php | 4 +- .../Parameter/AbstractParameterType.php | 10 +---- .../Parameter/ArrayParameterType.php | 2 +- .../Parameter/ObjectParameterType.php | 2 +- src/Smd/Annotation/Parameters.php | 9 +++-- src/Smd/Annotation/Service.php | 8 ++-- src/Smd/Exception/SmdException.php | 37 +++++++++++++++++++ .../SmdInvalidClassNameException.php | 19 ++++++++++ 13 files changed, 93 insertions(+), 39 deletions(-) create mode 100644 src/Smd/Exception/SmdException.php create mode 100644 src/Smd/Exception/SmdInvalidClassNameException.php diff --git a/src/Smd/Annotation/AbstractType.php b/src/Smd/Annotation/AbstractType.php index 8f0d327..3c80bda 100644 --- a/src/Smd/Annotation/AbstractType.php +++ b/src/Smd/Annotation/AbstractType.php @@ -4,6 +4,8 @@ use Doctrine\Common\Annotations\Annotation\Required; +use Devim\Component\RpcServer\Smd\Exception; + /** * @Annotation * @Target({"ANNOTATION"}) @@ -11,6 +13,8 @@ abstract class AbstractType { + const CLASS_NAME_SUFFIX = ''; + /** * @Required * @@ -26,19 +30,24 @@ abstract class AbstractType public $description; /** - * * @return string + * @throws SmdInvalidClassNameException */ - public function getTypeName($prefix='') { + public function getTypeName(): string { + $rx = '/^(.+)'.static::CLASS_NAME_SUFFIX.'$/'; $className = (new \ReflectionClass($this))->getShortName(); - if (!preg_match('/^(.+)'.$prefix.'$/', $className, $matches)) { - throw new \Exception($className); + + if (!preg_match($rx, $className, $matches)) { + throw new Exception\SmdInvalidClassNameException($className, static::CLASS_NAME_SUFFIX); } return lcfirst($matches[1]); } - public function getSmdInfo() { + /** + * @return array + */ + public function getSmdInfo(): array { return [ 'type' => $this->getTypeName(), 'name' => $this->name, diff --git a/src/Smd/Annotation/Definition/AbstractDefinitionType.php b/src/Smd/Annotation/Definition/AbstractDefinitionType.php index a8e1da7..725b17e 100644 --- a/src/Smd/Annotation/Definition/AbstractDefinitionType.php +++ b/src/Smd/Annotation/Definition/AbstractDefinitionType.php @@ -12,13 +12,5 @@ */ class AbstractDefinitionType extends AbstractType { - - /** - * - * @return string - */ - public function getTypeName() { - return parent::getTypeName('DefinitionType'); - } - + const CLASS_NAME_SUFFIX = 'DefinitionType'; } diff --git a/src/Smd/Annotation/Definition/ArrayDefinitionType.php b/src/Smd/Annotation/Definition/ArrayDefinitionType.php index e1e24ed..bf7a45a 100644 --- a/src/Smd/Annotation/Definition/ArrayDefinitionType.php +++ b/src/Smd/Annotation/Definition/ArrayDefinitionType.php @@ -20,7 +20,7 @@ class ArrayDefinitionType extends AbstractDefinitionType */ public $type; - public function getSmdInfo() { + public function getSmdInfo(): array { $info = parent::getSmdInfo(); if (in_array($this->type, static::STD_TYPES)) { diff --git a/src/Smd/Annotation/Definition/ObjectDefinitionType.php b/src/Smd/Annotation/Definition/ObjectDefinitionType.php index 0bc3328..3c86e47 100644 --- a/src/Smd/Annotation/Definition/ObjectDefinitionType.php +++ b/src/Smd/Annotation/Definition/ObjectDefinitionType.php @@ -23,7 +23,7 @@ class ObjectDefinitionType extends AbstractDefinitionType */ public $ref; - public function getSmdInfo() { + public function getSmdInfo(): array { $info = parent::getSmdInfo(); $hasRef = !empty($this->ref); diff --git a/src/Smd/Annotation/Error.php b/src/Smd/Annotation/Error.php index 401a3ea..c0d7ca6 100644 --- a/src/Smd/Annotation/Error.php +++ b/src/Smd/Annotation/Error.php @@ -1,11 +1,9 @@ */ public $items; - - public function getSmdInfo() + + public function getSmdInfo(): array { $result = []; foreach ($this->items as $error) { diff --git a/src/Smd/Annotation/Parameter/AbstractParameterType.php b/src/Smd/Annotation/Parameter/AbstractParameterType.php index 8d59b8e..af02ad7 100644 --- a/src/Smd/Annotation/Parameter/AbstractParameterType.php +++ b/src/Smd/Annotation/Parameter/AbstractParameterType.php @@ -11,6 +11,8 @@ class AbstractParameterType extends AbstractType { + const CLASS_NAME_SUFFIX = 'ParameterType'; + /** * * @var bool @@ -22,12 +24,4 @@ class AbstractParameterType extends AbstractType * @var mixed */ public $default = null; - - /** - * - * @return string - */ - public function getTypeName() { - return parent::getTypeName('ParameterType'); - } } diff --git a/src/Smd/Annotation/Parameter/ArrayParameterType.php b/src/Smd/Annotation/Parameter/ArrayParameterType.php index e5d9bd0..2b96dfc 100644 --- a/src/Smd/Annotation/Parameter/ArrayParameterType.php +++ b/src/Smd/Annotation/Parameter/ArrayParameterType.php @@ -21,7 +21,7 @@ class ArrayParameterType extends AbstractParameterType */ public $type; - public function getSmdInfo() { + public function getSmdInfo(): array { $info = parent::getSmdInfo(); if (in_array($this->type, static::STD_TYPES)) { diff --git a/src/Smd/Annotation/Parameter/ObjectParameterType.php b/src/Smd/Annotation/Parameter/ObjectParameterType.php index 7668da1..f1f3786 100644 --- a/src/Smd/Annotation/Parameter/ObjectParameterType.php +++ b/src/Smd/Annotation/Parameter/ObjectParameterType.php @@ -18,7 +18,7 @@ class ObjectParameterType extends AbstractParameterType */ public $ref; - public function getSmdInfo() { + public function getSmdInfo(): array { $info = parent::getSmdInfo(); if (!empty($this->definitions)) { diff --git a/src/Smd/Annotation/Parameters.php b/src/Smd/Annotation/Parameters.php index 6a42319..d663f6f 100644 --- a/src/Smd/Annotation/Parameters.php +++ b/src/Smd/Annotation/Parameters.php @@ -18,12 +18,15 @@ class Parameters public $items; /** - * * @var array */ public $definitions = []; - - public function getSmdInfo() { + + /** + * @return array + */ + public function getSmdInfo(): array + { $info = []; foreach ($this->items as $item) { $info[] = $item->getSmdInfo(); diff --git a/src/Smd/Annotation/Service.php b/src/Smd/Annotation/Service.php index ba94661..c93bc6b 100644 --- a/src/Smd/Annotation/Service.php +++ b/src/Smd/Annotation/Service.php @@ -1,4 +1,5 @@ $this->description, diff --git a/src/Smd/Exception/SmdException.php b/src/Smd/Exception/SmdException.php new file mode 100644 index 0000000..eaa237a --- /dev/null +++ b/src/Smd/Exception/SmdException.php @@ -0,0 +1,37 @@ +data = $data; + } + + /** + * @return mixed + */ + public function getData() + { + return $this->data; + } +} diff --git a/src/Smd/Exception/SmdInvalidClassNameException.php b/src/Smd/Exception/SmdInvalidClassNameException.php new file mode 100644 index 0000000..dd209b6 --- /dev/null +++ b/src/Smd/Exception/SmdInvalidClassNameException.php @@ -0,0 +1,19 @@ + Date: Fri, 14 Jun 2019 11:19:44 +0300 Subject: [PATCH 06/13] Added SmdInvalidDefinition exception --- .../Definition/ArrayDefinitionType.php | 3 ++ .../Annotation/Definition/DefinitionTrait.php | 10 ++++-- .../Definition/ObjectDefinitionType.php | 33 +++++++++++-------- .../Parameter/ArrayParameterType.php | 8 +++-- .../Parameter/ObjectParameterType.php | 8 +++-- src/Smd/Exception/SmdException.php | 1 + src/Smd/Exception/SmdInvalidDefinition.php | 17 ++++++++++ 7 files changed, 60 insertions(+), 20 deletions(-) create mode 100644 src/Smd/Exception/SmdInvalidDefinition.php diff --git a/src/Smd/Annotation/Definition/ArrayDefinitionType.php b/src/Smd/Annotation/Definition/ArrayDefinitionType.php index bf7a45a..f02326f 100644 --- a/src/Smd/Annotation/Definition/ArrayDefinitionType.php +++ b/src/Smd/Annotation/Definition/ArrayDefinitionType.php @@ -20,6 +20,9 @@ class ArrayDefinitionType extends AbstractDefinitionType */ public $type; + /** + * @return array + */ public function getSmdInfo(): array { $info = parent::getSmdInfo(); diff --git a/src/Smd/Annotation/Definition/DefinitionTrait.php b/src/Smd/Annotation/Definition/DefinitionTrait.php index c932559..fe11435 100644 --- a/src/Smd/Annotation/Definition/DefinitionTrait.php +++ b/src/Smd/Annotation/Definition/DefinitionTrait.php @@ -2,14 +2,20 @@ namespace Devim\Component\RpcServer\Smd\Annotation\Definition; -trait DefinitionTrait { +/** + * Trait HasDefinitions + */ +trait HasDefinitions { /** * * @var array */ public $definitions = []; - private function getSmdDefinitions() { + /** + * @return array + */ + private function getSmdDefinitions(): array { $result = []; foreach ($this->definitions as $item) { $result[$item->name] = $item->getSmdInfo(); diff --git a/src/Smd/Annotation/Definition/ObjectDefinitionType.php b/src/Smd/Annotation/Definition/ObjectDefinitionType.php index 3c86e47..6ef3b1f 100644 --- a/src/Smd/Annotation/Definition/ObjectDefinitionType.php +++ b/src/Smd/Annotation/Definition/ObjectDefinitionType.php @@ -3,6 +3,7 @@ namespace Devim\Component\RpcServer\Smd\Annotation\Definition; use Doctrine\Common\Annotations\Annotation\Required; +use Devim\Component\RpcServer\Smd\Exception; /** * @Annotation @@ -10,41 +11,48 @@ */ class ObjectDefinitionType extends AbstractDefinitionType { - + /** - * * @var array */ public $properties; - + /** * * @var string */ public $ref; - - public function getSmdInfo(): array { + + /** + * @return array + * @throws Exception\SmdInvalidDefinition + */ + public function getSmdInfo(): array + { $info = parent::getSmdInfo(); - + $hasRef = !empty($this->ref); $hasProperties = !empty($this->properties); - + if ($hasRef && $hasProperties) { - throw new \Exception('oops 1'); + throw new Exception\SmdInvalidDefinition('Object definition may have "properties" or "ref" attributes, but not both'); } - + if ($hasRef) { $info['$ref'] = '#/definitions/' . $this->ref; } else if ($hasProperties) { $info['properties'] = $this->getSmdProperties(); } else { - throw new \Exception('oops 2'); + throw new Exception\SmdInvalidDefinition('Object definition must have either "properties" or "ref" attribute'); } - + return $info; } - private function getSmdProperties() + /** + * @return array + */ + private function getSmdProperties(): array { $result = []; foreach ($this->properties as $item) { @@ -52,5 +60,4 @@ private function getSmdProperties() } return $result; } - } diff --git a/src/Smd/Annotation/Parameter/ArrayParameterType.php b/src/Smd/Annotation/Parameter/ArrayParameterType.php index 2b96dfc..a8b33fb 100644 --- a/src/Smd/Annotation/Parameter/ArrayParameterType.php +++ b/src/Smd/Annotation/Parameter/ArrayParameterType.php @@ -2,7 +2,7 @@ namespace Devim\Component\RpcServer\Smd\Annotation\Parameter; -use Devim\Component\RpcServer\Smd\Annotation\Definition\DefinitionTrait; +use Devim\Component\RpcServer\Smd\Annotation\Definition\HasDefinitions; /** * @Annotation @@ -10,7 +10,7 @@ */ class ArrayParameterType extends AbstractParameterType { - use DefinitionTrait; + use HasDefinitions; const STD_TYPES = ['boolean', 'integer', 'number', 'object', 'string']; @@ -21,6 +21,10 @@ class ArrayParameterType extends AbstractParameterType */ public $type; + /** + * @return array + * @throws \Exception + */ public function getSmdInfo(): array { $info = parent::getSmdInfo(); diff --git a/src/Smd/Annotation/Parameter/ObjectParameterType.php b/src/Smd/Annotation/Parameter/ObjectParameterType.php index f1f3786..afb1e95 100644 --- a/src/Smd/Annotation/Parameter/ObjectParameterType.php +++ b/src/Smd/Annotation/Parameter/ObjectParameterType.php @@ -2,7 +2,7 @@ namespace Devim\Component\RpcServer\Smd\Annotation\Parameter; -use Devim\Component\RpcServer\Smd\Annotation\Definition\DefinitionTrait; +use Devim\Component\RpcServer\Smd\Annotation\Definition\HasDefinitions; /** * @Annotation @@ -10,14 +10,16 @@ */ class ObjectParameterType extends AbstractParameterType { - use DefinitionTrait; + use HasDefinitions; /** - * * @var string */ public $ref; + /** + * @return array + */ public function getSmdInfo(): array { $info = parent::getSmdInfo(); diff --git a/src/Smd/Exception/SmdException.php b/src/Smd/Exception/SmdException.php index eaa237a..1fb88e2 100644 --- a/src/Smd/Exception/SmdException.php +++ b/src/Smd/Exception/SmdException.php @@ -8,6 +8,7 @@ class SmdException extends \Exception { const INVALID_CLASS_NAME = 32500; + const INVALID_DEFINITION = 32510; /** * @var mixed diff --git a/src/Smd/Exception/SmdInvalidDefinition.php b/src/Smd/Exception/SmdInvalidDefinition.php new file mode 100644 index 0000000..1368782 --- /dev/null +++ b/src/Smd/Exception/SmdInvalidDefinition.php @@ -0,0 +1,17 @@ + Date: Fri, 14 Jun 2019 13:00:38 +0300 Subject: [PATCH 07/13] DefinitionTrait renamed to HasDefinitions --- src/Smd/Annotation/AbstractType.php | 6 ++++-- .../Definition/{DefinitionTrait.php => HasDefinitions.php} | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) rename src/Smd/Annotation/Definition/{DefinitionTrait.php => HasDefinitions.php} (89%) diff --git a/src/Smd/Annotation/AbstractType.php b/src/Smd/Annotation/AbstractType.php index 3c80bda..01183f5 100644 --- a/src/Smd/Annotation/AbstractType.php +++ b/src/Smd/Annotation/AbstractType.php @@ -33,7 +33,8 @@ abstract class AbstractType * @return string * @throws SmdInvalidClassNameException */ - public function getTypeName(): string { + public function getTypeName(): string + { $rx = '/^(.+)'.static::CLASS_NAME_SUFFIX.'$/'; $className = (new \ReflectionClass($this))->getShortName(); @@ -47,7 +48,8 @@ public function getTypeName(): string { /** * @return array */ - public function getSmdInfo(): array { + public function getSmdInfo(): array + { return [ 'type' => $this->getTypeName(), 'name' => $this->name, diff --git a/src/Smd/Annotation/Definition/DefinitionTrait.php b/src/Smd/Annotation/Definition/HasDefinitions.php similarity index 89% rename from src/Smd/Annotation/Definition/DefinitionTrait.php rename to src/Smd/Annotation/Definition/HasDefinitions.php index fe11435..bf73a20 100644 --- a/src/Smd/Annotation/Definition/DefinitionTrait.php +++ b/src/Smd/Annotation/Definition/HasDefinitions.php @@ -15,7 +15,8 @@ trait HasDefinitions { /** * @return array */ - private function getSmdDefinitions(): array { + private function getSmdDefinitions(): array + { $result = []; foreach ($this->definitions as $item) { $result[$item->name] = $item->getSmdInfo(); From 34de58adaecc3054b294e22e1efcdee168bc84ee Mon Sep 17 00:00:00 2001 From: eugene-khorev Date: Fri, 14 Jun 2019 13:34:12 +0300 Subject: [PATCH 08/13] Added SmdInvalidDefinitionRef exception --- .../Annotation/Parameter/ArrayParameterType.php | 5 +++-- .../Parameter/ObjectParameterType.php | 4 ++++ src/Smd/Exception/SmdException.php | 1 + src/Smd/Exception/SmdInvalidDefinitionRef.php | 17 +++++++++++++++++ 4 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 src/Smd/Exception/SmdInvalidDefinitionRef.php diff --git a/src/Smd/Annotation/Parameter/ArrayParameterType.php b/src/Smd/Annotation/Parameter/ArrayParameterType.php index a8b33fb..005e16b 100644 --- a/src/Smd/Annotation/Parameter/ArrayParameterType.php +++ b/src/Smd/Annotation/Parameter/ArrayParameterType.php @@ -3,6 +3,7 @@ namespace Devim\Component\RpcServer\Smd\Annotation\Parameter; use Devim\Component\RpcServer\Smd\Annotation\Definition\HasDefinitions; +use Devim\Component\RpcServer\Smd\Exception; /** * @Annotation @@ -23,7 +24,7 @@ class ArrayParameterType extends AbstractParameterType /** * @return array - * @throws \Exception + * @throws Exception\SmdInvalidDefinitionRef */ public function getSmdInfo(): array { $info = parent::getSmdInfo(); @@ -36,7 +37,7 @@ public function getSmdInfo(): array { $info['definitions'] = $this->getSmdDefinitions(); if (!isset($info['definitions'][$this->type])) { - throw new \Exception('oops'); + throw new Exception\SmdInvalidDefinitionRef($this->type); } $info['items'] = [ diff --git a/src/Smd/Annotation/Parameter/ObjectParameterType.php b/src/Smd/Annotation/Parameter/ObjectParameterType.php index afb1e95..3787fb5 100644 --- a/src/Smd/Annotation/Parameter/ObjectParameterType.php +++ b/src/Smd/Annotation/Parameter/ObjectParameterType.php @@ -3,6 +3,7 @@ namespace Devim\Component\RpcServer\Smd\Annotation\Parameter; use Devim\Component\RpcServer\Smd\Annotation\Definition\HasDefinitions; +use Devim\Component\RpcServer\Smd\Exception; /** * @Annotation @@ -28,6 +29,9 @@ public function getSmdInfo(): array { } if (!empty($this->ref)) { + if (!isset($info['definitions'][$this->ref])) { + throw new Exception\SmdInvalidDefinitionRef($this->ref); + } $info['$ref'] = '#/definitions/' . $this->ref; } diff --git a/src/Smd/Exception/SmdException.php b/src/Smd/Exception/SmdException.php index 1fb88e2..3dd16a7 100644 --- a/src/Smd/Exception/SmdException.php +++ b/src/Smd/Exception/SmdException.php @@ -9,6 +9,7 @@ class SmdException extends \Exception { const INVALID_CLASS_NAME = 32500; const INVALID_DEFINITION = 32510; + const INVALID_DEFINITION_REF = 32520; /** * @var mixed diff --git a/src/Smd/Exception/SmdInvalidDefinitionRef.php b/src/Smd/Exception/SmdInvalidDefinitionRef.php new file mode 100644 index 0000000..7ab05ad --- /dev/null +++ b/src/Smd/Exception/SmdInvalidDefinitionRef.php @@ -0,0 +1,17 @@ + Date: Fri, 14 Jun 2019 13:36:31 +0300 Subject: [PATCH 09/13] Code formatting --- src/Smd/Annotation/Definition/ArrayDefinitionType.php | 3 ++- src/Smd/Annotation/Parameter/ArrayParameterType.php | 3 ++- src/Smd/Annotation/Parameter/ObjectParameterType.php | 3 ++- src/Smd/SmdGenerator.php | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Smd/Annotation/Definition/ArrayDefinitionType.php b/src/Smd/Annotation/Definition/ArrayDefinitionType.php index f02326f..ad6f122 100644 --- a/src/Smd/Annotation/Definition/ArrayDefinitionType.php +++ b/src/Smd/Annotation/Definition/ArrayDefinitionType.php @@ -23,7 +23,8 @@ class ArrayDefinitionType extends AbstractDefinitionType /** * @return array */ - public function getSmdInfo(): array { + public function getSmdInfo(): array + { $info = parent::getSmdInfo(); if (in_array($this->type, static::STD_TYPES)) { diff --git a/src/Smd/Annotation/Parameter/ArrayParameterType.php b/src/Smd/Annotation/Parameter/ArrayParameterType.php index 005e16b..38793b5 100644 --- a/src/Smd/Annotation/Parameter/ArrayParameterType.php +++ b/src/Smd/Annotation/Parameter/ArrayParameterType.php @@ -26,7 +26,8 @@ class ArrayParameterType extends AbstractParameterType * @return array * @throws Exception\SmdInvalidDefinitionRef */ - public function getSmdInfo(): array { + public function getSmdInfo(): array + { $info = parent::getSmdInfo(); if (in_array($this->type, static::STD_TYPES)) { diff --git a/src/Smd/Annotation/Parameter/ObjectParameterType.php b/src/Smd/Annotation/Parameter/ObjectParameterType.php index 3787fb5..1c6bd6a 100644 --- a/src/Smd/Annotation/Parameter/ObjectParameterType.php +++ b/src/Smd/Annotation/Parameter/ObjectParameterType.php @@ -21,7 +21,8 @@ class ObjectParameterType extends AbstractParameterType /** * @return array */ - public function getSmdInfo(): array { + public function getSmdInfo(): array + { $info = parent::getSmdInfo(); if (!empty($this->definitions)) { diff --git a/src/Smd/SmdGenerator.php b/src/Smd/SmdGenerator.php index 765fdcd..8d6877e 100644 --- a/src/Smd/SmdGenerator.php +++ b/src/Smd/SmdGenerator.php @@ -53,9 +53,9 @@ public function __construct($target, $transport = 'POST', $envelope = 'JSON-RPC- * * @return array */ - public function run(\Generator $serviceAnnotationGenerator): array { + public function run(\Generator $serviceAnnotationGenerator): array + { $services = []; - foreach ($serviceAnnotationGenerator as $name => $annotation) { $services[$name] = $annotation->getSmdInfo(); } From 6fc41053e53202aeebef50e7b8ad1e467fe993af Mon Sep 17 00:00:00 2001 From: eugene-khorev Date: Fri, 14 Jun 2019 15:12:25 +0300 Subject: [PATCH 10/13] SmdGenerator test --- .gitignore | 4 +- tests/_bootstrap.php | 9 +- tests/_data/TestRpcService.php | 82 ++- .../_generated/AcceptanceTesterActions.php | 594 +++++++++++------- .../_generated/FunctionalTesterActions.php | 4 +- .../_support/_generated/UnitTesterActions.php | 429 ++++++++++++- tests/unit/RpcServerTest.php | 12 +- 7 files changed, 877 insertions(+), 257 deletions(-) diff --git a/.gitignore b/.gitignore index ab27d1e..1aeaaca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /.idea -/vendor \ No newline at end of file +/composer.lock +/vendor +/tests/_output/* diff --git a/tests/_bootstrap.php b/tests/_bootstrap.php index 243f9c8..5e40eeb 100755 --- a/tests/_bootstrap.php +++ b/tests/_bootstrap.php @@ -1,2 +1,9 @@ setHeader('X-Requested-With', 'Codeception'); + * $I->haveHttpHeader('X-Requested-With', 'Codeception'); * $I->amOnPage('test-headers.php'); * ?> * ``` * + * To use special chars in Header Key use HTML Character Entities: + * Example: + * Header with underscore - 'Client_Id' + * should be represented as - 'Client_Id' or 'Client_Id' + * + * ```php + * haveHttpHeader('Client_Id', 'Codeception'); + * ?> + * ``` + * * @param string $name the name of the request header * @param string $value the value to set it to for subsequent * requests @@ -179,7 +187,7 @@ public function deleteHeader($name) { * $I->amOnPage('/register'); * ``` * - * @param $page + * @param string $page * @see \Codeception\Lib\InnerBrowser::amOnPage() */ public function amOnPage($page) { @@ -209,7 +217,7 @@ public function amOnPage($page) { * // CSS button * $I->click('#form input[type=submit]'); * // XPath - * $I->click('//form/*[@type=submit]'); + * $I->click('//form/*[@type="submit"]'); * // link in context * $I->click('Logout', '#nav'); * // using strict locator @@ -236,9 +244,10 @@ public function click($link, $context = null) { * * ``` php * see('Logout'); // I can suppose user is logged in - * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page - * $I->see('Sign Up', '//body/h1'); // with XPath + * $I->see('Logout'); // I can suppose user is logged in + * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page + * $I->see('Sign Up', '//body/h1'); // with XPath + * $I->see('Sign Up', ['css' => 'body h1']); // with strict CSS locator * ``` * * Note that the search is done after stripping all HTML tags from the body, @@ -255,17 +264,17 @@ public function click($link, $context = null) { * * For checking the raw source code, use `seeInSource()`. * - * @param $text - * @param null $selector - * Conditional Assertion: Test won't be stopped on fail + * @param string $text + * @param array|string $selector optional * @see \Codeception\Lib\InnerBrowser::see() */ - public function canSee($text, $selector = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args())); + public function see($text, $selector = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('see', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the current page contains the given string (case insensitive). * * You can specify a specific HTML element (via CSS or XPath) as the second @@ -273,9 +282,10 @@ public function canSee($text, $selector = null) { * * ``` php * see('Logout'); // I can suppose user is logged in - * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page - * $I->see('Sign Up', '//body/h1'); // with XPath + * $I->see('Logout'); // I can suppose user is logged in + * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page + * $I->see('Sign Up', '//body/h1'); // with XPath + * $I->see('Sign Up', ['css' => 'body h1']); // with strict CSS locator * ``` * * Note that the search is done after stripping all HTML tags from the body, @@ -292,12 +302,12 @@ public function canSee($text, $selector = null) { * * For checking the raw source code, use `seeInSource()`. * - * @param $text - * @param null $selector + * @param string $text + * @param array|string $selector optional * @see \Codeception\Lib\InnerBrowser::see() */ - public function see($text, $selector = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('see', func_get_args())); + public function canSee($text, $selector = null) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args())); } @@ -309,9 +319,10 @@ public function see($text, $selector = null) { * * ```php * dontSee('Login'); // I can suppose user is already logged in - * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page - * $I->dontSee('Sign Up','//body/h1'); // with XPath + * $I->dontSee('Login'); // I can suppose user is already logged in + * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page + * $I->dontSee('Sign Up','//body/h1'); // with XPath + * $I->dontSee('Sign Up', ['css' => 'body h1']); // with strict CSS locator * ``` * * Note that the search is done after stripping all HTML tags from the body, @@ -328,25 +339,26 @@ public function see($text, $selector = null) { * * For checking the raw source code, use `seeInSource()`. * - * @param $text - * @param null $selector - * Conditional Assertion: Test won't be stopped on fail + * @param string $text + * @param array|string $selector optional * @see \Codeception\Lib\InnerBrowser::dontSee() */ - public function cantSee($text, $selector = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args())); + public function dontSee($text, $selector = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSee', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the current page doesn't contain the text specified (case insensitive). * Give a locator as the second parameter to match a specific region. * * ```php * dontSee('Login'); // I can suppose user is already logged in - * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page - * $I->dontSee('Sign Up','//body/h1'); // with XPath + * $I->dontSee('Login'); // I can suppose user is already logged in + * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page + * $I->dontSee('Sign Up','//body/h1'); // with XPath + * $I->dontSee('Sign Up', ['css' => 'body h1']); // with strict CSS locator * ``` * * Note that the search is done after stripping all HTML tags from the body, @@ -363,12 +375,12 @@ public function cantSee($text, $selector = null) { * * For checking the raw source code, use `seeInSource()`. * - * @param $text - * @param null $selector + * @param string $text + * @param array|string $selector optional * @see \Codeception\Lib\InnerBrowser::dontSee() */ - public function dontSee($text, $selector = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSee', func_get_args())); + public function cantSee($text, $selector = null) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args())); } @@ -384,15 +396,15 @@ public function dontSee($text, $selector = null) { * ``` * * @param $raw - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::seeInSource() */ - public function canSeeInSource($raw) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInSource', func_get_args())); + public function seeInSource($raw) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInSource', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the current page contains the given string in its * raw source code. * @@ -404,8 +416,8 @@ public function canSeeInSource($raw) { * @param $raw * @see \Codeception\Lib\InnerBrowser::seeInSource() */ - public function seeInSource($raw) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInSource', func_get_args())); + public function canSeeInSource($raw) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInSource', func_get_args())); } @@ -421,15 +433,15 @@ public function seeInSource($raw) { * ``` * * @param $raw - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::dontSeeInSource() */ - public function cantSeeInSource($raw) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInSource', func_get_args())); + public function dontSeeInSource($raw) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInSource', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the current page contains the given string in its * raw source code. * @@ -441,8 +453,8 @@ public function cantSeeInSource($raw) { * @param $raw * @see \Codeception\Lib\InnerBrowser::dontSeeInSource() */ - public function dontSeeInSource($raw) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInSource', func_get_args())); + public function cantSeeInSource($raw) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInSource', func_get_args())); } @@ -459,17 +471,17 @@ public function dontSeeInSource($raw) { * ?> * ``` * - * @param $text - * @param null $url - * Conditional Assertion: Test won't be stopped on fail + * @param string $text + * @param string $url optional * @see \Codeception\Lib\InnerBrowser::seeLink() */ - public function canSeeLink($text, $url = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args())); + public function seeLink($text, $url = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that there's a link with the specified text. * Give a full URL as the second parameter to match links with that exact URL. * @@ -480,12 +492,12 @@ public function canSeeLink($text, $url = null) { * ?> * ``` * - * @param $text - * @param null $url + * @param string $text + * @param string $url optional * @see \Codeception\Lib\InnerBrowser::seeLink() */ - public function seeLink($text, $url = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args())); + public function canSeeLink($text, $url = null) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args())); } @@ -502,17 +514,17 @@ public function seeLink($text, $url = null) { * ?> * ``` * - * @param $text - * @param null $url - * Conditional Assertion: Test won't be stopped on fail + * @param string $text + * @param string $url optional * @see \Codeception\Lib\InnerBrowser::dontSeeLink() */ - public function cantSeeLink($text, $url = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args())); + public function dontSeeLink($text, $url = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeLink', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the page doesn't contain a link with the given string. * If the second parameter is given, only links with a matching "href" attribute will be checked. * @@ -523,12 +535,12 @@ public function cantSeeLink($text, $url = null) { * ?> * ``` * - * @param $text - * @param null $url + * @param string $text + * @param string $url optional * @see \Codeception\Lib\InnerBrowser::dontSeeLink() */ - public function dontSeeLink($text, $url = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeLink', func_get_args())); + public function cantSeeLink($text, $url = null) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args())); } @@ -546,16 +558,16 @@ public function dontSeeLink($text, $url = null) { * ?> * ``` * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail + * @param string $uri * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() */ - public function canSeeInCurrentUrl($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args())); + public function seeInCurrentUrl($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that current URI contains the given string. * * ``` php @@ -567,11 +579,11 @@ public function canSeeInCurrentUrl($uri) { * ?> * ``` * - * @param $uri + * @param string $uri * @see \Codeception\Lib\InnerBrowser::seeInCurrentUrl() */ - public function seeInCurrentUrl($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args())); + public function canSeeInCurrentUrl($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args())); } @@ -586,16 +598,16 @@ public function seeInCurrentUrl($uri) { * ?> * ``` * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail + * @param string $uri * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() */ - public function cantSeeInCurrentUrl($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args())); + public function dontSeeInCurrentUrl($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInCurrentUrl', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the current URI doesn't contain the given string. * * ``` php @@ -604,11 +616,11 @@ public function cantSeeInCurrentUrl($uri) { * ?> * ``` * - * @param $uri + * @param string $uri * @see \Codeception\Lib\InnerBrowser::dontSeeInCurrentUrl() */ - public function dontSeeInCurrentUrl($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInCurrentUrl', func_get_args())); + public function cantSeeInCurrentUrl($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args())); } @@ -625,16 +637,16 @@ public function dontSeeInCurrentUrl($uri) { * ?> * ``` * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail + * @param string $uri * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() */ - public function canSeeCurrentUrlEquals($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args())); + public function seeCurrentUrlEquals($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the current URL is equal to the given string. * Unlike `seeInCurrentUrl`, this only matches the full URL. * @@ -645,11 +657,11 @@ public function canSeeCurrentUrlEquals($uri) { * ?> * ``` * - * @param $uri + * @param string $uri * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlEquals() */ - public function seeCurrentUrlEquals($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args())); + public function canSeeCurrentUrlEquals($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args())); } @@ -666,16 +678,16 @@ public function seeCurrentUrlEquals($uri) { * ?> * ``` * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail + * @param string $uri * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() */ - public function cantSeeCurrentUrlEquals($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args())); + public function dontSeeCurrentUrlEquals($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCurrentUrlEquals', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the current URL doesn't equal the given string. * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. * @@ -686,11 +698,11 @@ public function cantSeeCurrentUrlEquals($uri) { * ?> * ``` * - * @param $uri + * @param string $uri * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlEquals() */ - public function dontSeeCurrentUrlEquals($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlEquals', func_get_args())); + public function cantSeeCurrentUrlEquals($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args())); } @@ -702,34 +714,34 @@ public function dontSeeCurrentUrlEquals($uri) { * ``` php * seeCurrentUrlMatches('~$/users/(\d+)~'); + * $I->seeCurrentUrlMatches('~^/users/(\d+)~'); * ?> * ``` * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail + * @param string $uri * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() */ - public function canSeeCurrentUrlMatches($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args())); + public function seeCurrentUrlMatches($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the current URL matches the given regular expression. * * ``` php * seeCurrentUrlMatches('~$/users/(\d+)~'); + * $I->seeCurrentUrlMatches('~^/users/(\d+)~'); * ?> * ``` * - * @param $uri + * @param string $uri * @see \Codeception\Lib\InnerBrowser::seeCurrentUrlMatches() */ - public function seeCurrentUrlMatches($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args())); + public function canSeeCurrentUrlMatches($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args())); } @@ -741,51 +753,51 @@ public function seeCurrentUrlMatches($uri) { * ``` php * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); + * $I->dontSeeCurrentUrlMatches('~^/users/(\d+)~'); * ?> * ``` * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail + * @param string $uri * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() */ - public function cantSeeCurrentUrlMatches($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args())); + public function dontSeeCurrentUrlMatches($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCurrentUrlMatches', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that current url doesn't match the given regular expression. * * ``` php * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); + * $I->dontSeeCurrentUrlMatches('~^/users/(\d+)~'); * ?> * ``` * - * @param $uri + * @param string $uri * @see \Codeception\Lib\InnerBrowser::dontSeeCurrentUrlMatches() */ - public function dontSeeCurrentUrlMatches($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlMatches', func_get_args())); + public function cantSeeCurrentUrlMatches($uri) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * - * Executes the given regular expression against the current URI and returns the first match. + * Executes the given regular expression against the current URI and returns the first capturing group. * If no parameters are provided, the full URI is returned. * * ``` php * grabFromCurrentUrl('~$/user/(\d+)/~'); + * $user_id = $I->grabFromCurrentUrl('~^/user/(\d+)/~'); * $uri = $I->grabFromCurrentUrl(); * ?> * ``` * - * @param null $uri + * @param string $uri optional * * @return mixed * @see \Codeception\Lib\InnerBrowser::grabFromCurrentUrl() @@ -809,15 +821,15 @@ public function grabFromCurrentUrl($uri = null) { * ``` * * @param $checkbox - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() */ - public function canSeeCheckboxIsChecked($checkbox) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args())); + public function seeCheckboxIsChecked($checkbox) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the specified checkbox is checked. * * ``` php @@ -831,8 +843,8 @@ public function canSeeCheckboxIsChecked($checkbox) { * @param $checkbox * @see \Codeception\Lib\InnerBrowser::seeCheckboxIsChecked() */ - public function seeCheckboxIsChecked($checkbox) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args())); + public function canSeeCheckboxIsChecked($checkbox) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args())); } @@ -849,15 +861,15 @@ public function seeCheckboxIsChecked($checkbox) { * ``` * * @param $checkbox - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() */ - public function cantSeeCheckboxIsChecked($checkbox) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args())); + public function dontSeeCheckboxIsChecked($checkbox) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCheckboxIsChecked', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Check that the specified checkbox is unchecked. * * ``` php @@ -870,16 +882,16 @@ public function cantSeeCheckboxIsChecked($checkbox) { * @param $checkbox * @see \Codeception\Lib\InnerBrowser::dontSeeCheckboxIsChecked() */ - public function dontSeeCheckboxIsChecked($checkbox) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCheckboxIsChecked', func_get_args())); + public function cantSeeCheckboxIsChecked($checkbox) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * - * Checks that the given input field or textarea contains the given value. - * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. + * Checks that the given input field or textarea *equals* (i.e. not just contains) the given value. + * Fields are matched by label text, the "name" attribute, CSS, or XPath. * * ``` php * getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args())); + public function seeInField($field, $value) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * - * Checks that the given input field or textarea contains the given value. - * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the given input field or textarea *equals* (i.e. not just contains) the given value. + * Fields are matched by label text, the "name" attribute, CSS, or XPath. * * ``` php * getScenario()->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args())); + public function canSeeInField($field, $value) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args())); } @@ -945,15 +957,15 @@ public function seeInField($field, $value) { * * @param $field * @param $value - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::dontSeeInField() */ - public function cantSeeInField($field, $value) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args())); + public function dontSeeInField($field, $value) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInField', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that an input field or textarea doesn't contain the given value. * For fuzzy locators, the field is matched by label text, CSS and XPath. * @@ -972,8 +984,8 @@ public function cantSeeInField($field, $value) { * @param $value * @see \Codeception\Lib\InnerBrowser::dontSeeInField() */ - public function dontSeeInField($field, $value) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInField', func_get_args())); + public function cantSeeInField($field, $value) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args())); } @@ -1039,15 +1051,15 @@ public function dontSeeInField($field, $value) { * * @param $formSelector * @param $params - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::seeInFormFields() */ - public function canSeeInFormFields($formSelector, $params) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args())); + public function seeInFormFields($formSelector, $params) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks if the array of form parameters (name => value) are set on the form matched with the * passed selector. * @@ -1109,8 +1121,8 @@ public function canSeeInFormFields($formSelector, $params) { * @param $params * @see \Codeception\Lib\InnerBrowser::seeInFormFields() */ - public function seeInFormFields($formSelector, $params) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args())); + public function canSeeInFormFields($formSelector, $params) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args())); } @@ -1156,15 +1168,15 @@ public function seeInFormFields($formSelector, $params) { * * @param $formSelector * @param $params - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() */ - public function cantSeeInFormFields($formSelector, $params) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args())); + public function dontSeeInFormFields($formSelector, $params) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInFormFields', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks if the array of form parameters (name => value) are not set on the form matched with * the passed selector. * @@ -1206,15 +1218,15 @@ public function cantSeeInFormFields($formSelector, $params) { * @param $params * @see \Codeception\Lib\InnerBrowser::dontSeeInFormFields() */ - public function dontSeeInFormFields($formSelector, $params) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInFormFields', func_get_args())); + public function cantSeeInFormFields($formSelector, $params) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * - * Submits the given form on the page, optionally with the given form + * Submits the given form on the page, with the given form * values. Pass the form field's values as an array in the second * parameter. * @@ -1439,7 +1451,7 @@ public function fillField($field, $value) { * $I->selectOption('Which OS do you use?', array('text' => 'Windows')); // Only search by text 'Windows' * $I->selectOption('Which OS do you use?', array('value' => 'windows')); // Only search by value 'windows' * ?> - + ``` + * ``` * * @param $select * @param $option @@ -1491,7 +1503,7 @@ public function uncheckOption($option) { /** * [!] Method is generated. Documentation taken from corresponding module. * - * Attaches a file relative to the Codeception data directory to the given file upload field. + * Attaches a file relative to the Codeception `_data` directory to the given file upload field. * * ``` php * makePageSnapshot('edit_page'); + * // saved to: tests/_output/debug/edit_page.html + * $I->makePageSnapshot(); + * // saved to: tests/_output/debug/2017-05-26_14-24-11_4b3403665fea6.html + * ``` + * + * @param null $name + * @see \Codeception\Lib\InnerBrowser::makeHtmlSnapshot() + */ + public function makeHtmlSnapshot($name = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('makeHtmlSnapshot', func_get_args())); + } + + /** * [!] Method is generated. Documentation taken from corresponding module. * @@ -1715,6 +1749,21 @@ public function grabCookie($cookie, $params = null) { } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Grabs current page source code. + * + * @throws ModuleException if no page was opened. + * + * @return string Current page source code. + * @see \Codeception\Lib\InnerBrowser::grabPageSource() + */ + public function grabPageSource() { + return $this->getScenario()->runStep(new \Codeception\Step\Action('grabPageSource', func_get_args())); + } + + /** * [!] Method is generated. Documentation taken from corresponding module. * @@ -1730,15 +1779,15 @@ public function grabCookie($cookie, $params = null) { * @param $cookie * @param array $params * @return mixed - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::seeCookie() */ - public function canSeeCookie($cookie, $params = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args())); + public function seeCookie($cookie, $params = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that a cookie with the given name is set. * You can set additional cookie params like `domain`, `path` as array passed in last argument. * @@ -1753,8 +1802,8 @@ public function canSeeCookie($cookie, $params = null) { * @return mixed * @see \Codeception\Lib\InnerBrowser::seeCookie() */ - public function seeCookie($cookie, $params = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args())); + public function canSeeCookie($cookie, $params = null) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args())); } @@ -1768,15 +1817,15 @@ public function seeCookie($cookie, $params = null) { * * @param array $params * @return mixed - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() */ - public function cantSeeCookie($cookie, $params = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args())); + public function dontSeeCookie($cookie, $params = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeCookie', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that there isn't a cookie with the given name. * You can set additional cookie params like `domain`, `path` as array passed in last argument. * @@ -1786,8 +1835,8 @@ public function cantSeeCookie($cookie, $params = null) { * @return mixed * @see \Codeception\Lib\InnerBrowser::dontSeeCookie() */ - public function dontSeeCookie($cookie, $params = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCookie', func_get_args())); + public function cantSeeCookie($cookie, $params = null) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args())); } @@ -1829,15 +1878,15 @@ public function resetCookie($name, $params = null) { * @param $selector * @param array $attributes * @return - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::seeElement() */ - public function canSeeElement($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args())); + public function seeElement($selector, $attributes = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the given element exists on the page and is visible. * You can also specify expected attributes of this element. * @@ -1858,8 +1907,8 @@ public function canSeeElement($selector, $attributes = null) { * @return * @see \Codeception\Lib\InnerBrowser::seeElement() */ - public function seeElement($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args())); + public function canSeeElement($selector, $attributes = null) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args())); } @@ -1880,15 +1929,15 @@ public function seeElement($selector, $attributes = null) { * * @param $selector * @param array $attributes - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::dontSeeElement() */ - public function cantSeeElement($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args())); + public function dontSeeElement($selector, $attributes = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeElement', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the given element is invisible or not present on the page. * You can also specify expected attributes of this element. * @@ -1905,8 +1954,8 @@ public function cantSeeElement($selector, $attributes = null) { * @param array $attributes * @see \Codeception\Lib\InnerBrowser::dontSeeElement() */ - public function dontSeeElement($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeElement', func_get_args())); + public function cantSeeElement($selector, $attributes = null) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args())); } @@ -1918,38 +1967,34 @@ public function dontSeeElement($selector, $attributes = null) { * ``` php * seeNumberOfElements('tr', 10); - * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements + * $I->seeNumberOfElements('tr', [0,10]); // between 0 and 10 elements * ?> * ``` * @param $selector - * @param mixed $expected : - * - string: strict number - * - array: range of numbers [0,10] - * Conditional Assertion: Test won't be stopped on fail + * @param mixed $expected int or int[] * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() */ - public function canSeeNumberOfElements($selector, $expected) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args())); + public function seeNumberOfElements($selector, $expected) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that there are a certain number of elements matched by the given locator on the page. * * ``` php * seeNumberOfElements('tr', 10); - * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements + * $I->seeNumberOfElements('tr', [0,10]); // between 0 and 10 elements * ?> * ``` * @param $selector - * @param mixed $expected : - * - string: strict number - * - array: range of numbers [0,10] + * @param mixed $expected int or int[] * @see \Codeception\Lib\InnerBrowser::seeNumberOfElements() */ - public function seeNumberOfElements($selector, $expected) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args())); + public function canSeeNumberOfElements($selector, $expected) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args())); } @@ -1968,15 +2013,15 @@ public function seeNumberOfElements($selector, $expected) { * @param $optionText * * @return mixed - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() */ - public function canSeeOptionIsSelected($selector, $optionText) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args())); + public function seeOptionIsSelected($selector, $optionText) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the given option is selected. * * ``` php @@ -1991,8 +2036,8 @@ public function canSeeOptionIsSelected($selector, $optionText) { * @return mixed * @see \Codeception\Lib\InnerBrowser::seeOptionIsSelected() */ - public function seeOptionIsSelected($selector, $optionText) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args())); + public function canSeeOptionIsSelected($selector, $optionText) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args())); } @@ -2011,15 +2056,15 @@ public function seeOptionIsSelected($selector, $optionText) { * @param $optionText * * @return mixed - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() */ - public function cantSeeOptionIsSelected($selector, $optionText) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args())); + public function dontSeeOptionIsSelected($selector, $optionText) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeOptionIsSelected', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the given option is not selected. * * ``` php @@ -2034,8 +2079,8 @@ public function cantSeeOptionIsSelected($selector, $optionText) { * @return mixed * @see \Codeception\Lib\InnerBrowser::dontSeeOptionIsSelected() */ - public function dontSeeOptionIsSelected($selector, $optionText) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeOptionIsSelected', func_get_args())); + public function cantSeeOptionIsSelected($selector, $optionText) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args())); } @@ -2043,20 +2088,20 @@ public function dontSeeOptionIsSelected($selector, $optionText) { * [!] Method is generated. Documentation taken from corresponding module. * * Asserts that current page has 404 response status code. - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::seePageNotFound() */ - public function canSeePageNotFound() { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seePageNotFound', func_get_args())); + public function seePageNotFound() { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seePageNotFound', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Asserts that current page has 404 response status code. * @see \Codeception\Lib\InnerBrowser::seePageNotFound() */ - public function seePageNotFound() { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seePageNotFound', func_get_args())); + public function canSeePageNotFound() { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seePageNotFound', func_get_args())); } @@ -2074,15 +2119,15 @@ public function seePageNotFound() { * ``` * * @param $code - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() */ - public function canSeeResponseCodeIs($code) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIs', func_get_args())); + public function seeResponseCodeIs($code) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIs', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that response code is equal to value provided. * * ```php @@ -2096,8 +2141,35 @@ public function canSeeResponseCodeIs($code) { * @param $code * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIs() */ - public function seeResponseCodeIs($code) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIs', func_get_args())); + public function canSeeResponseCodeIs($code) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIs', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that response code is between a certain range. Between actually means [from <= CODE <= to] + * + * @param $from + * @param $to + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsBetween() + */ + public function seeResponseCodeIsBetween($from, $to) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIsBetween', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that response code is between a certain range. Between actually means [from <= CODE <= to] + * + * @param $from + * @param $to + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsBetween() + */ + public function canSeeResponseCodeIsBetween($from, $to) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIsBetween', func_get_args())); } @@ -2114,15 +2186,15 @@ public function seeResponseCodeIs($code) { * $I->dontSeeResponseCodeIs(\Codeception\Util\HttpCode::OK); * ``` * @param $code - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::dontSeeResponseCodeIs() */ - public function cantSeeResponseCodeIs($code) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeResponseCodeIs', func_get_args())); + public function dontSeeResponseCodeIs($code) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeResponseCodeIs', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that response code is equal to value provided. * * ```php @@ -2135,8 +2207,92 @@ public function cantSeeResponseCodeIs($code) { * @param $code * @see \Codeception\Lib\InnerBrowser::dontSeeResponseCodeIs() */ - public function dontSeeResponseCodeIs($code) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeResponseCodeIs', func_get_args())); + public function cantSeeResponseCodeIs($code) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeResponseCodeIs', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the response code 2xx + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsSuccessful() + */ + public function seeResponseCodeIsSuccessful() { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIsSuccessful', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the response code 2xx + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsSuccessful() + */ + public function canSeeResponseCodeIsSuccessful() { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIsSuccessful', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the response code 3xx + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsRedirection() + */ + public function seeResponseCodeIsRedirection() { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIsRedirection', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the response code 3xx + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsRedirection() + */ + public function canSeeResponseCodeIsRedirection() { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIsRedirection', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the response code is 4xx + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsClientError() + */ + public function seeResponseCodeIsClientError() { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIsClientError', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the response code is 4xx + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsClientError() + */ + public function canSeeResponseCodeIsClientError() { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIsClientError', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the response code is 5xx + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsServerError() + */ + public function seeResponseCodeIsServerError() { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeResponseCodeIsServerError', func_get_args())); + } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * [!] Conditional Assertion: Test won't be stopped on fail + * Checks that the response code is 5xx + * @see \Codeception\Lib\InnerBrowser::seeResponseCodeIsServerError() + */ + public function canSeeResponseCodeIsServerError() { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeResponseCodeIsServerError', func_get_args())); } @@ -2154,15 +2310,15 @@ public function dontSeeResponseCodeIs($code) { * @param $title * * @return mixed - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::seeInTitle() */ - public function canSeeInTitle($title) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args())); + public function seeInTitle($title) { + return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the page title contains the given string. * * ``` php @@ -2176,8 +2332,8 @@ public function canSeeInTitle($title) { * @return mixed * @see \Codeception\Lib\InnerBrowser::seeInTitle() */ - public function seeInTitle($title) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args())); + public function canSeeInTitle($title) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args())); } @@ -2189,15 +2345,15 @@ public function seeInTitle($title) { * @param $title * * @return mixed - * Conditional Assertion: Test won't be stopped on fail * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() */ - public function cantSeeInTitle($title) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args())); + public function dontSeeInTitle($title) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('dontSeeInTitle', func_get_args())); } /** * [!] Method is generated. Documentation taken from corresponding module. * + * [!] Conditional Assertion: Test won't be stopped on fail * Checks that the page title does not contain the given string. * * @param $title @@ -2205,8 +2361,8 @@ public function cantSeeInTitle($title) { * @return mixed * @see \Codeception\Lib\InnerBrowser::dontSeeInTitle() */ - public function dontSeeInTitle($title) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInTitle', func_get_args())); + public function cantSeeInTitle($title) { + return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args())); } diff --git a/tests/_support/_generated/FunctionalTesterActions.php b/tests/_support/_generated/FunctionalTesterActions.php index 7e02457..9aa9e76 100755 --- a/tests/_support/_generated/FunctionalTesterActions.php +++ b/tests/_support/_generated/FunctionalTesterActions.php @@ -1,12 +1,10 @@ -expectException(MyException::class, function() { + * $this->doSomethingBad(); + * }); + * + * $I->expectException(new MyException(), function() { + * $this->doSomethingBad(); + * }); + * ``` + * If you want to check message or exception code, you can pass them with exception instance: + * ```php + * expectException(new MyException("Don't do bad things"), function() { + * $this->doSomethingBad(); + * }); + * ``` + * + * @param $exception string or \Exception + * @param $callback + * @see \Codeception\Module\Asserts::expectException() + */ + public function expectException($exception, $callback) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('expectException', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Handles and checks throwables (Exceptions/Errors) called inside the callback function. + * Either throwable class name or throwable instance should be provided. + * + * ```php + * expectThrowable(MyThrowable::class, function() { + * $this->doSomethingBad(); + * }); + * + * $I->expectThrowable(new MyException(), function() { + * $this->doSomethingBad(); + * }); + * ``` + * If you want to check message or throwable code, you can pass them with throwable instance: + * ```php + * expectThrowable(new MyError("Don't do bad things"), function() { + * $this->doSomethingBad(); + * }); + * ``` + * + * @param $throwable string or \Throwable + * @param $callback + * @see \Codeception\Module\Asserts::expectThrowable() + */ + public function expectThrowable($throwable, $callback) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('expectThrowable', func_get_args())); + } + + /** * [!] Method is generated. Documentation taken from corresponding module. * @@ -24,9 +89,10 @@ abstract protected function getScenario(); * @param $expected * @param $actual * @param string $message + * @param float $delta * @see \Codeception\Module\Asserts::assertEquals() */ - public function assertEquals($expected, $actual, $message = null) { + public function assertEquals($expected, $actual, $message = null, $delta = null) { return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEquals', func_get_args())); } @@ -39,9 +105,10 @@ public function assertEquals($expected, $actual, $message = null) { * @param $expected * @param $actual * @param string $message + * @param float $delta * @see \Codeception\Module\Asserts::assertNotEquals() */ - public function assertNotEquals($expected, $actual, $message = null) { + public function assertNotEquals($expected, $actual, $message = null, $delta = null) { return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEquals', func_get_args())); } @@ -54,7 +121,6 @@ public function assertNotEquals($expected, $actual, $message = null) { * @param $expected * @param $actual * @param string $message - * @return mixed|void * @see \Codeception\Module\Asserts::assertSame() */ public function assertSame($expected, $actual, $message = null) { @@ -197,6 +263,36 @@ public function assertNotRegExp($pattern, $string, $message = null) { } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that a string starts with the given prefix. + * + * @param string $prefix + * @param string $string + * @param string $message + * @see \Codeception\Module\Asserts::assertStringStartsWith() + */ + public function assertStringStartsWith($prefix, $string, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringStartsWith', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that a string doesn't start with the given prefix. + * + * @param string $prefix + * @param string $string + * @param string $message + * @see \Codeception\Module\Asserts::assertStringStartsNotWith() + */ + public function assertStringStartsNotWith($prefix, $string, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringStartsNotWith', func_get_args())); + } + + /** * [!] Method is generated. Documentation taken from corresponding module. * @@ -267,6 +363,20 @@ public function assertTrue($condition, $message = null) { } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the condition is NOT true (everything but true) + * + * @param $condition + * @param string $message + * @see \Codeception\Module\Asserts::assertNotTrue() + */ + public function assertNotTrue($condition, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotTrue', func_get_args())); + } + + /** * [!] Method is generated. Documentation taken from corresponding module. * @@ -281,6 +391,20 @@ public function assertFalse($condition, $message = null) { } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * Checks that the condition is NOT false (everything but false) + * + * @param $condition + * @param string $message + * @see \Codeception\Module\Asserts::assertNotFalse() + */ + public function assertNotFalse($condition, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotFalse', func_get_args())); + } + + /** * [!] Method is generated. Documentation taken from corresponding module. * @@ -373,6 +497,19 @@ public function assertArrayNotHasKey($key, $actual, $description = null) { } + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * @param $expectedCount + * @param $actual + * @param $description + * @see \Codeception\Module\Asserts::assertCount() + */ + public function assertCount($expectedCount, $actual, $description = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertCount', func_get_args())); + } + + /** * [!] Method is generated. Documentation taken from corresponding module. * @@ -428,33 +565,263 @@ public function fail($message) { /** * [!] Method is generated. Documentation taken from corresponding module. * - * Handles and checks exception called inside callback function. - * Either exception class name or exception instance should be provided. * - * ```php - * expectException(MyException::class, function() { - * $this->doSomethingBad(); - * }); + * @see \Codeception\Module\Asserts::assertStringContainsString() + */ + public function assertStringContainsString($needle, $haystack, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringContainsString', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. * - * $I->expectException(new MyException(), function() { - * $this->doSomethingBad(); - * }); - * ``` - * If you want to check message or exception code, you can pass them with exception instance: - * ```php - * expectException(new MyException("Don't do bad things"), function() { - * $this->doSomethingBad(); - * }); - * ``` * - * @param $exception string or \Exception - * @param $callback - * @see \Codeception\Module\Asserts::expectException() + * @see \Codeception\Module\Asserts::assertStringNotContainsString() */ - public function expectException($exception, $callback) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('expectException', func_get_args())); + public function assertStringNotContainsString($needle, $haystack, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotContainsString', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertStringContainsStringIgnoringCase() + */ + public function assertStringContainsStringIgnoringCase($needle, $haystack, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringContainsStringIgnoringCase', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertStringNotContainsStringIgnoringCase() + */ + public function assertStringNotContainsStringIgnoringCase($needle, $haystack, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotContainsStringIgnoringCase', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsArray() + */ + public function assertIsArray($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsArray', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsBool() + */ + public function assertIsBool($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsBool', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsFloat() + */ + public function assertIsFloat($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsFloat', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsInt() + */ + public function assertIsInt($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsInt', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsNumeric() + */ + public function assertIsNumeric($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNumeric', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsObject() + */ + public function assertIsObject($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsObject', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsResource() + */ + public function assertIsResource($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsResource', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsString() + */ + public function assertIsString($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsString', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsScalar() + */ + public function assertIsScalar($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsScalar', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsCallable() + */ + public function assertIsCallable($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsCallable', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsNotArray() + */ + public function assertIsNotArray($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotArray', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsNotBool() + */ + public function assertIsNotBool($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotBool', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsNotFloat() + */ + public function assertIsNotFloat($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotFloat', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsNotInt() + */ + public function assertIsNotInt($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotInt', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsNotNumeric() + */ + public function assertIsNotNumeric($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotNumeric', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsNotObject() + */ + public function assertIsNotObject($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotObject', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsNotResource() + */ + public function assertIsNotResource($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotResource', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsNotString() + */ + public function assertIsNotString($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotString', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsNotScalar() + */ + public function assertIsNotScalar($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotScalar', func_get_args())); + } + + + /** + * [!] Method is generated. Documentation taken from corresponding module. + * + * + * @see \Codeception\Module\Asserts::assertIsNotCallable() + */ + public function assertIsNotCallable($actual, $message = null) { + return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotCallable', func_get_args())); } } diff --git a/tests/unit/RpcServerTest.php b/tests/unit/RpcServerTest.php index 6112d72..cda063a 100755 --- a/tests/unit/RpcServerTest.php +++ b/tests/unit/RpcServerTest.php @@ -1,6 +1,8 @@ null], [], [], [], [], [], []), + new JsonResponse(json_decode('{"transport":"POST","envelope":"JSON-RPC-2.0","contentType":"application\/json","SMDVersion":"2.0","target":"\/","services":{"test.method":{"description":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430","parameters":[{"type":"array","name":"array_prop","description":"Array property","items":{"type":"boolean"}},{"type":"array","name":"typed_array_prop","description":"Typed array property","definitions":{"some_type":{"type":"object","name":"some_type","description":"Some type description","properties":{"prop1":{"type":"string","name":"prop1","description":"Property 1"},"prop2":{"type":"string","name":"prop2","description":"Property 2"}}},"some_another_type":{"type":"object","name":"some_another_type","description":"Some another type description","properties":{"array_prop":{"type":"array","name":"array_prop","description":"Array property","items":{"type":"object"}},"boolean_prop":{"type":"boolean","name":"boolean_prop","description":"Boolean property"},"integer_prop":{"type":"integer","name":"integer_prop","description":"Integer property"},"number_prop":{"type":"number","name":"number_prop","description":"Number property"},"some_type_filed":{"type":"object","name":"some_type_filed","description":"Some type description","$ref":"#\/definitions\/some_type"},"string_prop":{"type":"string","name":"string_prop","description":"String property"}}}},"items":{"$ref":"#\/definitions\/some_another_type"}},{"type":"boolean","name":"boolean_prop","description":"Boolean property"},{"type":"integer","name":"integer_prop","description":"Integer property"},{"type":"number","name":"number_prop","description":"Number property"},{"type":"object","name":"some_type_filed","description":"Some type description","definitions":{"some_type":{"type":"object","name":"some_type","description":"Some type description","properties":{"prop1":{"type":"string","name":"prop1","description":"Property 1"},"prop2":{"type":"string","name":"prop2","description":"Property 2"}}}},"$ref":"#\/definitions\/some_type"},{"type":"string","name":"string_prop","description":"String property"}],"returns":{"type":"object","name":"data","description":"Test object return parameter","definitions":{"some_type":{"type":"object","name":"some_type","description":"Some type description","properties":{"prop1":{"type":"string","name":"prop1","description":"Property 1"},"prop2":{"type":"string","name":"prop2","description":"Property 2"}}},"some_another_type":{"type":"object","name":"some_another_type","description":"Some another type description","properties":{"array_prop":{"type":"array","name":"array_prop","description":"Array property","items":{"$ref":"#\/definitions\/some_another_type"}},"boolean_prop":{"type":"boolean","name":"boolean_prop","description":"Boolean property"},"integer_prop":{"type":"integer","name":"integer_prop","description":"Integer property"},"number_prop":{"type":"number","name":"number_prop","description":"Number property"},"some_type_filed":{"type":"object","name":"some_type_filed","description":"Some type description","$ref":"#\/definitions\/some_type"},"string_prop":{"type":"string","name":"string_prop","description":"String property"}}}},"$ref":"#\/definitions\/some_type"},"errors":{"123":"Error 123","321":"Error 321"}}}}')), + ]; + return $specTests; } @@ -108,7 +115,10 @@ public function specDataProvider() */ public function testRunSpec($request, $response) { - $rpcServer = new RpcServer(); + $rpcServer = new RpcServer( + new Doctrine\Common\Annotations\AnnotationReader, + new SmdGenerator('/') + ); $rpcServer->addService(TestRpcService::class, function () { return []; }); From b3446edd654b33062ad3aa20753472b39f23d2d0 Mon Sep 17 00:00:00 2001 From: eugene-khorev Date: Fri, 14 Jun 2019 16:12:28 +0300 Subject: [PATCH 11/13] composer.lock removed from .gitignore --- .gitignore | 1 - composer.lock | 4027 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 4027 insertions(+), 1 deletion(-) create mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index 1aeaaca..b6e3eee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ /.idea -/composer.lock /vendor /tests/_output/* diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..35633bc --- /dev/null +++ b/composer.lock @@ -0,0 +1,4027 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "ff05925301ccf2c9c959dcfc58b8e9c6", + "packages": [ + { + "name": "doctrine/annotations", + "version": "v1.6.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/53120e0eb10355388d6ccbe462f1fea34ddadb24", + "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.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": "2019-03-25T19:12:02+00:00" + }, + { + "name": "doctrine/cache", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57", + "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57", + "shasum": "" + }, + "require": { + "php": "~7.1" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/coding-standard": "^4.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "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": "Caching library offering an object-oriented API for many cache backends", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2018-08-21T18:01:43+00:00" + }, + { + "name": "doctrine/collections", + "version": "v1.6.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "c5e0bc17b1620e97c968ac409acbff28b8b850be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/c5e0bc17b1620e97c968ac409acbff28b8b850be", + "reference": "c5e0bc17b1620e97c968ac409acbff28b8b850be", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan-shim": "^0.9.2", + "phpunit/phpunit": "^7.0", + "vimeo/psalm": "^3.2.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + } + }, + "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": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", + "homepage": "https://www.doctrine-project.org/projects/collections.html", + "keywords": [ + "array", + "collections", + "iterators", + "php" + ], + "time": "2019-06-09T13:48:14+00:00" + }, + { + "name": "doctrine/common", + "version": "v2.8.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/f68c297ce6455e8fd794aa8ffaf9fa458f6ade66", + "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "doctrine/cache": "1.*", + "doctrine/collections": "1.*", + "doctrine/inflector": "1.*", + "doctrine/lexer": "1.*", + "php": "~7.1" + }, + "require-dev": { + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "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": "Common Library for Doctrine projects", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "collections", + "eventmanager", + "persistence", + "spl" + ], + "time": "2017-08-31T08:43:38+00:00" + }, + { + "name": "doctrine/dbal", + "version": "v2.6.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "e3eed9b1facbb0ced3a0995244843a189e7d1b13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/e3eed9b1facbb0ced3a0995244843a189e7d1b13", + "reference": "e3eed9b1facbb0ced3a0995244843a189e7d1b13", + "shasum": "" + }, + "require": { + "doctrine/common": "^2.7.1", + "ext-pdo": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^5.4.6", + "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", + "symfony/console": "2.*||^3.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\DBAL\\": "lib/" + } + }, + "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" + } + ], + "description": "Database Abstraction Layer", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "persistence", + "queryobject" + ], + "time": "2017-11-19T13:38:54+00:00" + }, + { + "name": "doctrine/inflector", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + } + }, + "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": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ], + "time": "2018-01-09T20:05:19+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "a2c590166b2133a4633738648b6b064edae0814a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", + "reference": "a2c590166b2133a4633738648b6b064edae0814a", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2019-03-17T17:37:11+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", + "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "^4.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "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": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "time": "2019-06-08T11:03:04+00:00" + }, + { + "name": "doctrine/orm", + "version": "v2.5.14", + "source": { + "type": "git", + "url": "https://github.com/doctrine/orm.git", + "reference": "810a7baf81462a5ddf10e8baa8cb94b6eec02754" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/orm/zipball/810a7baf81462a5ddf10e8baa8cb94b6eec02754", + "reference": "810a7baf81462a5ddf10e8baa8cb94b6eec02754", + "shasum": "" + }, + "require": { + "doctrine/cache": "~1.4", + "doctrine/collections": "~1.2", + "doctrine/common": ">=2.5-dev,<2.9-dev", + "doctrine/dbal": ">=2.5-dev,<2.7-dev", + "doctrine/instantiator": "^1.0.1", + "ext-pdo": "*", + "php": ">=5.4", + "symfony/console": "~2.5|~3.0|~4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0", + "symfony/yaml": "~2.3|~3.0|~4.0" + }, + "suggest": { + "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + }, + "bin": [ + "bin/doctrine", + "bin/doctrine.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\ORM\\": "lib/" + } + }, + "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" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "orm" + ], + "time": "2017-12-17T02:57:51+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.99", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "shasum": "" + }, + "require": { + "php": "^7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "time": "2018-07-02T15:55:56+00:00" + }, + { + "name": "symfony/console", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/d50bbeeb0e17e6dd4124ea391eff235e932cbf64", + "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "^4.3", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", + "symfony/var-dumper": "^4.3" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "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 Console Component", + "homepage": "https://symfony.com", + "time": "2019-06-05T13:25:51+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v3.4.28", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "677ae5e892b081e71a665bfa7dd90fe61800c00e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/677ae5e892b081e71a665bfa7dd90fe61800c00e", + "reference": "677ae5e892b081e71a665bfa7dd90fe61800c00e", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php70": "~1.6" + }, + "require-dev": { + "symfony/expression-language": "~2.8|~3.0|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "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 HttpFoundation Component", + "homepage": "https://symfony.com", + "time": "2019-05-27T05:50:24+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-php70", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "bc4858fb611bda58719124ca079baff854149c89" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/bc4858fb611bda58719124ca079baff854149c89", + "reference": "bc4858fb611bda58719124ca079baff854149c89", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0|~9.99", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", + "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v1.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/191afdcb5804db960d26d8566b7e9a2843cab3a0", + "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "suggest": { + "psr/container": "", + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-05-28T07:50:59+00:00" + } + ], + "packages-dev": [ + { + "name": "behat/gherkin", + "version": "v4.6.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Gherkin.git", + "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/ab0a02ea14893860bca00f225f5621d351a3ad07", + "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07", + "shasum": "" + }, + "require": { + "php": ">=5.3.1" + }, + "require-dev": { + "phpunit/phpunit": "~4.5|~5", + "symfony/phpunit-bridge": "~2.7|~3|~4", + "symfony/yaml": "~2.3|~3|~4" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" + ], + "time": "2019-01-16T14:22:17+00:00" + }, + { + "name": "codeception/codeception", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Codeception.git", + "reference": "52dfbb5f31b74d042100a8836bbde792326ebb64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/52dfbb5f31b74d042100a8836bbde792326ebb64", + "reference": "52dfbb5f31b74d042100a8836bbde792326ebb64", + "shasum": "" + }, + "require": { + "behat/gherkin": "^4.4.0", + "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3", + "codeception/stub": "^2.0", + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "facebook/webdriver": "^1.6.0", + "guzzlehttp/guzzle": "^6.3.0", + "guzzlehttp/psr7": "~1.4", + "hoa/console": "~3.0", + "php": ">=5.6.0 <8.0", + "symfony/browser-kit": ">=2.7 <5.0", + "symfony/console": ">=2.7 <5.0", + "symfony/css-selector": ">=2.7 <5.0", + "symfony/dom-crawler": ">=2.7 <5.0", + "symfony/event-dispatcher": ">=2.7 <5.0", + "symfony/finder": ">=2.7 <5.0", + "symfony/yaml": ">=2.7 <5.0" + }, + "require-dev": { + "codeception/specify": "~0.3", + "flow/jsonpath": "~0.2", + "monolog/monolog": "~1.8", + "pda/pheanstalk": "~3.0", + "php-amqplib/php-amqplib": "~2.4", + "predis/predis": "^1.0", + "squizlabs/php_codesniffer": "~2.0", + "symfony/process": ">=2.7 <5.0", + "vlucas/phpdotenv": "^3.0" + }, + "suggest": { + "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module", + "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests", + "codeception/specify": "BDD-style code blocks", + "codeception/verify": "BDD-style assertions", + "flow/jsonpath": "For using JSONPath in REST module", + "league/factory-muffin": "For DataFactory module", + "league/factory-muffin-faker": "For Faker support in DataFactory module", + "phpseclib/phpseclib": "for SFTP option in FTP Module", + "stecman/symfony-console-completion": "For BASH autocompletion", + "symfony/phpunit-bridge": "For phpunit-bridge support" + }, + "bin": [ + "codecept" + ], + "type": "library", + "extra": { + "branch-alias": [] + }, + "autoload": { + "psr-4": { + "Codeception\\": "src/Codeception", + "Codeception\\Extension\\": "ext" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert@mail.ua", + "homepage": "http://codegyre.com" + } + ], + "description": "BDD-style testing framework", + "homepage": "http://codeception.com/", + "keywords": [ + "BDD", + "TDD", + "acceptance testing", + "functional testing", + "unit testing" + ], + "time": "2019-05-20T17:02:37+00:00" + }, + { + "name": "codeception/phpunit-wrapper", + "version": "7.7.1", + "source": { + "type": "git", + "url": "https://github.com/Codeception/phpunit-wrapper.git", + "reference": "ab04a956264291505ea84998f43cf91639b4575d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/ab04a956264291505ea84998f43cf91639b4575d", + "reference": "ab04a956264291505ea84998f43cf91639b4575d", + "shasum": "" + }, + "require": { + "phpunit/php-code-coverage": "^6.0", + "phpunit/phpunit": "7.5.*", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0" + }, + "require-dev": { + "codeception/specify": "*", + "vlucas/phpdotenv": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\PHPUnit\\": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Davert", + "email": "davert.php@resend.cc" + } + ], + "description": "PHPUnit classes used by Codeception", + "time": "2019-02-26T20:35:32+00:00" + }, + { + "name": "codeception/stub", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Stub.git", + "reference": "853657f988942f7afb69becf3fd0059f192c705a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/853657f988942f7afb69becf3fd0059f192c705a", + "reference": "853657f988942f7afb69becf3fd0059f192c705a", + "shasum": "" + }, + "require": { + "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", + "time": "2019-03-02T15:35:10+00:00" + }, + { + "name": "facebook/webdriver", + "version": "1.7.1", + "source": { + "type": "git", + "url": "https://github.com/facebook/php-webdriver.git", + "reference": "e43de70f3c7166169d0f14a374505392734160e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/e43de70f3c7166169d0f14a374505392734160e5", + "reference": "e43de70f3c7166169d0f14a374505392734160e5", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-zip": "*", + "php": "^5.6 || ~7.0", + "symfony/process": "^2.8 || ^3.1 || ^4.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "php-coveralls/php-coveralls": "^2.0", + "php-mock/php-mock-phpunit": "^1.1", + "phpunit/phpunit": "^5.7", + "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", + "squizlabs/php_codesniffer": "^2.6", + "symfony/var-dumper": "^3.3 || ^4.0" + }, + "suggest": { + "ext-SimpleXML": "For Firefox profile creation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-community": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Facebook\\WebDriver\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "A PHP client for Selenium WebDriver", + "homepage": "https://github.com/facebook/php-webdriver", + "keywords": [ + "facebook", + "php", + "selenium", + "webdriver" + ], + "time": "2019-06-13T08:02:18+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2018-04-22T15:46:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.5.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "9f83dded91781a01c63574e387eaa769be769115" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", + "reference": "9f83dded91781a01c63574e387eaa769be769115", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2018-12-04T20:46:45+00:00" + }, + { + "name": "hoa/consistency", + "version": "1.17.05.02", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Consistency.git", + "reference": "fd7d0adc82410507f332516faf655b6ed22e4c2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Consistency/zipball/fd7d0adc82410507f332516faf655b6ed22e4c2f", + "reference": "fd7d0adc82410507f332516faf655b6ed22e4c2f", + "shasum": "" + }, + "require": { + "hoa/exception": "~1.0", + "php": ">=5.5.0" + }, + "require-dev": { + "hoa/stream": "~1.0", + "hoa/test": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Consistency\\": "." + }, + "files": [ + "Prelude.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "https://hoa-project.net/" + } + ], + "description": "The Hoa\\Consistency library.", + "homepage": "https://hoa-project.net/", + "keywords": [ + "autoloader", + "callable", + "consistency", + "entity", + "flex", + "keyword", + "library" + ], + "time": "2017-05-02T12:18:12+00:00" + }, + { + "name": "hoa/console", + "version": "3.17.05.02", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Console.git", + "reference": "e231fd3ea70e6d773576ae78de0bdc1daf331a66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Console/zipball/e231fd3ea70e6d773576ae78de0bdc1daf331a66", + "reference": "e231fd3ea70e6d773576ae78de0bdc1daf331a66", + "shasum": "" + }, + "require": { + "hoa/consistency": "~1.0", + "hoa/event": "~1.0", + "hoa/exception": "~1.0", + "hoa/file": "~1.0", + "hoa/protocol": "~1.0", + "hoa/stream": "~1.0", + "hoa/ustring": "~4.0" + }, + "require-dev": { + "hoa/test": "~2.0" + }, + "suggest": { + "ext-pcntl": "To enable hoa://Event/Console/Window:resize.", + "hoa/dispatcher": "To use the console kit.", + "hoa/router": "To use the console kit." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Console\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "https://hoa-project.net/" + } + ], + "description": "The Hoa\\Console library.", + "homepage": "https://hoa-project.net/", + "keywords": [ + "autocompletion", + "chrome", + "cli", + "console", + "cursor", + "getoption", + "library", + "option", + "parser", + "processus", + "readline", + "terminfo", + "tput", + "window" + ], + "time": "2017-05-02T12:26:19+00:00" + }, + { + "name": "hoa/event", + "version": "1.17.01.13", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Event.git", + "reference": "6c0060dced212ffa3af0e34bb46624f990b29c54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Event/zipball/6c0060dced212ffa3af0e34bb46624f990b29c54", + "reference": "6c0060dced212ffa3af0e34bb46624f990b29c54", + "shasum": "" + }, + "require": { + "hoa/consistency": "~1.0", + "hoa/exception": "~1.0" + }, + "require-dev": { + "hoa/test": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Event\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "https://hoa-project.net/" + } + ], + "description": "The Hoa\\Event library.", + "homepage": "https://hoa-project.net/", + "keywords": [ + "event", + "library", + "listener", + "observer" + ], + "time": "2017-01-13T15:30:50+00:00" + }, + { + "name": "hoa/exception", + "version": "1.17.01.16", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Exception.git", + "reference": "091727d46420a3d7468ef0595651488bfc3a458f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Exception/zipball/091727d46420a3d7468ef0595651488bfc3a458f", + "reference": "091727d46420a3d7468ef0595651488bfc3a458f", + "shasum": "" + }, + "require": { + "hoa/consistency": "~1.0", + "hoa/event": "~1.0" + }, + "require-dev": { + "hoa/test": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Exception\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "https://hoa-project.net/" + } + ], + "description": "The Hoa\\Exception library.", + "homepage": "https://hoa-project.net/", + "keywords": [ + "exception", + "library" + ], + "time": "2017-01-16T07:53:27+00:00" + }, + { + "name": "hoa/file", + "version": "1.17.07.11", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/File.git", + "reference": "35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/File/zipball/35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca", + "reference": "35cb979b779bc54918d2f9a4e02ed6c7a1fa67ca", + "shasum": "" + }, + "require": { + "hoa/consistency": "~1.0", + "hoa/event": "~1.0", + "hoa/exception": "~1.0", + "hoa/iterator": "~2.0", + "hoa/stream": "~1.0" + }, + "require-dev": { + "hoa/test": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\File\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "https://hoa-project.net/" + } + ], + "description": "The Hoa\\File library.", + "homepage": "https://hoa-project.net/", + "keywords": [ + "Socket", + "directory", + "file", + "finder", + "library", + "link", + "temporary" + ], + "time": "2017-07-11T07:42:15+00:00" + }, + { + "name": "hoa/iterator", + "version": "2.17.01.10", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Iterator.git", + "reference": "d1120ba09cb4ccd049c86d10058ab94af245f0cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Iterator/zipball/d1120ba09cb4ccd049c86d10058ab94af245f0cc", + "reference": "d1120ba09cb4ccd049c86d10058ab94af245f0cc", + "shasum": "" + }, + "require": { + "hoa/consistency": "~1.0", + "hoa/exception": "~1.0" + }, + "require-dev": { + "hoa/test": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Iterator\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "https://hoa-project.net/" + } + ], + "description": "The Hoa\\Iterator library.", + "homepage": "https://hoa-project.net/", + "keywords": [ + "iterator", + "library" + ], + "time": "2017-01-10T10:34:47+00:00" + }, + { + "name": "hoa/protocol", + "version": "1.17.01.14", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Protocol.git", + "reference": "5c2cf972151c45f373230da170ea015deecf19e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Protocol/zipball/5c2cf972151c45f373230da170ea015deecf19e2", + "reference": "5c2cf972151c45f373230da170ea015deecf19e2", + "shasum": "" + }, + "require": { + "hoa/consistency": "~1.0", + "hoa/exception": "~1.0" + }, + "require-dev": { + "hoa/test": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Protocol\\": "." + }, + "files": [ + "Wrapper.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "https://hoa-project.net/" + } + ], + "description": "The Hoa\\Protocol library.", + "homepage": "https://hoa-project.net/", + "keywords": [ + "library", + "protocol", + "resource", + "stream", + "wrapper" + ], + "time": "2017-01-14T12:26:10+00:00" + }, + { + "name": "hoa/stream", + "version": "1.17.02.21", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Stream.git", + "reference": "3293cfffca2de10525df51436adf88a559151d82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Stream/zipball/3293cfffca2de10525df51436adf88a559151d82", + "reference": "3293cfffca2de10525df51436adf88a559151d82", + "shasum": "" + }, + "require": { + "hoa/consistency": "~1.0", + "hoa/event": "~1.0", + "hoa/exception": "~1.0", + "hoa/protocol": "~1.0" + }, + "require-dev": { + "hoa/test": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Stream\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "https://hoa-project.net/" + } + ], + "description": "The Hoa\\Stream library.", + "homepage": "https://hoa-project.net/", + "keywords": [ + "Context", + "bucket", + "composite", + "filter", + "in", + "library", + "out", + "protocol", + "stream", + "wrapper" + ], + "time": "2017-02-21T16:01:06+00:00" + }, + { + "name": "hoa/ustring", + "version": "4.17.01.16", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Ustring.git", + "reference": "e6326e2739178799b1fe3fdd92029f9517fa17a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Ustring/zipball/e6326e2739178799b1fe3fdd92029f9517fa17a0", + "reference": "e6326e2739178799b1fe3fdd92029f9517fa17a0", + "shasum": "" + }, + "require": { + "hoa/consistency": "~1.0", + "hoa/exception": "~1.0" + }, + "require-dev": { + "hoa/test": "~2.0" + }, + "suggest": { + "ext-iconv": "ext/iconv must be present (or a third implementation) to use Hoa\\Ustring::transcode().", + "ext-intl": "To get a better Hoa\\Ustring::toAscii() and Hoa\\Ustring::compareTo()." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Ustring\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "https://hoa-project.net/" + } + ], + "description": "The Hoa\\Ustring library.", + "homepage": "https://hoa-project.net/", + "keywords": [ + "library", + "search", + "string", + "unicode" + ], + "time": "2017-01-16T07:08:25+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2019-04-07T13:18:21+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+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.3.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2019-04-30T17:48:53+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-14T14:27:02+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2019-06-13T12:50:23+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "6.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "ext-xdebug": "^2.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2018-10-31T16:06:48+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "050bedf145a257b1ff02746c31894800e5122946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2018-09-13T20:33:42+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2019-06-07T04:22:29+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c99e3be9d3e85f60646f152f9002d46ed7770d18", + "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2018-10-30T05:52:18+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "7.5.12", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "9ba59817745b0fe0c1a5a3032dfd4a6d2994ad1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9ba59817745b0fe0c1a5a3032dfd4a6d2994ad1c", + "reference": "9ba59817745b0fe0c1a5a3032dfd4a6d2994ad1c", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2019-05-28T11:59:40+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7.0", + "satooshi/php-coveralls": ">=1.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "time": "2016-02-11T07:05:27+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "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-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "shasum": "" + }, + "require": { + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-07-12T15:12:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "time": "2019-02-04T06:01:07+00:00" + }, + { + "name": "sebastian/environment", + "version": "4.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2019-05-05T09:05:15+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2017-04-03T13:19:02+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "e07d50e84b8cf489590f22244f4f609579b4a2c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e07d50e84b8cf489590f22244f4f609579b4a2c4", + "reference": "e07d50e84b8cf489590f22244f4f609579b4a2c4", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/dom-crawler": "~3.4|~4.0" + }, + "require-dev": { + "symfony/css-selector": "~3.4|~4.0", + "symfony/http-client": "^4.3", + "symfony/mime": "^4.3", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "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 BrowserKit Component", + "homepage": "https://symfony.com", + "time": "2019-05-30T16:10:05+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "105c98bb0c5d8635bea056135304bd8edcc42b4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/105c98bb0c5d8635bea056135304bd8edcc42b4d", + "reference": "105c98bb0c5d8635bea056135304bd8edcc42b4d", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "time": "2019-01-16T21:53:39+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "06ee58fbc9a8130f1d35b5280e15235a0515d457" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/06ee58fbc9a8130f1d35b5280e15235a0515d457", + "reference": "06ee58fbc9a8130f1d35b5280e15235a0515d457", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "~3.4|~4.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "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 DomCrawler Component", + "homepage": "https://symfony.com", + "time": "2019-05-31T18:55:30+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4e6c670af81c4fb0b6c08b035530a9915d0b691f", + "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/event-dispatcher-contracts": "^1.1" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "^3.4|^4.0", + "symfony/service-contracts": "^1.1", + "symfony/stopwatch": "~3.4|~4.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "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 EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2019-05-30T16:10:05+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "8fa2cf2177083dd59cf8e44ea4b6541764fbda69" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8fa2cf2177083dd59cf8e44ea4b6541764fbda69", + "reference": "8fa2cf2177083dd59cf8e44ea4b6541764fbda69", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-05-22T12:23:29+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176", + "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "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 Finder Component", + "homepage": "https://symfony.com", + "time": "2019-05-26T20:47:49+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "82ebae02209c21113908c229e9883c419720738a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", + "reference": "82ebae02209c21113908c229e9883c419720738a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/process", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/856d35814cf287480465bb7a6c413bb7f5f5e69c", + "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "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 Process Component", + "homepage": "https://symfony.com", + "time": "2019-05-30T16:10:05+00:00" + }, + { + "name": "symfony/yaml", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c60ecf5ba842324433b46f58dc7afc4487dbab99", + "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "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 Yaml Component", + "homepage": "https://symfony.com", + "time": "2019-04-06T14:04:46+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2019-06-13T22:48:21+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "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": "2018-12-25T11:19:39+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=7" + }, + "platform-dev": [] +} From 1e1bd9b624594cfc48fa5e73c88dfab6d409b6e3 Mon Sep 17 00:00:00 2001 From: eugene-khorev Date: Fri, 14 Jun 2019 16:26:32 +0300 Subject: [PATCH 12/13] Code formatting --- src/Smd/Annotation/Definition/HasDefinitions.php | 1 - src/Smd/Annotation/Definition/ObjectDefinitionType.php | 1 - src/Smd/Annotation/Errors.php | 2 +- src/Smd/Annotation/Parameter/AbstractParameterType.php | 2 -- src/Smd/Annotation/Parameter/BooleanParameterType.php | 2 +- src/Smd/Annotation/Parameter/IntegerParameterType.php | 2 +- src/Smd/Annotation/Parameter/NumberParameterType.php | 2 +- src/Smd/Annotation/Parameter/StringParameterType.php | 2 +- src/Smd/Annotation/Parameters.php | 5 ----- 9 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/Smd/Annotation/Definition/HasDefinitions.php b/src/Smd/Annotation/Definition/HasDefinitions.php index bf73a20..81606c9 100644 --- a/src/Smd/Annotation/Definition/HasDefinitions.php +++ b/src/Smd/Annotation/Definition/HasDefinitions.php @@ -7,7 +7,6 @@ */ trait HasDefinitions { /** - * * @var array */ public $definitions = []; diff --git a/src/Smd/Annotation/Definition/ObjectDefinitionType.php b/src/Smd/Annotation/Definition/ObjectDefinitionType.php index 6ef3b1f..3e998b9 100644 --- a/src/Smd/Annotation/Definition/ObjectDefinitionType.php +++ b/src/Smd/Annotation/Definition/ObjectDefinitionType.php @@ -18,7 +18,6 @@ class ObjectDefinitionType extends AbstractDefinitionType public $properties; /** - * * @var string */ public $ref; diff --git a/src/Smd/Annotation/Errors.php b/src/Smd/Annotation/Errors.php index 8b05510..96a3de0 100644 --- a/src/Smd/Annotation/Errors.php +++ b/src/Smd/Annotation/Errors.php @@ -8,7 +8,7 @@ * @Annotation * @Target({"ANNOTATION"}) */ -final class Errors +class Errors { /** * @Required diff --git a/src/Smd/Annotation/Parameter/AbstractParameterType.php b/src/Smd/Annotation/Parameter/AbstractParameterType.php index af02ad7..8952664 100644 --- a/src/Smd/Annotation/Parameter/AbstractParameterType.php +++ b/src/Smd/Annotation/Parameter/AbstractParameterType.php @@ -14,13 +14,11 @@ class AbstractParameterType extends AbstractType const CLASS_NAME_SUFFIX = 'ParameterType'; /** - * * @var bool */ public $optional = false; /** - * * @var mixed */ public $default = null; diff --git a/src/Smd/Annotation/Parameter/BooleanParameterType.php b/src/Smd/Annotation/Parameter/BooleanParameterType.php index 04ea27a..690e683 100644 --- a/src/Smd/Annotation/Parameter/BooleanParameterType.php +++ b/src/Smd/Annotation/Parameter/BooleanParameterType.php @@ -8,5 +8,5 @@ */ class BooleanParameterType extends AbstractParameterType { - //put your code here + } diff --git a/src/Smd/Annotation/Parameter/IntegerParameterType.php b/src/Smd/Annotation/Parameter/IntegerParameterType.php index 5a7c74b..0921167 100644 --- a/src/Smd/Annotation/Parameter/IntegerParameterType.php +++ b/src/Smd/Annotation/Parameter/IntegerParameterType.php @@ -8,5 +8,5 @@ */ class IntegerParameterType extends AbstractParameterType { - //put your code here + } diff --git a/src/Smd/Annotation/Parameter/NumberParameterType.php b/src/Smd/Annotation/Parameter/NumberParameterType.php index fea6d18..aebe944 100644 --- a/src/Smd/Annotation/Parameter/NumberParameterType.php +++ b/src/Smd/Annotation/Parameter/NumberParameterType.php @@ -8,5 +8,5 @@ */ class NumberParameterType extends AbstractParameterType { - //put your code here + } diff --git a/src/Smd/Annotation/Parameter/StringParameterType.php b/src/Smd/Annotation/Parameter/StringParameterType.php index 7f30c60..381d2fe 100644 --- a/src/Smd/Annotation/Parameter/StringParameterType.php +++ b/src/Smd/Annotation/Parameter/StringParameterType.php @@ -8,5 +8,5 @@ */ class StringParameterType extends AbstractParameterType { - //put your code here + } diff --git a/src/Smd/Annotation/Parameters.php b/src/Smd/Annotation/Parameters.php index d663f6f..484da0b 100644 --- a/src/Smd/Annotation/Parameters.php +++ b/src/Smd/Annotation/Parameters.php @@ -17,11 +17,6 @@ class Parameters */ public $items; - /** - * @var array - */ - public $definitions = []; - /** * @return array */ From 6e31ae696d13a0ffa762c00318e5720be4c66b30 Mon Sep 17 00:00:00 2001 From: eugene-khorev Date: Fri, 14 Jun 2019 16:30:37 +0300 Subject: [PATCH 13/13] Code formatting --- src/Smd/SmdGeneratorInterface.php | 2 +- tests/unit/ResponseBuilderTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Smd/SmdGeneratorInterface.php b/src/Smd/SmdGeneratorInterface.php index bba2fda..5a0f29d 100644 --- a/src/Smd/SmdGeneratorInterface.php +++ b/src/Smd/SmdGeneratorInterface.php @@ -12,4 +12,4 @@ interface SmdGeneratorInterface { * @return array */ public function run(\Generator $serviceAnnotationGenerator): array; -} \ No newline at end of file +} diff --git a/tests/unit/ResponseBuilderTest.php b/tests/unit/ResponseBuilderTest.php index ac5b9d8..7ff10e6 100755 --- a/tests/unit/ResponseBuilderTest.php +++ b/tests/unit/ResponseBuilderTest.php @@ -41,4 +41,4 @@ public function testBuild($data, $result) $builded = ResponseBuilder::build($data[0], $data[1]); $this->assertEquals($builded, $result, "::build() builds valid php array for JSON RPC 2.0 Specification"); } -} \ No newline at end of file +}