CurrentAccessExtensionIteratorTest.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. use App\Doctrine\Access\AccessExtensionInterface;
  3. use App\Service\ServiceIterator\CurrentAccessExtensionIterator;
  4. use Doctrine\ORM\QueryBuilder;
  5. use PHPUnit\Framework\TestCase;
  6. class CurrentAccessExtensionIteratorTest extends TestCase
  7. {
  8. public function testAddWhere() {
  9. $queryBuilder = $this->getMockBuilder(QueryBuilder::class)
  10. ->disableOriginalConstructor()
  11. ->getMock();
  12. $mocker = $this->getMockBuilder(AccessExtensionInterface::class);
  13. $ext1 = $mocker->getMock();
  14. $ext1->method('support')->willReturn(false);
  15. $ext2 = $mocker->getMock();
  16. $ext2->method('support')->with('foo')->willReturn(true);
  17. $ext2->expects($this->once())->method('addWhere')->with($queryBuilder)->willReturn(true);
  18. $ext3 = $mocker->getMock();
  19. $ext3->method('support')->willReturn(false);
  20. $extensions = [$ext1, $ext2, $ext3];
  21. $iterator = new CurrentAccessExtensionIterator($extensions);
  22. $actualExt = $iterator->addWhere($queryBuilder, 'foo');
  23. $this->assertEquals(true, $actualExt);
  24. }
  25. public function testAddWhereError() {
  26. $queryBuilder = $this->getMockBuilder(QueryBuilder::class)
  27. ->disableOriginalConstructor()
  28. ->getMock();
  29. $mocker = $this->getMockBuilder(AccessExtensionInterface::class);
  30. $ext1 = $mocker->getMock();
  31. $ext1->method('support')->willReturn(false);
  32. $ext2 = $mocker->getMock();
  33. $ext2->method('support')->willReturn(false);
  34. $extensions = [$ext1, $ext2];
  35. $iterator = new CurrentAccessExtensionIterator($extensions);
  36. $this->expectException(Exception::class);
  37. $iterator->addWhere($queryBuilder, 'foo');
  38. }
  39. }