Skip to content

Commit

Permalink
fix: parameter provider in a long running http worker
Browse files Browse the repository at this point in the history
  • Loading branch information
rmikalkenas committed Sep 30, 2024
1 parent f932699 commit b96f41b
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/State/Provider/ParameterProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public function provide(Operation $operation, array $uriVariables = [], array $c
}

$parameters->add($parameter->getKey(), $parameter = $parameter->withExtraProperties(
$parameter->getExtraProperties() + ['_api_values' => $value]
array_merge($parameter->getExtraProperties(), ['_api_values' => $value])
));

if (null === ($provider = $parameter->getProvider())) {
Expand Down
4 changes: 3 additions & 1 deletion src/State/Tests/ParameterProviderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,16 +51,18 @@ public function has(string $id): bool
'order' => new QueryParameter(key: 'order', provider: 'test'),
'search[:property]' => new QueryParameter(key: 'search[:property]', provider: [self::class, 'provide']),
'foo' => new QueryParameter(key: 'foo', provider: [self::class, 'shouldNotBeCalled']),
'baz' => (new QueryParameter(key: 'baz'))->withExtraProperties(['_api_values' => 'test1']),
]));
$parameterProvider = new ParameterProvider(null, $locator);
$request = new Request(server: ['QUERY_STRING' => 'order[foo]=asc&search[a]=bar']);
$request = new Request(server: ['QUERY_STRING' => 'order[foo]=asc&search[a]=bar&baz=t42']);
$context = ['request' => $request, 'operation' => $operation];
$parameterProvider->provide($operation, [], $context);
$operation = $request->attributes->get('_api_operation');

$this->assertEquals('ok', $operation->getName());
$this->assertEquals(['foo' => 'asc'], $operation->getParameters()->get('order', QueryParameter::class)->getValue());
$this->assertEquals(['a' => 'bar'], $operation->getParameters()->get('search[:property]', QueryParameter::class)->getValue());
$this->assertEquals('t42', $operation->getParameters()->get('baz', QueryParameter::class)->getValue());
}

public static function provide(): void
Expand Down

0 comments on commit b96f41b

Please sign in to comment.