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 / ComplexConditionSetTest.php

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

146 lines 4.6 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 namespace unit;
6
7 use Give\Vendors\StellarWP\FieldConditions\ComplexConditionSet;
8 use Give\Vendors\StellarWP\FieldConditions\Contracts\Condition;
9 use Give\Vendors\StellarWP\FieldConditions\Tests\TestCase;
10
11 class ComplexConditionSetTest extends TestCase
12 {
13 /**
14 * @since 1.0.0
15 */
16 public function testShouldRunAndPassConditionsWithLogicalAnd()
17 {
18 $condition1 = $this->createMock(Condition::class);
19 $condition1->method('passes')->with([])->willReturn(true);
20 $condition1->method('getLogicalOperator')->willReturn('and');
21
22 $condition2 = $this->createMock(Condition::class);
23 $condition2->method('passes')->with([])->willReturn(true);
24 $condition2->method('getLogicalOperator')->willReturn('and');
25
26 $conditionSet = new ComplexConditionSet($condition1, $condition2);
27
28 self::assertTrue($conditionSet->passes([]));
29 }
30
31 /**
32 * @since 1.0.0
33 */
34 public function testShouldRunAndPassConditionsWithLogicalOr()
35 {
36 $condition1 = $this->createMock(Condition::class);
37 $condition1->method('passes')->with([])->willReturn(true);
38 $condition1->method('getLogicalOperator')->willReturn('or');
39
40 $condition2 = $this->createMock(Condition::class);
41 $condition2->method('passes')->with([])->willReturn(false);
42 $condition2->method('getLogicalOperator')->willReturn('or');
43
44 $conditionSet = new ComplexConditionSet($condition1, $condition2);
45
46 self::assertTrue($conditionSet->passes([]));
47 }
48
49 public function testShouldRunAndFailConditionsWithLogicalAnd()
50 {
51 $condition1 = $this->createMock(Condition::class);
52 $condition1->method('passes')->with([])->willReturn(true);
53 $condition1->method('getLogicalOperator')->willReturn('and');
54
55 $condition2 = $this->createMock(Condition::class);
56 $condition2->method('passes')->with([])->willReturn(false);
57 $condition2->method('getLogicalOperator')->willReturn('and');
58
59 $conditionSet = new ComplexConditionSet($condition1, $condition2);
60
61 self::assertFalse($conditionSet->passes([]));
62 }
63
64 /**
65 * @since 1.0.0
66 */
67 public function testShouldRunAndFailConditionsWithLogicalOr()
68 {
69 $condition1 = $this->createMock(Condition::class);
70 $condition1->method('passes')->with([])->willReturn(false);
71 $condition1->method('getLogicalOperator')->willReturn('and');
72
73 $condition2 = $this->createMock(Condition::class);
74 $condition2->method('passes')->with([])->willReturn(false);
75 $condition2->method('getLogicalOperator')->willReturn('or');
76
77 $conditionSet = new ComplexConditionSet($condition1, $condition2);
78
79 self::assertFalse($conditionSet->passes([]));
80 }
81
82 /**
83 * @since 1.0.0
84 */
85 public function testShouldReturnConditions()
86 {
87 $condition1 = $this->createMock(Condition::class);
88 $condition2 = $this->createMock(Condition::class);
89
90 $conditionSet = new ComplexConditionSet($condition1, $condition2);
91
92 self::assertSame([$condition1, $condition2], $conditionSet->getConditions());
93 }
94
95 /**
96 * @since 1.0.0
97 */
98 public function testShouldAddConditions()
99 {
100 $condition1 = $this->createMock(Condition::class);
101 $condition2 = $this->createMock(Condition::class);
102
103 $conditionSet = new ComplexConditionSet($condition1);
104 $conditionSet->append($condition2);
105
106 self::assertSame([$condition1, $condition2], $conditionSet->getConditions());
107 }
108
109 /**
110 * @since 1.0.0
111 */
112 public function testShouldReturnJsonSerializedConditions()
113 {
114 $condition1 = $this->createMock(Condition::class);
115 $condition1->method('jsonSerialize')->willReturn(['foo' => 'bar']);
116
117 $condition2 = $this->createMock(Condition::class);
118 $condition2->method('jsonSerialize')->willReturn(['bar' => 'baz']);
119
120 $conditionSet = new ComplexConditionSet($condition1, $condition2);
121
122 self::assertSame(
123 [
124 ['foo' => 'bar'],
125 ['bar' => 'baz'],
126 ],
127 $conditionSet->jsonSerialize()
128 );
129 }
130
131 public function testShouldAllowIterationOverConditions()
132 {
133 $condition1 = $this->createMock(Condition::class);
134 $condition2 = $this->createMock(Condition::class);
135
136 $conditionSet = new ComplexConditionSet($condition1, $condition2);
137
138 $conditions = [];
139 foreach ($conditionSet as $condition) {
140 $conditions[] = $condition;
141 }
142
143 self::assertSame([$condition1, $condition2], $conditions);
144 }
145 }
146