ConditionAccessResolverTraitTest.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * @file
  4. * Contains \Drupal\Tests\Core\Condition\ConditionAccessResolverTraitTest.
  5. */
  6. namespace Drupal\Tests\Core\Condition;
  7. use Drupal\Component\Plugin\Exception\ContextException;
  8. use Drupal\Tests\UnitTestCase;
  9. /**
  10. * @coversDefaultClass \Drupal\Core\Condition\ConditionAccessResolverTrait
  11. * @group Condition
  12. */
  13. class ConditionAccessResolverTraitTest extends UnitTestCase {
  14. /**
  15. * Tests the resolveConditions() method.
  16. *
  17. * @covers ::resolveConditions
  18. *
  19. * @dataProvider providerTestResolveConditions
  20. */
  21. public function testResolveConditions($conditions, $logic, $expected) {
  22. $trait_object = new TestConditionAccessResolverTrait();
  23. $this->assertEquals($expected, $trait_object->resolveConditions($conditions, $logic));
  24. }
  25. public function providerTestResolveConditions() {
  26. $data = [];
  27. $condition_true = $this->createMock('Drupal\Core\Condition\ConditionInterface');
  28. $condition_true->expects($this->any())
  29. ->method('execute')
  30. ->will($this->returnValue(TRUE));
  31. $condition_false = $this->createMock('Drupal\Core\Condition\ConditionInterface');
  32. $condition_false->expects($this->any())
  33. ->method('execute')
  34. ->will($this->returnValue(FALSE));
  35. $condition_exception = $this->createMock('Drupal\Core\Condition\ConditionInterface');
  36. $condition_exception->expects($this->any())
  37. ->method('execute')
  38. ->will($this->throwException(new ContextException()));
  39. $condition_exception->expects($this->atLeastOnce())
  40. ->method('isNegated')
  41. ->will($this->returnValue(FALSE));
  42. $condition_negated = $this->createMock('Drupal\Core\Condition\ConditionInterface');
  43. $condition_negated->expects($this->any())
  44. ->method('execute')
  45. ->will($this->throwException(new ContextException()));
  46. $condition_negated->expects($this->atLeastOnce())
  47. ->method('isNegated')
  48. ->will($this->returnValue(TRUE));
  49. $conditions = [];
  50. $data[] = [$conditions, 'and', TRUE];
  51. $data[] = [$conditions, 'or', FALSE];
  52. $conditions = [$condition_false];
  53. $data[] = [$conditions, 'or', FALSE];
  54. $data[] = [$conditions, 'and', FALSE];
  55. $conditions = [$condition_true];
  56. $data[] = [$conditions, 'or', TRUE];
  57. $data[] = [$conditions, 'and', TRUE];
  58. $conditions = [$condition_true, $condition_false];
  59. $data[] = [$conditions, 'or', TRUE];
  60. $data[] = [$conditions, 'and', FALSE];
  61. $conditions = [$condition_exception];
  62. $data[] = [$conditions, 'or', FALSE];
  63. $data[] = [$conditions, 'and', FALSE];
  64. $conditions = [$condition_true, $condition_exception];
  65. $data[] = [$conditions, 'or', TRUE];
  66. $data[] = [$conditions, 'and', FALSE];
  67. $conditions = [$condition_exception, $condition_true];
  68. $data[] = [$conditions, 'or', TRUE];
  69. $data[] = [$conditions, 'and', FALSE];
  70. $conditions = [$condition_false, $condition_exception];
  71. $data[] = [$conditions, 'or', FALSE];
  72. $data[] = [$conditions, 'and', FALSE];
  73. $conditions = [$condition_exception, $condition_false];
  74. $data[] = [$conditions, 'or', FALSE];
  75. $data[] = [$conditions, 'and', FALSE];
  76. $conditions = [$condition_negated];
  77. $data[] = [$conditions, 'or', TRUE];
  78. $data[] = [$conditions, 'and', TRUE];
  79. $conditions = [$condition_negated, $condition_negated];
  80. $data[] = [$conditions, 'or', TRUE];
  81. $data[] = [$conditions, 'and', TRUE];
  82. return $data;
  83. }
  84. }
  85. class TestConditionAccessResolverTrait {
  86. use \Drupal\Core\Condition\ConditionAccessResolverTrait {
  87. resolveConditions as public;
  88. }
  89. }