CronjobIteratorTest.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Tests\Service\ServiceIterator;
  3. use App\Service\Cron\CronjobInterface;
  4. use App\Service\ServiceIterator\CronjobIterator;
  5. use PHPUnit\Framework\TestCase;
  6. class CronjobIteratorTest extends TestCase
  7. {
  8. public function testGetByNameExisting(): void
  9. {
  10. $cronjob1 = $this->getMockBuilder(CronjobInterface::class)->getMock();
  11. $cronjob1->expects(self::once())->method('name')->willReturn('foo');
  12. $cronjob2 = $this->getMockBuilder(CronjobInterface::class)->getMock();
  13. $cronjob2->expects(self::once())->method('name')->willReturn('bar');
  14. $cronjob3 = $this->getMockBuilder(CronjobInterface::class)->getMock();
  15. $cronjob3->expects(self::never())->method('name')->willReturn('zou');
  16. $cronjobIterator = $this->getMockBuilder(CronjobIterator::class)
  17. ->setConstructorArgs([[$cronjob1, $cronjob2, $cronjob3]])
  18. ->setMethodsExcept(['getByName'])
  19. ->getMock();
  20. $this->assertEquals(
  21. $cronjob2,
  22. $cronjobIterator->getByName('bar')
  23. );
  24. }
  25. public function testGetByNameNotExisting(): void
  26. {
  27. $cronjob1 = $this->getMockBuilder(CronjobInterface::class)->getMock();
  28. $cronjob1->expects(self::once())->method('name')->willReturn('foo');
  29. $cronjob2 = $this->getMockBuilder(CronjobInterface::class)->getMock();
  30. $cronjob2->expects(self::once())->method('name')->willReturn('bar');
  31. $cronjobIterator = $this->getMockBuilder(CronjobIterator::class)
  32. ->setConstructorArgs([[$cronjob1, $cronjob2]])
  33. ->setMethodsExcept(['getByName'])
  34. ->getMock();
  35. $this->expectException(\RuntimeException::class);
  36. $cronjobIterator->getByName('other');
  37. }
  38. public function testGetAll(): void
  39. {
  40. $cronjob1 = $this->getMockBuilder(CronjobInterface::class)->getMock();
  41. $cronjob2 = $this->getMockBuilder(CronjobInterface::class)->getMock();
  42. $cronjobIterator = $this->getMockBuilder(CronjobIterator::class)
  43. ->setConstructorArgs([[$cronjob1, $cronjob2]])
  44. ->setMethodsExcept(['getAll'])
  45. ->getMock();
  46. $this->assertEquals(
  47. [$cronjob1, $cronjob2],
  48. $cronjobIterator->getAll()
  49. );
  50. }
  51. }