Viewing file: FunctionResolveTest.php (4.04 KB) -rwxrwxr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace React\Promise;
class FunctionResolveTest extends TestCase { /** @test */ public function shouldResolveAnImmediateValue() { $expected = 123;
$mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo($expected));
resolve($expected) ->then( $mock, $this->expectCallableNever() ); }
/** @test */ public function shouldResolveAFulfilledPromise() { $expected = 123;
$resolved = new FulfilledPromise($expected);
$mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo($expected));
resolve($resolved) ->then( $mock, $this->expectCallableNever() ); }
/** @test */ public function shouldResolveAThenable() { $thenable = new SimpleFulfilledTestThenable();
$mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo('foo'));
resolve($thenable) ->then( $mock, $this->expectCallableNever() ); }
/** @test */ public function shouldResolveACancellableThenable() { $thenable = new SimpleTestCancellableThenable();
$promise = resolve($thenable); $promise->cancel();
$this->assertTrue($thenable->cancelCalled); }
/** @test */ public function shouldRejectARejectedPromise() { $expected = 123;
$resolved = new RejectedPromise($expected);
$mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo($expected));
resolve($resolved) ->then( $this->expectCallableNever(), $mock ); }
/** @test */ public function shouldSupportDeepNestingInPromiseChains() { $d = new Deferred(); $d->resolve(false);
$result = resolve(resolve($d->promise()->then(function ($val) { $d = new Deferred(); $d->resolve($val);
$identity = function ($val) { return $val; };
return resolve($d->promise()->then($identity))->then( function ($val) { return !$val; } ); })));
$mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(true));
$result->then($mock); }
/** @test */ public function shouldSupportVeryDeepNestedPromises() { $deferreds = [];
// @TODO Increase count once global-queue is merged for ($i = 0; $i < 10; $i++) { $deferreds[] = $d = new Deferred(); $p = $d->promise();
$last = $p; for ($j = 0; $j < 10; $j++) { $last = $last->then(function($result) { return $result; }); } }
$p = null; foreach ($deferreds as $d) { if ($p) { $d->resolve($p); }
$p = $d->promise(); }
$deferreds[0]->resolve(true);
$mock = $this->createCallableMock(); $mock ->expects($this->once()) ->method('__invoke') ->with($this->identicalTo(true));
$deferreds[0]->promise()->then($mock); }
/** @test */ public function returnsExtendePromiseForSimplePromise() { $promise = $this ->getMockBuilder('React\Promise\PromiseInterface') ->getMock();
$this->assertInstanceOf('React\Promise\ExtendedPromiseInterface', resolve($promise)); } }
|