diff --git a/src/HigherOrderExpectation.php b/src/HigherOrderExpectation.php index e436da0c..1e7155c7 100644 --- a/src/HigherOrderExpectation.php +++ b/src/HigherOrderExpectation.php @@ -77,6 +77,11 @@ final class HigherOrderExpectation return $this->expect($value); } + public function json(): HigherOrderExpectation + { + return new self($this->original, $this->expectation->json()->value); + } + /** * Dynamically calls methods on the class with the given arguments. * diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 0c6a57ab..03ffdd4d 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -124,6 +124,7 @@ ✓ it can compose complex expectations ✓ it can handle nested method calls ✓ it works with higher order tests + ✓ it can call the json method in higher order expectations PASS Tests\Features\Expect\HigherOrder\methodsAndProperties ✓ it can access methods and properties @@ -720,5 +721,5 @@ ✓ it is a test ✓ it uses correct parent class - Tests: 4 incompleted, 9 skipped, 478 passed + Tests: 4 incompleted, 9 skipped, 479 passed \ No newline at end of file diff --git a/tests/Features/Expect/HigherOrder/methods.php b/tests/Features/Expect/HigherOrder/methods.php index d6da636b..a1b729a9 100644 --- a/tests/Features/Expect/HigherOrder/methods.php +++ b/tests/Features/Expect/HigherOrder/methods.php @@ -74,8 +74,19 @@ it('works with higher order tests') ->name()->toEqual('Has Methods') ->books()->each->toBeArray; +it('can call the json method in higher order expectations', function () { + expect(new HasMethods()) + ->getJsonContent()->json()->id->toBe(1)->toBeGreaterThan(0) + ->getJsonContent()->json()->email->toBe('amenophis@leherpeur.net'); +}); + class HasMethods { + public function getJsonContent(): string + { + return '{"id":1,"username":"amenophis","email":"amenophis@leherpeur.net"}'; + } + public function name() { return 'Has Methods';