123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- namespace React\Promise;
- use React\Promise\PromiseAdapter\CallbackPromiseAdapter;
- class LazyPromiseTest extends TestCase
- {
- use PromiseTest\FullTestTrait;
- public function getPromiseTestAdapter(callable $canceller = null)
- {
- $d = new Deferred($canceller);
- $factory = function () use ($d) {
- return $d->promise();
- };
- return new CallbackPromiseAdapter([
- 'promise' => function () use ($factory) {
- return new LazyPromise($factory);
- },
- 'resolve' => [$d, 'resolve'],
- 'reject' => [$d, 'reject'],
- 'notify' => [$d, 'progress'],
- 'settle' => [$d, 'resolve'],
- ]);
- }
- /** @test */
- public function shouldNotCallFactoryIfThenIsNotInvoked()
- {
- $factory = $this->createCallableMock();
- $factory
- ->expects($this->never())
- ->method('__invoke');
- new LazyPromise($factory);
- }
- /** @test */
- public function shouldCallFactoryIfThenIsInvoked()
- {
- $factory = $this->createCallableMock();
- $factory
- ->expects($this->once())
- ->method('__invoke');
- $p = new LazyPromise($factory);
- $p->then();
- }
- /** @test */
- public function shouldReturnPromiseFromFactory()
- {
- $factory = $this->createCallableMock();
- $factory
- ->expects($this->once())
- ->method('__invoke')
- ->will($this->returnValue(new FulfilledPromise(1)));
- $onFulfilled = $this->createCallableMock();
- $onFulfilled
- ->expects($this->once())
- ->method('__invoke')
- ->with($this->identicalTo(1));
- $p = new LazyPromise($factory);
- $p->then($onFulfilled);
- }
- /** @test */
- public function shouldReturnPromiseIfFactoryReturnsNull()
- {
- $factory = $this->createCallableMock();
- $factory
- ->expects($this->once())
- ->method('__invoke')
- ->will($this->returnValue(null));
- $p = new LazyPromise($factory);
- $this->assertInstanceOf('React\\Promise\\PromiseInterface', $p->then());
- }
- /** @test */
- public function shouldReturnRejectedPromiseIfFactoryThrowsException()
- {
- $exception = new \Exception();
- $factory = $this->createCallableMock();
- $factory
- ->expects($this->once())
- ->method('__invoke')
- ->will($this->throwException($exception));
- $onRejected = $this->createCallableMock();
- $onRejected
- ->expects($this->once())
- ->method('__invoke')
- ->with($this->identicalTo($exception));
- $p = new LazyPromise($factory);
- $p->then($this->expectCallableNever(), $onRejected);
- }
- }
|