BuilderIteratorTest.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App\Tests\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. $mailModel = $this->getMockBuilder(MailerModelInterface::class)->getMock();
  11. $builder1 = $this->getMockBuilder(BuilderInterface::class)->getMock();
  12. $builder1->expects(self::once())->method('support')->with($mailModel)->willReturn(false);
  13. $builder2 = $this->getMockBuilder(BuilderInterface::class)->getMock();
  14. $builder2->expects(self::once())->method('support')->with($mailModel)->willReturn(true);
  15. $builder3 = $this->getMockBuilder(BuilderInterface::class)->getMock();
  16. $builder3->expects(self::never())->method('support');
  17. $builderIterator = $this->getMockBuilder(BuilderIterator::class)
  18. ->setConstructorArgs([[$builder1, $builder2, $builder3]])
  19. ->setMethodsExcept(['getBuilderFor'])
  20. ->getMock();
  21. $this->assertEquals(
  22. $builder2,
  23. $builderIterator->getBuilderFor($mailModel)
  24. );
  25. }
  26. public function testGetBuilderForNotFound(): void {
  27. $mailModel = $this->getMockBuilder(MailerModelInterface::class)->getMock();
  28. $builder1 = $this->getMockBuilder(BuilderInterface::class)->getMock();
  29. $builder1->expects(self::once())->method('support')->with($mailModel)->willReturn(false);
  30. $builder2 = $this->getMockBuilder(BuilderInterface::class)->getMock();
  31. $builder2->expects(self::once())->method('support')->with($mailModel)->willReturn(false);
  32. $builderIterator = $this->getMockBuilder(BuilderIterator::class)
  33. ->setConstructorArgs([[$builder1, $builder2]])
  34. ->setMethodsExcept(['getBuilderFor'])
  35. ->getMock();
  36. $this->expectException(\Exception::class);
  37. $builderIterator->getBuilderFor($mailModel);
  38. }
  39. }