You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.8 KiB
114 lines
2.8 KiB
<?php |
|
|
|
namespace React\Promise; |
|
|
|
class FunctionAllTest extends TestCase |
|
{ |
|
/** @test */ |
|
public function shouldResolveEmptyInput() |
|
{ |
|
$mock = $this->createCallableMock(); |
|
$mock |
|
->expects($this->once()) |
|
->method('__invoke') |
|
->with($this->identicalTo([])); |
|
|
|
all([]) |
|
->then($mock); |
|
} |
|
|
|
/** @test */ |
|
public function shouldResolveValuesArray() |
|
{ |
|
$mock = $this->createCallableMock(); |
|
$mock |
|
->expects($this->once()) |
|
->method('__invoke') |
|
->with($this->identicalTo([1, 2, 3])); |
|
|
|
all([1, 2, 3]) |
|
->then($mock); |
|
} |
|
|
|
/** @test */ |
|
public function shouldResolvePromisesArray() |
|
{ |
|
$mock = $this->createCallableMock(); |
|
$mock |
|
->expects($this->once()) |
|
->method('__invoke') |
|
->with($this->identicalTo([1, 2, 3])); |
|
|
|
all([resolve(1), resolve(2), resolve(3)]) |
|
->then($mock); |
|
} |
|
|
|
/** @test */ |
|
public function shouldResolveSparseArrayInput() |
|
{ |
|
$mock = $this->createCallableMock(); |
|
$mock |
|
->expects($this->once()) |
|
->method('__invoke') |
|
->with($this->identicalTo([null, 1, null, 1, 1])); |
|
|
|
all([null, 1, null, 1, 1]) |
|
->then($mock); |
|
} |
|
|
|
/** @test */ |
|
public function shouldRejectIfAnyInputPromiseRejects() |
|
{ |
|
$mock = $this->createCallableMock(); |
|
$mock |
|
->expects($this->once()) |
|
->method('__invoke') |
|
->with($this->identicalTo(2)); |
|
|
|
all([resolve(1), reject(2), resolve(3)]) |
|
->then($this->expectCallableNever(), $mock); |
|
} |
|
|
|
/** @test */ |
|
public function shouldAcceptAPromiseForAnArray() |
|
{ |
|
$mock = $this->createCallableMock(); |
|
$mock |
|
->expects($this->once()) |
|
->method('__invoke') |
|
->with($this->identicalTo([1, 2, 3])); |
|
|
|
all(resolve([1, 2, 3])) |
|
->then($mock); |
|
} |
|
|
|
/** @test */ |
|
public function shouldResolveToEmptyArrayWhenInputPromiseDoesNotResolveToArray() |
|
{ |
|
$mock = $this->createCallableMock(); |
|
$mock |
|
->expects($this->once()) |
|
->method('__invoke') |
|
->with($this->identicalTo([])); |
|
|
|
all(resolve(1)) |
|
->then($mock); |
|
} |
|
|
|
/** @test */ |
|
public function shouldPreserveTheOrderOfArrayWhenResolvingAsyncPromises() |
|
{ |
|
$mock = $this->createCallableMock(); |
|
$mock |
|
->expects($this->once()) |
|
->method('__invoke') |
|
->with($this->identicalTo([1, 2, 3])); |
|
|
|
$deferred = new Deferred(); |
|
|
|
all([resolve(1), $deferred->promise(), resolve(3)]) |
|
->then($mock); |
|
|
|
$deferred->resolve(2); |
|
} |
|
}
|
|
|