createMock(\medoo::class); $repository = new NewsletterRepository($mockDb, $this->createMock(SettingsRepository::class)); $this->assertNull($repository->templateDetails(0)); } public function testTemplateDetailsReturnsArray(): void { $mockDb = $this->createMock(\medoo::class); $mockDb->expects($this->once()) ->method('get') ->with('pp_newsletter_templates', '*', ['id' => 7]) ->willReturn(['id' => 7, 'name' => 'Tpl']); $repository = new NewsletterRepository($mockDb, $this->createMock(SettingsRepository::class)); $details = $repository->templateDetails(7); $this->assertIsArray($details); $this->assertSame(7, $details['id']); } public function testSaveSettingsUpdatesHeaderAndFooter(): void { $mockDb = $this->createMock(\medoo::class); $settingsRepository = $this->createMock(SettingsRepository::class); $settingsRepository->expects($this->exactly(2)) ->method('updateSetting') ->withConsecutive( ['newsletter_footer', 'Footer'], ['newsletter_header', 'Header'] ); $repository = new NewsletterRepository($mockDb, $settingsRepository); $this->assertTrue($repository->saveSettings([ 'newsletter_header' => 'Header', 'newsletter_footer' => 'Footer', ])); } public function testDeleteTemplateReturnsFalseForAdminTemplate(): void { $mockDb = $this->createMock(\medoo::class); $mockDb->expects($this->once()) ->method('get') ->with('pp_newsletter_templates', 'is_admin', ['id' => 5]) ->willReturn(1); $repository = new NewsletterRepository($mockDb, $this->createMock(SettingsRepository::class)); $this->assertFalse($repository->deleteTemplate(5)); } public function testTemplateByNameReturnsText(): void { $mockDb = $this->createMock(\medoo::class); $mockDb->expects($this->once()) ->method('get') ->with('pp_newsletter_templates', 'text', ['name' => '#abc']) ->willReturn('Template text'); $repository = new NewsletterRepository($mockDb, $this->createMock(SettingsRepository::class)); $this->assertSame('Template text', $repository->templateByName('#abc')); } }