Skip to content

Commit 05b33e2

Browse files
committed
Run tests against real promises instead of PromiseInterface mocks
1 parent f5b9d6a commit 05b33e2

7 files changed

Lines changed: 42 additions & 134 deletions

tests/FunctionAnyTest.php

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -98,21 +98,10 @@ public function shouldNotRelyOnArryIndexesWhenUnwrappingToASingleResolutionValue
9898
/** @test */
9999
public function shouldCancelInputArrayPromises()
100100
{
101-
$mock1 = $this
102-
->getMockBuilder('React\Promise\PromiseInterface')
103-
->getMock();
104-
$mock1
105-
->expects($this->once())
106-
->method('cancel');
107-
108-
$mock2 = $this
109-
->getMockBuilder('React\Promise\PromiseInterface')
110-
->getMock();
111-
$mock2
112-
->expects($this->once())
113-
->method('cancel');
101+
$promise1 = new Promise(function() {}, $this->expectCallableOnce());
102+
$promise2 = new Promise(function() {}, $this->expectCallableOnce());
114103

115-
any([$mock1, $mock2])->cancel();
104+
any([$promise1, $promise2])->cancel();
116105
}
117106

118107
/** @test */
@@ -127,13 +116,8 @@ public function shouldNotCancelOtherPendingInputArrayPromisesIfOnePromiseFulfill
127116
$deferred = New Deferred($mock);
128117
$deferred->resolve();
129118

130-
$mock2 = $this
131-
->getMockBuilder('React\Promise\PromiseInterface')
132-
->getMock();
133-
$mock2
134-
->expects($this->never())
135-
->method('cancel');
119+
$promise2 = new Promise(function() {}, $this->expectCallableNever());
136120

137-
some([$deferred->promise(), $mock2], 1)->cancel();
121+
some([$deferred->promise(), $promise2], 1)->cancel();
138122
}
139123
}

tests/FunctionMapTest.php

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -115,28 +115,11 @@ public function shouldRejectWhenInputContainsRejection()
115115
/** @test */
116116
public function shouldCancelInputArrayPromises()
117117
{
118-
$mock1 = $this
119-
->getMockBuilder('React\Promise\PromiseInterface')
120-
->getMock();
121-
$mock1
122-
->method('then')
123-
->will($this->returnSelf());
124-
$mock1
125-
->expects($this->once())
126-
->method('cancel');
127-
128-
$mock2 = $this
129-
->getMockBuilder('React\Promise\PromiseInterface')
130-
->getMock();
131-
$mock2
132-
->method('then')
133-
->will($this->returnSelf());
134-
$mock2
135-
->expects($this->once())
136-
->method('cancel');
118+
$promise1 = new Promise(function() {}, $this->expectCallableOnce());
119+
$promise2 = new Promise(function() {}, $this->expectCallableOnce());
137120

138121
map(
139-
[$mock1, $mock2],
122+
[$promise1, $promise2],
140123
$this->mapper()
141124
)->cancel();
142125
}

tests/FunctionRaceTest.php

Lines changed: 9 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -89,62 +89,31 @@ public function shouldRejectIfFirstSettledPromiseRejects()
8989
/** @test */
9090
public function shouldCancelInputArrayPromises()
9191
{
92-
$mock1 = $this
93-
->getMockBuilder('React\Promise\PromiseInterface')
94-
->getMock();
95-
$mock1
96-
->expects($this->once())
97-
->method('cancel');
98-
99-
$mock2 = $this
100-
->getMockBuilder('React\Promise\PromiseInterface')
101-
->getMock();
102-
$mock2
103-
->expects($this->once())
104-
->method('cancel');
92+
$promise1 = new Promise(function() {}, $this->expectCallableOnce());
93+
$promise2 = new Promise(function() {}, $this->expectCallableOnce());
10594

106-
race([$mock1, $mock2])->cancel();
95+
race([$promise1, $promise2])->cancel();
10796
}
10897

10998
/** @test */
11099
public function shouldNotCancelOtherPendingInputArrayPromisesIfOnePromiseFulfills()
111100
{
112-
$mock = $this->createCallableMock();
113-
$mock
114-
->expects($this->never())
115-
->method('__invoke');
116-
117-
$deferred = New Deferred($mock);
101+
$deferred = new Deferred($this->expectCallableNever());
118102
$deferred->resolve();
119103

120-
$mock2 = $this
121-
->getMockBuilder('React\Promise\PromiseInterface')
122-
->getMock();
123-
$mock2
124-
->expects($this->never())
125-
->method('cancel');
104+
$promise2 = new Promise(function() {}, $this->expectCallableNever());
126105

127-
race([$deferred->promise(), $mock2])->cancel();
106+
race([$deferred->promise(), $promise2])->cancel();
128107
}
129108

130109
/** @test */
131110
public function shouldNotCancelOtherPendingInputArrayPromisesIfOnePromiseRejects()
132111
{
133-
$mock = $this->createCallableMock();
134-
$mock
135-
->expects($this->never())
136-
->method('__invoke');
137-
138-
$deferred = New Deferred($mock);
112+
$deferred = new Deferred($this->expectCallableNever());
139113
$deferred->reject();
140114

141-
$mock2 = $this
142-
->getMockBuilder('React\Promise\PromiseInterface')
143-
->getMock();
144-
$mock2
145-
->expects($this->never())
146-
->method('cancel');
115+
$promise2 = new Promise(function() {}, $this->expectCallableNever());
147116

148-
race([$deferred->promise(), $mock2])->cancel();
117+
race([$deferred->promise(), $promise2])->cancel();
149118
}
150119
}

tests/FunctionReduceTest.php

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -259,28 +259,11 @@ public function shouldProvideCorrectBasisValue()
259259
/** @test */
260260
public function shouldCancelInputArrayPromises()
261261
{
262-
$mock1 = $this
263-
->getMockBuilder('React\Promise\PromiseInterface')
264-
->getMock();
265-
$mock1
266-
->method('then')
267-
->will($this->returnSelf());
268-
$mock1
269-
->expects($this->once())
270-
->method('cancel');
271-
272-
$mock2 = $this
273-
->getMockBuilder('React\Promise\PromiseInterface')
274-
->getMock();
275-
$mock2
276-
->method('then')
277-
->will($this->returnSelf());
278-
$mock2
279-
->expects($this->once())
280-
->method('cancel');
262+
$promise1 = new Promise(function() {}, $this->expectCallableOnce());
263+
$promise2 = new Promise(function() {}, $this->expectCallableOnce());
281264

282265
reduce(
283-
[$mock1, $mock2],
266+
[$promise1, $promise2],
284267
$this->plus(),
285268
1
286269
)->cancel();

tests/FunctionSomeTest.php

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -125,21 +125,10 @@ public function shouldResolveWithEmptyArrayIfHowManyIsLessThanOne()
125125
/** @test */
126126
public function shouldCancelInputArrayPromises()
127127
{
128-
$mock1 = $this
129-
->getMockBuilder('React\Promise\PromiseInterface')
130-
->getMock();
131-
$mock1
132-
->expects($this->once())
133-
->method('cancel');
134-
135-
$mock2 = $this
136-
->getMockBuilder('React\Promise\PromiseInterface')
137-
->getMock();
138-
$mock2
139-
->expects($this->once())
140-
->method('cancel');
128+
$promise1 = new Promise(function() {}, $this->expectCallableOnce());
129+
$promise2 = new Promise(function() {}, $this->expectCallableOnce());
141130

142-
some([$mock1, $mock2], 1)->cancel();
131+
some([$promise1, $promise2], 1)->cancel();
143132
}
144133

145134
/** @test */
@@ -153,14 +142,9 @@ public function shouldCancelOtherPendingInputArrayPromisesIfEnoughPromisesFulfil
153142
$deferred = New Deferred($mock);
154143
$deferred->resolve();
155144

156-
$mock2 = $this
157-
->getMockBuilder('React\Promise\PromiseInterface')
158-
->getMock();
159-
$mock2
160-
->expects($this->never())
161-
->method('cancel');
145+
$promise2 = new Promise(function() {}, $this->expectCallableNever());
162146

163-
some([$deferred->promise(), $mock2], 1);
147+
some([$deferred->promise(), $promise2], 1);
164148
}
165149

166150
/** @test */
@@ -174,13 +158,8 @@ public function shouldNotCancelOtherPendingInputArrayPromisesIfEnoughPromisesRej
174158
$deferred = New Deferred($mock);
175159
$deferred->reject();
176160

177-
$mock2 = $this
178-
->getMockBuilder('React\Promise\PromiseInterface')
179-
->getMock();
180-
$mock2
181-
->expects($this->never())
182-
->method('cancel');
161+
$promise2 = new Promise(function() {}, $this->expectCallableNever());
183162

184-
some([$deferred->promise(), $mock2], 2);
163+
some([$deferred->promise(), $promise2], 2);
185164
}
186165
}

tests/Internal/CancellationQueueTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,16 @@ public function rethrowsExceptionsThrownFromCancel()
7979
{
8080
$this->setExpectedException('\Exception', 'test');
8181

82-
$mock = $this
83-
->getMockBuilder('React\Promise\PromiseInterface')
84-
->getMock();
82+
$mock = $this->createCallableMock();
8583
$mock
8684
->expects($this->once())
87-
->method('cancel')
85+
->method('__invoke')
8886
->will($this->throwException(new \Exception('test')));
8987

88+
$promise = new SimpleTestCancellableThenable($mock);
89+
9090
$cancellationQueue = new CancellationQueue();
91-
$cancellationQueue->enqueue($mock);
91+
$cancellationQueue->enqueue($promise);
9292

9393
$cancellationQueue();
9494
}

tests/fixtures/SimpleTestCancellableThenable.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
class SimpleTestCancellableThenable
66
{
77
public $cancelCalled = false;
8+
public $onCancel;
9+
10+
public function __construct(callable $onCancel = null)
11+
{
12+
$this->onCancel = $onCancel;
13+
}
814

915
public function then(callable $onFulfilled = null, callable $onRejected = null)
1016
{
@@ -14,5 +20,9 @@ public function then(callable $onFulfilled = null, callable $onRejected = null)
1420
public function cancel()
1521
{
1622
$this->cancelCalled = true;
23+
24+
if (is_callable($this->onCancel)) {
25+
call_user_func($this->onCancel);
26+
}
1727
}
1828
}

0 commit comments

Comments
 (0)