EncoderIteratorTest.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Tests\Unit\Service\ServiceIterator;
  3. use App\Service\Export\Encoder\EncoderInterface;
  4. use App\Service\ServiceIterator\EncoderIterator;
  5. use Exception;
  6. use PHPUnit\Framework\TestCase;
  7. class EncoderIteratorTest extends TestCase
  8. {
  9. /**
  10. * @see EncoderIterator::getEncoderFor()
  11. */
  12. public function testGetEncoderFor(): void
  13. {
  14. $mocker = $this->getMockBuilder(EncoderInterface::class);
  15. $encoder1 = $mocker->getMock();
  16. $encoder1->method('support')->willReturn(false);
  17. $encoder2 = $mocker->getMock();
  18. $encoder2->expects($this->once())->method('support')->with('pdf')->willReturn(true);
  19. $encoder3 = $mocker->getMock();
  20. $encoder3->method('support')->willReturn(false);
  21. $encoders = [$encoder1, $encoder2, $encoder3];
  22. $iterator = $this->getMockBuilder(EncoderIterator::class)
  23. ->setConstructorArgs([$encoders])
  24. ->setMethodsExcept(['getEncoderFor'])
  25. ->getMock();
  26. $actualEncoder = $iterator->getEncoderFor('pdf');
  27. $this->assertEquals($encoder2, $actualEncoder);
  28. }
  29. /**
  30. * @see EncoderIterator::getEncoderFor()
  31. */
  32. public function testGetEncoderForError(): void
  33. {
  34. $mocker = $this->getMockBuilder(EncoderInterface::class);
  35. $encoder1 = $mocker->getMock();
  36. $encoder1->method('support')->willReturn(false);
  37. $encoder2 = $mocker->getMock();
  38. $encoder2->method('support')->willReturn(false);
  39. $encoders = [$encoder1, $encoder2];
  40. $iterator = $this->getMockBuilder(EncoderIterator::class)
  41. ->setConstructorArgs([$encoders])
  42. ->setMethodsExcept(['getEncoderFor'])
  43. ->getMock();
  44. $this->expectException(Exception::class);
  45. $iterator->getEncoderFor('gif');
  46. }
  47. }