Files
cmsPRO/tests/Unit/Domain/Settings/SettingsRepositoryTest.php
Jacek Pyziak 2e715e803e Fix: testy + bugfix SettingsRepository::allSettings() + migracja phpunit.xml
- SettingsRepository::allSettings() — inicjalizacja $settings = [] przed pętlą
  (bug: false ?? [] zwracało false gdy cache pusty a DB null)
- Stuby wydzielone do tests/stubs/CacheHandler.php + S.php
- phpunit.xml zmigurowany do schematu PHPUnit 10 (coverage → source)
- composer.lock dodany do repozytorium

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 23:56:00 +01:00

102 lines
2.8 KiB
PHP

<?php
namespace Tests\Unit\Domain\Settings;
use Domain\Settings\SettingsRepository;
use PHPUnit\Framework\TestCase;
class SettingsRepositoryTest extends TestCase
{
private function mockDb(): object
{
return $this->createMock(\medoo::class);
}
protected function setUp(): void
{
\Shared\Cache\CacheHandler::reset();
}
// --- allSettings ---
public function testAllSettingsReturnsMappedArray(): void
{
$db = $this->mockDb();
$db->method('select')->willReturn([
['param' => 'site_name', 'value' => 'Test CMS'],
['param' => 'email', 'value' => 'admin@test.pl'],
]);
$repo = new SettingsRepository($db);
$result = $repo->allSettings();
$this->assertSame('Test CMS', $result['site_name']);
$this->assertSame('admin@test.pl', $result['email']);
}
public function testAllSettingsReturnsEmptyArrayWhenDbReturnsNull(): void
{
$db = $this->mockDb();
$db->method('select')->willReturn(null);
$repo = new SettingsRepository($db);
$this->assertSame([], $repo->allSettings());
}
public function testAllSettingsUsesCache(): void
{
$db = $this->mockDb();
$db->expects($this->never())->method('select');
\Shared\Cache\CacheHandler::store('settings_details', ['cached' => '1']);
$repo = new SettingsRepository($db);
$result = $repo->allSettings();
$this->assertSame('1', $result['cached']);
}
// --- update ---
public function testUpdateCallsDbUpdateWhenParamExists(): void
{
$db = $this->mockDb();
$db->method('count')->willReturn(1);
$db->expects($this->once())->method('update')->willReturn(true);
$db->expects($this->never())->method('insert');
$repo = new SettingsRepository($db);
$this->assertTrue($repo->update('site_name', 'Nowa Nazwa'));
}
public function testUpdateCallsDbInsertWhenParamMissing(): void
{
$db = $this->mockDb();
$db->method('count')->willReturn(0);
$db->expects($this->once())->method('insert')->willReturn(true);
$db->expects($this->never())->method('update');
$repo = new SettingsRepository($db);
$repo->update('new_param', 'value');
}
// --- visitCounter ---
public function testVisitCounterReturnsValue(): void
{
$db = $this->mockDb();
$db->method('get')->willReturn('1234');
$repo = new SettingsRepository($db);
$this->assertSame('1234', $repo->visitCounter());
}
public function testVisitCounterReturnsNullWhenEmpty(): void
{
$db = $this->mockDb();
$db->method('get')->willReturn(null);
$repo = new SettingsRepository($db);
$this->assertNull($repo->visitCounter());
}
}