assertChangelogOutputIsValid(__DIR__ . '/../../test_data/changelog/CHANGELOG-5.2.md'); } #[RequiresPhpExtension('zlib')] public function testWithCompressedFile(): void { $this->assertChangelogOutputIsValid(__DIR__ . '/../../test_data/changelog/CHANGELOG-5.2.md.gz'); } private function assertChangelogOutputIsValid(string $changelogPath): void { $config = self::createStub(Config::class); $config->method('getChangeLogFilePath')->willReturn($changelogPath); $request = ServerRequestFactory::create()->createServerRequest('GET', 'https://example.com/'); $responseRenderer = new ResponseRenderer(); $template = new Template(new Config()); $controller = new ChangeLogController($responseRenderer, $config, ResponseFactory::create(), $template); $response = $controller($request); self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertSame(['text/html; charset=utf-8'], $response->getHeader('Content-Type')); self::assertStringEqualsFile( __DIR__ . '/Fixtures/ChangeLog-assertChangelogOutputIsValid.html', (string) $response->getBody(), ); } public function testWithInvalidFile(): void { $config = self::createStub(Config::class); $config->method('getChangeLogFilePath')->willReturn(__DIR__ . '/../../test_data/changelog/InvalidChangeLog'); $request = ServerRequestFactory::create()->createServerRequest('GET', 'https://example.com/'); $responseRenderer = new ResponseRenderer(); $controller = new ChangeLogController( $responseRenderer, $config, ResponseFactory::create(), new Template(new Config()), ); $response = $controller($request); self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertSame(['text/html; charset=utf-8'], $response->getHeader('Content-Type')); self::assertSame( 'The InvalidChangeLog file is not available on this system, please visit' . ' phpmyadmin.net for more information.', (string) $response->getBody(), ); } }