createServerRequest('POST', 'https://example.com/') ->withParsedBody(['value' => $value]); $config = new Config(); $responseRenderer = new ResponseRenderer(); $controller = new UpdateNavWidthConfigController($responseRenderer, $config); $controller($request); self::assertSame($expected, $config->settings['NavigationWidth']); self::assertSame([], $responseRenderer->getJSONResult()); self::assertTrue($responseRenderer->hasSuccessState(), 'Should be a successful response.'); } /** @return iterable */ public static function validParamsProvider(): iterable { yield ['0', 0]; yield ['1', 1]; yield ['240', 240]; } /** @param string|string[] $value */ #[DataProvider('invalidParamsProvider')] public function testInvalidParams(array|string $value): void { $request = ServerRequestFactory::create()->createServerRequest('POST', 'https://example.com/') ->withParsedBody(['value' => $value]); $config = new Config(); $responseRenderer = new ResponseRenderer(); $controller = new UpdateNavWidthConfigController($responseRenderer, $config); $controller($request); self::assertSame( ['message' => Message::error('Unexpected parameter value.')->getDisplay()], $responseRenderer->getJSONResult(), ); self::assertFalse($responseRenderer->hasSuccessState(), 'Should be a failed response.'); } /** @return iterable */ public static function invalidParamsProvider(): iterable { yield ['']; yield ['invalid']; yield [['invalid']]; yield ['-1']; } public function testFailedConfigSaving(): void { $request = ServerRequestFactory::create()->createServerRequest('POST', 'https://example.com/') ->withParsedBody(['value' => '240']); $config = self::createStub(Config::class); $config->method('setUserValue')->willReturn(Message::error('Could not save configuration')); $responseRenderer = new ResponseRenderer(); $controller = new UpdateNavWidthConfigController($responseRenderer, $config); $controller($request); self::assertSame( ['message' => Message::error('Could not save configuration')->getDisplay()], $responseRenderer->getJSONResult(), ); self::assertFalse($responseRenderer->hasSuccessState(), 'Should be a failed response.'); } }