5 * Contains \Drupal\Tests\Core\Condition\ConditionAccessResolverTraitTest.
8 namespace Drupal\Tests\Core\Condition;
10 use Drupal\Component\Plugin\Exception\ContextException;
11 use Drupal\Tests\UnitTestCase;
14 * @coversDefaultClass \Drupal\Core\Condition\ConditionAccessResolverTrait
17 class ConditionAccessResolverTraitTest extends UnitTestCase {
20 * Tests the resolveConditions() method.
22 * @covers ::resolveConditions
24 * @dataProvider providerTestResolveConditions
26 public function testResolveConditions($conditions, $logic, $expected) {
27 $trait_object = new TestConditionAccessResolverTrait();
28 $this->assertEquals($expected, $trait_object->resolveConditions($conditions, $logic));
31 public function providerTestResolveConditions() {
34 $condition_true = $this->getMock('Drupal\Core\Condition\ConditionInterface');
35 $condition_true->expects($this->any())
37 ->will($this->returnValue(TRUE));
38 $condition_false = $this->getMock('Drupal\Core\Condition\ConditionInterface');
39 $condition_false->expects($this->any())
41 ->will($this->returnValue(FALSE));
42 $condition_exception = $this->getMock('Drupal\Core\Condition\ConditionInterface');
43 $condition_exception->expects($this->any())
45 ->will($this->throwException(new ContextException()));
46 $condition_exception->expects($this->atLeastOnce())
48 ->will($this->returnValue(FALSE));
49 $condition_negated = $this->getMock('Drupal\Core\Condition\ConditionInterface');
50 $condition_negated->expects($this->any())
52 ->will($this->throwException(new ContextException()));
53 $condition_negated->expects($this->atLeastOnce())
55 ->will($this->returnValue(TRUE));
58 $data[] = [$conditions, 'and', TRUE];
59 $data[] = [$conditions, 'or', FALSE];
61 $conditions = [$condition_false];
62 $data[] = [$conditions, 'or', FALSE];
63 $data[] = [$conditions, 'and', FALSE];
65 $conditions = [$condition_true];
66 $data[] = [$conditions, 'or', TRUE];
67 $data[] = [$conditions, 'and', TRUE];
69 $conditions = [$condition_true, $condition_false];
70 $data[] = [$conditions, 'or', TRUE];
71 $data[] = [$conditions, 'and', FALSE];
73 $conditions = [$condition_exception];
74 $data[] = [$conditions, 'or', FALSE];
75 $data[] = [$conditions, 'and', FALSE];
77 $conditions = [$condition_true, $condition_exception];
78 $data[] = [$conditions, 'or', TRUE];
79 $data[] = [$conditions, 'and', FALSE];
81 $conditions = [$condition_exception, $condition_true];
82 $data[] = [$conditions, 'or', TRUE];
83 $data[] = [$conditions, 'and', FALSE];
85 $conditions = [$condition_false, $condition_exception];
86 $data[] = [$conditions, 'or', FALSE];
87 $data[] = [$conditions, 'and', FALSE];
89 $conditions = [$condition_exception, $condition_false];
90 $data[] = [$conditions, 'or', FALSE];
91 $data[] = [$conditions, 'and', FALSE];
93 $conditions = [$condition_negated];
94 $data[] = [$conditions, 'or', TRUE];
95 $data[] = [$conditions, 'and', TRUE];
97 $conditions = [$condition_negated, $condition_negated];
98 $data[] = [$conditions, 'or', TRUE];
99 $data[] = [$conditions, 'and', TRUE];
105 class TestConditionAccessResolverTrait {
106 use \Drupal\Core\Condition\ConditionAccessResolverTrait {
107 resolveConditions as public;