fix(error): harden logging, i18n, a11y and handler tests
This commit is contained in:
@@ -3,10 +3,28 @@
|
||||
namespace MintyPHP\Tests\Http;
|
||||
|
||||
use MintyPHP\Http\ErrorRenderer;
|
||||
use MintyPHP\I18n;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class ErrorRendererTest extends TestCase
|
||||
{
|
||||
private string $localeBackup = '';
|
||||
private string $defaultLocaleBackup = '';
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->localeBackup = (string) (I18n::$locale ?? '');
|
||||
$this->defaultLocaleBackup = (string) (I18n::$defaultLocale ?? 'en');
|
||||
I18n::$defaultLocale = 'en';
|
||||
I18n::$locale = 'en';
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
I18n::$locale = $this->localeBackup;
|
||||
I18n::$defaultLocale = $this->defaultLocaleBackup;
|
||||
}
|
||||
|
||||
public function testRenderDevReturnsCompleteHtmlDocument(): void
|
||||
{
|
||||
$data = self::sampleData();
|
||||
@@ -16,6 +34,7 @@ class ErrorRendererTest extends TestCase
|
||||
$this->assertStringContainsString('</html>', $html);
|
||||
$this->assertStringContainsString('<style>', $html);
|
||||
$this->assertStringContainsString('<script>', $html);
|
||||
$this->assertStringContainsString('<html lang="en">', $html);
|
||||
}
|
||||
|
||||
public function testRenderDevContainsExceptionDetails(): void
|
||||
@@ -37,6 +56,21 @@ class ErrorRendererTest extends TestCase
|
||||
$this->assertStringContainsString('panel-request', $html);
|
||||
$this->assertStringContainsString('panel-environment', $html);
|
||||
$this->assertStringContainsString('panel-queries', $html);
|
||||
$this->assertStringContainsString('role="tablist"', $html);
|
||||
$this->assertStringContainsString('aria-controls="panel-exception"', $html);
|
||||
$this->assertStringContainsString('role="tabpanel"', $html);
|
||||
}
|
||||
|
||||
public function testRenderDevUsesAccessibleToggleButtons(): void
|
||||
{
|
||||
$data = self::sampleData();
|
||||
$html = ErrorRenderer::renderDev($data);
|
||||
|
||||
$this->assertStringContainsString('app-error-debug-frame__toggle', $html);
|
||||
$this->assertStringContainsString('app-error-debug-query__toggle', $html);
|
||||
$this->assertStringContainsString('aria-expanded="true"', $html);
|
||||
$this->assertStringContainsString('aria-controls="frame-code-0"', $html);
|
||||
$this->assertStringContainsString('aria-label="Copy request ID"', $html);
|
||||
}
|
||||
|
||||
public function testRenderDevEscapesHtmlInExceptionMessage(): void
|
||||
@@ -63,9 +97,12 @@ class ErrorRendererTest extends TestCase
|
||||
$html = ErrorRenderer::renderProd('abc-def-123');
|
||||
|
||||
$this->assertStringContainsString('<!DOCTYPE html>', $html);
|
||||
$this->assertStringContainsString('<html lang="en">', $html);
|
||||
$this->assertStringContainsString('abc-def-123', $html);
|
||||
$this->assertStringContainsString('An unexpected error occurred', $html);
|
||||
$this->assertStringContainsString('Back to start', $html);
|
||||
$this->assertStringContainsString('data-copy="abc-def-123"', $html);
|
||||
$this->assertStringContainsString('aria-label="Copy request ID"', $html);
|
||||
}
|
||||
|
||||
public function testRenderProdDoesNotContainDebugInfo(): void
|
||||
|
||||
Reference in New Issue
Block a user