diff --git a/src/Behat/Context/GraphqlApiPlatformContext.php b/src/Behat/Context/GraphqlApiPlatformContext.php index 1c33cb66..cbbb6e2c 100644 --- a/src/Behat/Context/GraphqlApiPlatformContext.php +++ b/src/Behat/Context/GraphqlApiPlatformContext.php @@ -152,7 +152,7 @@ public function thatResponseShouldContainKeyWithValue(string $key, $value): void { /** @psalm-suppress MixedAssignment */ $responseValueAtKey = $this->client->getValueAtKey($key); - Assert::same($value, $responseValueAtKey); + Assert::same($responseValueAtKey, $value); } /** @@ -235,4 +235,18 @@ private function getJsonFromResponse(string $response): ?array return null; } + + /** + * @Then I add :filterName filter to this operation with :value value + * @Then I add :filterName filter to this operation with :type value :value + * + * @param mixed $value + */ + public function iAddFilterToThisOperation(string $filterName, $value, string $type = null): void + { + $operation = $this->client->getLastOperationRequest(); + Assert::isInstanceOf($operation, OperationRequestInterface::class); + $value = $this->castToType($value, $type); + $operation->addFilter($filterName, $value); + } } diff --git a/src/Behat/Model/OperationRequest.php b/src/Behat/Model/OperationRequest.php index 0df402ee..b281a6c8 100644 --- a/src/Behat/Model/OperationRequest.php +++ b/src/Behat/Model/OperationRequest.php @@ -107,7 +107,29 @@ public function getFormatted(): array private function formatFilters(): string { - return ''; + $filters = $this->getFilters(); + + if (count($filters) <= 0) { + return ''; + } + + $filtersData = ''; + + /** + * @var string $filterName + * @var mixed $filterValue + */ + foreach ($filters as $filterName => $filterValue) { + $filtersData .= sprintf( + "%s: %s,\n", + $filterName, + (string) $filterValue + ); + } + + return sprintf('( + %s + )', $filtersData); } private function addFiltersToQuery(): void