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()); } }