EncoderIteratorTest.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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(): void
  8. {
  9. $mocker = $this->getMockBuilder(EncoderInterface::class);
  10. $encoder1 = $mocker->getMock();
  11. $encoder1->method('support')->willReturn(false);
  12. $encoder2 = $mocker->getMock();
  13. $encoder2->expects($this->once())->method('support')->with('pdf')->willReturn(true);
  14. $encoder3 = $mocker->getMock();
  15. $encoder3->method('support')->willReturn(false);
  16. $encoders = [$encoder1, $encoder2, $encoder3];
  17. $iterator = $this->getMockBuilder(EncoderIterator::class)
  18. ->setConstructorArgs([$encoders])
  19. ->setMethodsExcept(['getEncoderFor'])
  20. ->getMock();
  21. $actualEncoder = $iterator->getEncoderFor('pdf');
  22. $this->assertEquals($encoder2, $actualEncoder);
  23. }
  24. public function testGetEncoderForError(): void
  25. {
  26. $mocker = $this->getMockBuilder(EncoderInterface::class);
  27. $encoder1 = $mocker->getMock();
  28. $encoder1->method('support')->willReturn(false);
  29. $encoder2 = $mocker->getMock();
  30. $encoder2->method('support')->willReturn(false);
  31. $encoders = [$encoder1, $encoder2];
  32. $iterator = $this->getMockBuilder(EncoderIterator::class)
  33. ->setConstructorArgs([$encoders])
  34. ->setMethodsExcept(['getEncoderFor'])
  35. ->getMock();
  36. $this->expectException(Exception::class);
  37. $iterator->getEncoderFor('gif');
  38. }
  39. }