CallablePromisorTests::testInvoke()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 37
Code Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 37
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 25
nc 1
nop 0
1
<?php
2
3
/**
4
 * This file is part of the Cubiche/Async component.
5
 *
6
 * Copyright (c) Cubiche
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Cubiche\Core\Async\Tests\Units\Promise;
13
14
/**
15
 * Callable Promisor Test class.
16
 *
17
 * @author Karel Osorio Ramírez <[email protected]>
18
 */
19
class CallablePromisorTests extends PromisorInterfaceTestCase
20
{
21
    /**
22
     * {@inheritdoc}
23
     */
24
    protected function defaultConstructorArguments()
25
    {
26
        return array(function () {
27
            return 'foo';
28
        });
29
    }
30
31
    /**
32
     * Test __invoke.
33
     */
34
    public function testInvoke()
35
    {
36
        $this
37
            ->given(
38
                /** @var \Cubiche\Core\Async\Promise\CallablePromisor $promisor */
39
                $promisor = $this->newDefaultTestedInstance(),
40
                $onFulfilled = $this->delegateMock()
41
            )
42
            ->when(function () use ($promisor, $onFulfilled) {
43
                $promisor();
44
                $promisor->promise()->then($onFulfilled);
45
            })
46
            ->then()
47
                ->delegateCall($onFulfilled)
48
                    ->withArguments('foo')
49
                    ->once()
50
        ;
51
52
        $this
53
            ->given(
54
                $reason = new \Exception(),
55
                /** @var \Cubiche\Core\Async\Promise\CallablePromisor $promisor */
56
                $promisor = $this->newTestedInstance(function () use ($reason) {
57
                    throw $reason;
58
                }),
59
                $onRejected = $this->delegateMock()
60
            )
61
            ->when(function () use ($promisor, $onRejected) {
62
                $promisor();
63
                $promisor->promise()->then(null, $onRejected);
64
            })
65
            ->then()
66
                ->delegateCall($onRejected)
67
                    ->withArguments($reason)
68
                    ->once()
69
        ;
70
    }
71
}
72