67 lines
2.1 KiB
PHP
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();
|
|
}
|
|
}
|