PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.18.0
GiveWP – Donation Plugin and Fundraising Platform v4.18.0
4.18.0 4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 All 257 releases
give / vendor / vendor-prefixed / stellarwp / field-conditions / tests / unit / NestedConditionTest.php

NestedConditionTest.php in GiveWP – Donation Plugin and Fundraising Platform 4.18.0, at vendor/vendor-prefixed/stellarwp/field-conditions/tests/unit/NestedConditionTest.php

129 lines 3.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 use Give\Vendors\StellarWP\FieldConditions\Contracts\Condition;
6 use Give\Vendors\StellarWP\FieldConditions\NestedCondition;
7 use Give\Vendors\StellarWP\FieldConditions\Tests\TestCase;
8
9 class NestedConditionTest extends TestCase
10 {
11 /**
12 * @since 1.0.0
13 */
14 public function testShouldRunAndPassConditionsWithLogicalAnd()
15 {
16 $values = ['foo' => 'bar'];
17
18 $condition1 = $this->createMock(Condition::class);
19 $condition1->method('passes')->with($values)->willReturn(true);
20 $condition1->method('getLogicalOperator')->willReturn('and');
21
22 $condition2 = $this->createMock(Condition::class);
23 $condition2->method('passes')->with($values)->willReturn(true);
24 $condition2->method('getLogicalOperator')->willReturn('and');
25
26 $condition = new NestedCondition([$condition1, $condition2], 'and');
27
28 $this->assertTrue($condition->passes($values));
29 }
30
31 /**
32 * @since 1.0.0
33 */
34 public function testShouldRunAndPassConditionsWithLogicalOr()
35 {
36 $values = ['foo' => 'bar'];
37
38 $condition1 = $this->createMock(Condition::class);
39 $condition1->method('passes')->with($values)->willReturn(true);
40 $condition1->method('getLogicalOperator')->willReturn('and');
41
42 $condition2 = $this->createMock(Condition::class);
43 $condition2->method('passes')->with($values)->willReturn(false);
44 $condition2->method('getLogicalOperator')->willReturn('or');
45
46 $condition = new NestedCondition([$condition1, $condition2], 'and');
47
48 $this->assertTrue($condition->passes($values));
49 }
50
51 /**
52 * @since 1.0.0
53 */
54 public function testShouldRunAndFailConditionsWithLogicalAnd()
55 {
56 $values = ['foo' => 'bar'];
57
58 $condition1 = $this->createMock(Condition::class);
59 $condition1->method('passes')->with($values)->willReturn(true);
60 $condition1->method('getLogicalOperator')->willReturn('and');
61
62 $condition2 = $this->createMock(Condition::class);
63 $condition2->method('passes')->with($values)->willReturn(false);
64 $condition2->method('getLogicalOperator')->willReturn('and');
65
66 $condition = new NestedCondition([$condition1, $condition2], 'and');
67
68 self::assertTrue($condition->fails($values));
69 }
70
71 /**
72 * @since 1.0.0
73 */
74 public function testShouldRunAndFailConditionsWithLogicalOr()
75 {
76 $values = ['foo' => 'bar'];
77
78 $condition1 = $this->createMock(Condition::class);
79 $condition1->method('passes')->with($values)->willReturn(false);
80 $condition1->method('getLogicalOperator')->willReturn('and');
81
82 $condition2 = $this->createMock(Condition::class);
83 $condition2->method('passes')->with($values)->willReturn(false);
84 $condition2->method('getLogicalOperator')->willReturn('and');
85
86 $condition = new NestedCondition([$condition1, $condition2], 'and');
87
88 self::assertTrue($condition->fails($values));
89 }
90
91 /**
92 * @since 1.0.0
93 */
94 public function testShouldGetLogicalOperator()
95 {
96 $condition = new NestedCondition([], 'and');
97
98 $this->assertSame('and', $condition->getLogicalOperator());
99 }
100
101 /**
102 * @since 1.0.0
103 */
104 public function testShouldReturnSerializedCondition()
105 {
106 $condition = new NestedCondition([], 'and');
107
108 $this->assertSame(
109 [
110 'type' => NestedCondition::TYPE,
111 'conditions' => [],
112 'boolean' => 'and',
113 ],
114 $condition->jsonSerialize()
115 );
116 }
117
118 /**
119 * @since 1.0.0
120 */
121 public function testShouldThrowExceptionWhenLogicalOperatorIsInvalid()
122 {
123 $this->expectException(InvalidArgumentException::class);
124 $this->expectExceptionMessage('Invalid logical operator');
125
126 new NestedCondition([], 'invalid');
127 }
128 }
129