Files
WP-Content-Sync/tests/Unit/Admin/DashboardTemplateTest.php
T
2026-05-07 06:36:01 -05:00

67 lines
2.1 KiB
PHP

<?php
namespace WPContentSync\Tests\Unit\Admin;
use PHPUnit\Framework\TestCase;
use WPContentSync\Settings\Settings;
class DashboardTemplateTest extends TestCase {
protected function tearDown(): void {
$_GET = array();
parent::tearDown();
}
public function test_it_renders_import_error_notices(): void {
$_GET['wpcs_import_error'] = 'The selected file is not valid JSON.';
$output = $this->renderDashboard();
self::assertStringContainsString( 'notice-error', $output );
self::assertStringContainsString( 'The selected file is not valid JSON.', $output );
}
public function test_it_renders_import_success_notices(): void {
$_GET['wpcs_imported'] = '1';
$output = $this->renderDashboard();
self::assertStringContainsString( 'notice-success', $output );
self::assertStringContainsString( 'The package JSON file was validated successfully.', $output );
}
public function test_it_renders_settings_form_with_nonce_and_escaped_pair_values(): void {
$settings = Settings::fromArray(
array(
'sync_pairs' => array(
array(
'name' => '<b>Staging</b>',
'source_url' => 'https://example.test',
'destination_url' => 'https://staging.example.test',
'username' => 'codex',
),
),
)
);
$output = $this->renderDashboard( $settings );
self::assertStringContainsString( 'action="https://example.test/wp-admin/admin-post.php"', $output );
self::assertStringContainsString( 'name="action" value="wpcs_save_settings"', $output );
self::assertStringContainsString( 'name="wpcs_settings_nonce"', $output );
self::assertStringContainsString( 'Staging', $output );
self::assertStringNotContainsString( '<b>Staging</b>', $output );
self::assertStringContainsString( 'name="wpcs_settings[sync_pairs][0][application_password]"', $output );
self::assertStringContainsString( 'name="wpcs_settings[sync_pairs][0][url_mappings][0][source]"', $output );
}
private function renderDashboard( ?Settings $settings = null ): string {
$settings = $settings ?? Settings::fromArray( array() );
ob_start();
include WPCS_PLUGIN_DIR . 'templates/admin/dashboard.php';
return (string) ob_get_clean();
}
}