EncoderIteratorTest.php 1.8 KB

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