forked from reactphp/promise
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPromiseTest.php
More file actions
104 lines (84 loc) · 2.45 KB
/
PromiseTest.php
File metadata and controls
104 lines (84 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
namespace React\Tests\Promise;
use React\Promise\Promise;
/**
* @group Promise
*/
class PromiseTest extends TestCase
{
/** @test */
public function shouldThrowIfResolverIsNotACallable()
{
$this->setExpectedException('InvalidArgumentException');
new Promise(null);
}
/** @test */
public function shouldRejectIfResolverThrows()
{
$e = new \Exception();
$promise = new Promise(function() use($e) {
throw $e;
});
$mock = $this->createCallableMock();
$mock
->expects($this->once())
->method('__invoke')
->with($this->identicalTo($e));
$promise->then($this->expectCallableNever(), $mock);
}
/** @test */
public function shouldResolve()
{
$promise = new Promise(function($resolve) {
$resolve(1);
});
$mock = $this->createCallableMock();
$mock
->expects($this->once())
->method('__invoke')
->with($this->identicalTo(1));
$promise->then($mock);
}
/** @test */
public function shouldReject()
{
$promise = new Promise(function($resolve, $reject) {
$reject(1);
});
$mock = $this->createCallableMock();
$mock
->expects($this->once())
->method('__invoke')
->with($this->identicalTo(1));
$promise->then($this->expectCallableNever(), $mock);
}
/** @test */
public function shouldProgress()
{
$promise = new Promise(function($resolve, $reject, $progress) use (&$notify) {
$notify = $progress;
});
$mock = $this->createCallableMock();
$mock
->expects($this->once())
->method('__invoke')
->with($this->identicalTo(1));
$promise->then($this->expectCallableNever(), $this->expectCallableNever(), $mock);
$notify(1);
}
/** @test */
public function shouldInvokeCancellationHandlerAndStayPendingWhenCallingCancel()
{
$promise = new Promise(function() { }, $this->expectCallableOnce());
$promise->cancel();
$promise->then($this->expectCallableNever(), $this->expectCallableNever());
}
/**
* @test
*/
public function shouldThrowIfCancellerIsNotACallable()
{
$this->setExpectedException('InvalidArgumentException');
new Promise(function () { }, false);
}
}