Files
WP-Content-Sync/tests/Unit/SettingsTest.php
T
2026-04-26 12:44:16 -05:00

90 lines
2.3 KiB
PHP

<?php
namespace WPContentSync\Tests\Unit;
use PHPUnit\Framework\TestCase;
use WPContentSync\Settings\Settings;
class SettingsTest extends TestCase {
public function test_it_provides_secure_defaults(): void {
$settings = Settings::fromArray( array() );
self::assertSame( array(), $settings->syncPairs() );
self::assertSame( 'warning', $settings->loggingLevel() );
self::assertTrue( $settings->automaticUrlReplacementEnabled() );
self::assertSame( 'last_write_wins', $settings->conflictStrategy() );
}
public function test_it_sanitizes_scalar_settings(): void {
$settings = Settings::fromArray(
array(
'logging_level' => '<b>debug</b>',
'conflict_strategy' => "manual_review\n",
'automatic_url_replacement' => false,
)
);
self::assertSame( 'debug', $settings->loggingLevel() );
self::assertSame( 'manual_review', $settings->conflictStrategy() );
self::assertFalse( $settings->automaticUrlReplacementEnabled() );
}
public function test_it_rejects_unknown_logging_level(): void {
$settings = Settings::fromArray(
array(
'logging_level' => 'verbose',
)
);
self::assertSame( 'warning', $settings->loggingLevel() );
}
public function test_it_normalizes_string_boolean_values(): void {
$settings = Settings::fromArray(
array(
'automatic_url_replacement' => 'false',
)
);
self::assertFalse( $settings->automaticUrlReplacementEnabled() );
$settings = Settings::fromArray(
array(
'automatic_url_replacement' => '1',
)
);
self::assertTrue( $settings->automaticUrlReplacementEnabled() );
}
public function test_it_serializes_to_array(): void {
$settings = Settings::fromArray(
array(
'sync_pairs' => array(
array(
'name' => 'Staging',
'source_url' => 'https://example.test',
'destination_url' => 'https://staging.example.test',
),
),
)
);
self::assertSame(
array(
'sync_pairs' => array(
array(
'name' => 'Staging',
'source_url' => 'https://example.test',
'destination_url' => 'https://staging.example.test',
),
),
'logging_level' => 'warning',
'automatic_url_replacement' => true,
'conflict_strategy' => 'last_write_wins',
),
$settings->toArray()
);
}
}