BuilderIteratorTest.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Tests\Unit\Service\ServiceIterator\Mailer;
  3. use App\Service\Mailer\Builder\BuilderInterface;
  4. use App\Service\Mailer\Model\MailerModelInterface;
  5. use App\Service\ServiceIterator\Mailer\BuilderIterator;
  6. use PHPUnit\Framework\TestCase;
  7. class BuilderIteratorTest extends TestCase
  8. {
  9. public function testGetBuilderFor(): void
  10. {
  11. $mailModel = $this->getMockBuilder(MailerModelInterface::class)->getMock();
  12. $builder1 = $this->getMockBuilder(BuilderInterface::class)->getMock();
  13. $builder1->expects(self::once())->method('support')->with($mailModel)->willReturn(false);
  14. $builder2 = $this->getMockBuilder(BuilderInterface::class)->getMock();
  15. $builder2->expects(self::once())->method('support')->with($mailModel)->willReturn(true);
  16. $builder3 = $this->getMockBuilder(BuilderInterface::class)->getMock();
  17. $builder3->expects(self::never())->method('support');
  18. $builderIterator = $this->getMockBuilder(BuilderIterator::class)
  19. ->setConstructorArgs([[$builder1, $builder2, $builder3]])
  20. ->setMethodsExcept(['getBuilderFor'])
  21. ->getMock();
  22. $this->assertEquals(
  23. $builder2,
  24. $builderIterator->getBuilderFor($mailModel)
  25. );
  26. }
  27. public function testGetBuilderForNotFound(): void
  28. {
  29. $mailModel = $this->getMockBuilder(MailerModelInterface::class)->getMock();
  30. $builder1 = $this->getMockBuilder(BuilderInterface::class)->getMock();
  31. $builder1->expects(self::once())->method('support')->with($mailModel)->willReturn(false);
  32. $builder2 = $this->getMockBuilder(BuilderInterface::class)->getMock();
  33. $builder2->expects(self::once())->method('support')->with($mailModel)->willReturn(false);
  34. $builderIterator = $this->getMockBuilder(BuilderIterator::class)
  35. ->setConstructorArgs([[$builder1, $builder2]])
  36. ->setMethodsExcept(['getBuilderFor'])
  37. ->getMock();
  38. $this->expectException(\Exception::class);
  39. $builderIterator->getBuilderFor($mailModel);
  40. }
  41. }