forked from fa/breadcrumb-the-shire
46 lines
1.3 KiB
PHP
46 lines
1.3 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace MintyPHP\Tests\Service\Settings;
|
||
|
|
|
||
|
|
use MintyPHP\Service\Settings\SettingCacheService;
|
||
|
|
use PHPUnit\Framework\TestCase;
|
||
|
|
|
||
|
|
class SettingCacheServiceTest extends TestCase
|
||
|
|
{
|
||
|
|
public function testGetReturnsNullForMissingKey(): void
|
||
|
|
{
|
||
|
|
$file = $this->tempFilePath();
|
||
|
|
file_put_contents($file, "<?php\nreturn ['app_title' => 'Demo'];\n");
|
||
|
|
|
||
|
|
$service = new SettingCacheService($file);
|
||
|
|
$this->assertNull($service->get('missing'));
|
||
|
|
}
|
||
|
|
|
||
|
|
public function testUpdateWritesAndNormalizesValues(): void
|
||
|
|
{
|
||
|
|
$file = $this->tempFilePath();
|
||
|
|
file_put_contents($file, "<?php\nreturn ['app_title' => 'Old'];\n");
|
||
|
|
|
||
|
|
$service = new SettingCacheService($file);
|
||
|
|
$this->assertTrue($service->update([
|
||
|
|
'app_title' => 'New',
|
||
|
|
'app_locale' => null,
|
||
|
|
]));
|
||
|
|
|
||
|
|
$this->assertSame('New', $service->get('app_title'));
|
||
|
|
$this->assertNull($service->get('app_locale'));
|
||
|
|
}
|
||
|
|
|
||
|
|
private function tempFilePath(): string
|
||
|
|
{
|
||
|
|
$dir = sys_get_temp_dir() . '/mintyphp_settings_cache_test_' . bin2hex(random_bytes(6));
|
||
|
|
mkdir($dir, 0775, true);
|
||
|
|
$file = $dir . '/settings.php';
|
||
|
|
|
||
|
|
$this->addToAssertionCount(1);
|
||
|
|
$this->assertDirectoryExists($dir);
|
||
|
|
|
||
|
|
return $file;
|
||
|
|
}
|
||
|
|
}
|