From 25ab9719d4d22507f27e117eaeb05570de830c97 Mon Sep 17 00:00:00 2001 From: "tien.xuan.vo" Date: Fri, 15 Dec 2023 10:20:12 +0700 Subject: [PATCH] refactor: Add ArrayContains matcher class --- .../Matcher/Matchers/ArrayContains.php | 34 +++++++++++++++++++ .../Matcher/Matchers/ArrayContainsTest.php | 24 +++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/PhpPact/Consumer/Matcher/Matchers/ArrayContains.php create mode 100644 tests/PhpPact/Consumer/Matcher/Matchers/ArrayContainsTest.php diff --git a/src/PhpPact/Consumer/Matcher/Matchers/ArrayContains.php b/src/PhpPact/Consumer/Matcher/Matchers/ArrayContains.php new file mode 100644 index 00000000..da9368df --- /dev/null +++ b/src/PhpPact/Consumer/Matcher/Matchers/ArrayContains.php @@ -0,0 +1,34 @@ + $variants + */ + public function __construct(private array $variants) + { + } + + /** + * @return array + */ + public function jsonSerialize(): array + { + return [ + 'pact:matcher:type' => $this->getType(), + 'variants' => array_values($this->variants), + ]; + } + + public function getType(): string + { + return 'arrayContains'; + } +} diff --git a/tests/PhpPact/Consumer/Matcher/Matchers/ArrayContainsTest.php b/tests/PhpPact/Consumer/Matcher/Matchers/ArrayContainsTest.php new file mode 100644 index 00000000..d611b65b --- /dev/null +++ b/tests/PhpPact/Consumer/Matcher/Matchers/ArrayContainsTest.php @@ -0,0 +1,24 @@ +assertSame( + '{"pact:matcher:type":"arrayContains","variants":[{"pact:matcher:type":"type","value":"string"},{"pact:matcher:type":"integer","pact:generator:type":"RandomInt","min":0,"max":10}]}', + json_encode($array) + ); + } +}