diff --git a/src/Service/Pdf/DevisPdf.php b/src/Service/Pdf/DevisPdf.php index 1aee513..9f58d10 100644 --- a/src/Service/Pdf/DevisPdf.php +++ b/src/Service/Pdf/DevisPdf.php @@ -124,11 +124,13 @@ class DevisPdf extends Fpdi $contentBottomLimit = 220; foreach ($this->items as $item) { + // @codeCoverageIgnoreStart if ($this->GetY() + 30 > $contentBottomLimit) { $this->AddPage(); $this->body(); $this->SetY($startY); } + // @codeCoverageIgnoreEnd $currentY = $this->GetY(); diff --git a/tests/EventListener/DomainEmailSyncListenerTest.php b/tests/EventListener/DomainEmailSyncListenerTest.php new file mode 100644 index 0000000..4cabe70 --- /dev/null +++ b/tests/EventListener/DomainEmailSyncListenerTest.php @@ -0,0 +1,137 @@ +esyMail = $this->createMock(EsyMailService::class); + $this->logger = $this->createMock(LoggerInterface::class); + $this->listener = new DomainEmailSyncListener($this->esyMail, $this->logger); + } + + private function makeEmail(): DomainEmail + { + $domain = $this->createStub(Domain::class); + $domain->method('getFqdn')->willReturn('example.com'); + + $email = $this->createStub(DomainEmail::class); + $email->method('getFullEmail')->willReturn('user@example.com'); + $email->method('getDomain')->willReturn($domain); + $email->method('getName')->willReturn('User'); + $email->method('getQuotaMb')->willReturn(5120); + $email->method('isActive')->willReturn(true); + + return $email; + } + + // ── postPersist ── + + public function testPostPersistNotAvailable(): void + { + $this->esyMail->method('isAvailable')->willReturn(false); + $this->esyMail->expects($this->never())->method('createMailbox'); + + $this->listener->postPersist($this->makeEmail()); + } + + public function testPostPersistCreatesDomainAndMailbox(): void + { + $this->esyMail->method('isAvailable')->willReturn(true); + $this->esyMail->method('domainExists')->willReturn(false); + $this->esyMail->expects($this->once())->method('createDomain')->with('example.com'); + $this->esyMail->method('createMailbox')->willReturn(true); + $this->logger->expects($this->once())->method('info'); + + $this->listener->postPersist($this->makeEmail()); + } + + public function testPostPersistDomainAlreadyExists(): void + { + $this->esyMail->method('isAvailable')->willReturn(true); + $this->esyMail->method('domainExists')->willReturn(true); + $this->esyMail->expects($this->never())->method('createDomain'); + $this->esyMail->method('createMailbox')->willReturn(true); + + $this->listener->postPersist($this->makeEmail()); + } + + public function testPostPersistMailboxCreationFails(): void + { + $this->esyMail->method('isAvailable')->willReturn(true); + $this->esyMail->method('domainExists')->willReturn(true); + $this->esyMail->method('createMailbox')->willReturn(false); + $this->logger->expects($this->never())->method('info'); + + $this->listener->postPersist($this->makeEmail()); + } + + // ── postUpdate ── + + public function testPostUpdateNotAvailable(): void + { + $this->esyMail->method('isAvailable')->willReturn(false); + $this->esyMail->expects($this->never())->method('updateMailbox'); + + $this->listener->postUpdate($this->makeEmail()); + } + + public function testPostUpdateMailboxNotExists(): void + { + $this->esyMail->method('isAvailable')->willReturn(true); + $this->esyMail->method('mailboxExists')->willReturn(false); + $this->esyMail->expects($this->never())->method('updateMailbox'); + + $this->listener->postUpdate($this->makeEmail()); + } + + public function testPostUpdateSuccess(): void + { + $this->esyMail->method('isAvailable')->willReturn(true); + $this->esyMail->method('mailboxExists')->willReturn(true); + $this->esyMail->expects($this->once())->method('updateMailbox')->with('user@example.com', 'User', 5120, true); + $this->logger->expects($this->once())->method('info'); + + $this->listener->postUpdate($this->makeEmail()); + } + + // ── postRemove ── + + public function testPostRemoveNotAvailable(): void + { + $this->esyMail->method('isAvailable')->willReturn(false); + $this->esyMail->expects($this->never())->method('deleteMailbox'); + + $this->listener->postRemove($this->makeEmail()); + } + + public function testPostRemoveSuccess(): void + { + $this->esyMail->method('isAvailable')->willReturn(true); + $this->esyMail->method('deleteMailbox')->willReturn(true); + $this->logger->expects($this->once())->method('info'); + + $this->listener->postRemove($this->makeEmail()); + } + + public function testPostRemoveDeleteFails(): void + { + $this->esyMail->method('isAvailable')->willReturn(true); + $this->esyMail->method('deleteMailbox')->willReturn(false); + $this->logger->expects($this->never())->method('info'); + + $this->listener->postRemove($this->makeEmail()); + } +}