From 9566525e280fb3bfea9ec99def6c5b8775fd44a7 Mon Sep 17 00:00:00 2001 From: Fran Moreno Date: Sat, 5 Mar 2022 18:42:11 +0100 Subject: [PATCH] Add tests to promises --- .../Promise/GeocoderFulfilledPromiseTest.php | 63 ++++++++++++++++++ .../Promise/GeocoderRejectedPromiseTest.php | 64 +++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 src/Plugin/Tests/Promise/GeocoderFulfilledPromiseTest.php create mode 100644 src/Plugin/Tests/Promise/GeocoderRejectedPromiseTest.php diff --git a/src/Plugin/Tests/Promise/GeocoderFulfilledPromiseTest.php b/src/Plugin/Tests/Promise/GeocoderFulfilledPromiseTest.php new file mode 100644 index 000000000..0330cd664 --- /dev/null +++ b/src/Plugin/Tests/Promise/GeocoderFulfilledPromiseTest.php @@ -0,0 +1,63 @@ +createStub(Collection::class); + $promise = new GeocoderFulfilledPromise($collection); + + $returnPromise = $promise->then(function (Collection $collection) { + return $collection; + }); + + $this->assertInstanceOf(GeocoderFulfilledPromise::class, $returnPromise); + $this->assertSame(Promise::FULFILLED, $returnPromise->getState()); + $this->assertSame($collection, $returnPromise->wait()); + } + + public function testItReturnsARejectedPromise(): void + { + $collection = $this->createStub(Collection::class); + $promise = new GeocoderFulfilledPromise($collection); + + $returnPromise = $promise->then(function () { + throw new LogicException(); + }); + + $this->assertInstanceOf(GeocoderRejectedPromise::class, $returnPromise); + $this->assertSame(Promise::REJECTED, $returnPromise->getState()); + + $this->expectException(Exception::class); + $returnPromise->wait(); + } + + public function testItReturnsItselfWhenNoOnRejectedCallbackIsPassed(): void + { + $collection = $this->createStub(Collection::class); + $promise = new GeocoderFulfilledPromise($collection); + + $returnPromise = $promise->then(); + $this->assertSame($promise, $returnPromise); + } +} diff --git a/src/Plugin/Tests/Promise/GeocoderRejectedPromiseTest.php b/src/Plugin/Tests/Promise/GeocoderRejectedPromiseTest.php new file mode 100644 index 000000000..5b1c5e9ab --- /dev/null +++ b/src/Plugin/Tests/Promise/GeocoderRejectedPromiseTest.php @@ -0,0 +1,64 @@ +createStub(Exception::class); + $promise = new GeocoderRejectedPromise($exception); + $collection = $this->createStub(Collection::class); + + $returnPromise = $promise->then(null, function () use ($collection) { + return $collection; + }); + + $this->assertInstanceOf(GeocoderFulfilledPromise::class, $returnPromise); + $this->assertSame(Promise::FULFILLED, $returnPromise->getState()); + $this->assertSame($collection, $returnPromise->wait()); + } + + public function testItReturnsARejectedPromise(): void + { + $collection = $this->createStub(Exception::class); + $promise = new GeocoderRejectedPromise($collection); + + $returnPromise = $promise->then(null, function () { + throw new LogicException(); + }); + + $this->assertInstanceOf(GeocoderRejectedPromise::class, $returnPromise); + $this->assertSame(Promise::REJECTED, $returnPromise->getState()); + + $this->expectException(Exception::class); + $returnPromise->wait(); + } + + public function testItReturnsItselfWhenNoOnRejectedCallbackIsPassed(): void + { + $collection = $this->createStub(Exception::class); + $promise = new GeocoderRejectedPromise($collection); + + $returnPromise = $promise->then(); + $this->assertSame($promise, $returnPromise); + } +}