EncoderIteratorTest.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. use App\Service\Export\Encoder\EncoderInterface;
  3. use App\Service\ServiceIterator\EncoderIterator;
  4. use PHPUnit\Framework\TestCase;
  5. class EncoderIteratorTest extends TestCase
  6. {
  7. public function testGetEncoderFor() {
  8. $mocker = $this->getMockBuilder(EncoderInterface::class);
  9. $encoder1 = $mocker->getMock();
  10. $encoder1->method('support')->willReturn(false);
  11. $encoder2 = $mocker->getMock();
  12. $encoder2->expects($this->once())->method('support')->with('pdf')->willReturn(true);
  13. $encoder3 = $mocker->getMock();
  14. $encoder3->method('support')->willReturn(false);
  15. $encoders = [$encoder1, $encoder2, $encoder3];
  16. $iterator = new EncoderIterator($encoders);
  17. $actualEncoder = $iterator->getEncoderFor('pdf');
  18. $this->assertEquals($encoder2, $actualEncoder);
  19. }
  20. public function testGetEncoderForError() {
  21. $mocker = $this->getMockBuilder(EncoderInterface::class);
  22. $encoder1 = $mocker->getMock();
  23. $encoder1->method('support')->willReturn(false);
  24. $encoder2 = $mocker->getMock();
  25. $encoder2->method('support')->willReturn(false);
  26. $encoders = [$encoder1, $encoder2];
  27. $iterator = new EncoderIterator($encoders);
  28. $this->expectException(Exception::class);
  29. $iterator->getEncoderFor('gif');
  30. }
  31. }