once()->with( 'lit_mcp_limits', 'lit_mcp_limits', Mockery::on(static fn (array $args): bool => $args['sanitize_callback'] === [Limits::class, 'sanitize'] && $args['default'] === Limits::DEFAULTS) ); (new LimitsTab())->registerSettings(); } public function testRendersThreeNumberFieldsWithCurrentValues(): void { Functions\stubEscapeFunctions(); Functions\stubTranslationFunctions(); Functions\when('settings_fields')->justReturn(null); Functions\when('submit_button')->justReturn(null); Functions\when('get_option')->justReturn(['upload_mb' => 8]); Functions\when('wp_max_upload_size')->justReturn(64 * 1024 * 1024); ob_start(); (new LimitsTab())->render(); $html = (string) ob_get_clean(); self::assertSame(3, substr_count($html, 'type="number"')); self::assertStringContainsString('name="lit_mcp_limits[upload_mb]" value="8"', $html); self::assertStringContainsString('name="lit_mcp_limits[log_retention_days]" value="90"', $html); self::assertStringContainsString('min="1" max="32"', $html); self::assertStringContainsString('höchstens 32', $html); self::assertStringContainsString('10 MB', $html); self::assertStringContainsString('min="1" max="3650"', $html); } public function testWarnsWhenUploadMbExceedsTheServersOwnUploadLimit(): void { Functions\stubEscapeFunctions(); Functions\stubTranslationFunctions(); Functions\when('settings_fields')->justReturn(null); Functions\when('submit_button')->justReturn(null); Functions\when('get_option')->justReturn(['upload_mb' => 20]); Functions\when('wp_max_upload_size')->justReturn(2 * 1024 * 1024); ob_start(); (new LimitsTab())->render(); $html = (string) ob_get_clean(); self::assertStringContainsString('class="description"', $html); self::assertMatchesRegularExpression('/20 MB.*2 MB/s', $html); } public function testNoWarningWhenUploadMbIsWithinTheServersOwnUploadLimit(): void { Functions\stubEscapeFunctions(); Functions\stubTranslationFunctions(); Functions\when('settings_fields')->justReturn(null); Functions\when('submit_button')->justReturn(null); Functions\when('get_option')->justReturn(['upload_mb' => 5]); Functions\when('wp_max_upload_size')->justReturn(64 * 1024 * 1024); ob_start(); (new LimitsTab())->render(); $html = (string) ob_get_clean(); self::assertStringNotContainsString('class="description"', $html); } }