From 7c01ef93bf128b4ac8bdad38c54b2a4fd6b0b3cc Mon Sep 17 00:00:00 2001 From: Jeroen Noten Date: Thu, 12 Aug 2021 11:30:40 +0200 Subject: [PATCH] Add support for assertObjectHasAttribute --- .../Assert/AssertTypeSpecifyingExtensionHelper.php | 3 +++ tests/Type/PHPUnit/data/assert-function.php | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Type/PHPUnit/Assert/AssertTypeSpecifyingExtensionHelper.php b/src/Type/PHPUnit/Assert/AssertTypeSpecifyingExtensionHelper.php index 8a56f32..2cd354c 100644 --- a/src/Type/PHPUnit/Assert/AssertTypeSpecifyingExtensionHelper.php +++ b/src/Type/PHPUnit/Assert/AssertTypeSpecifyingExtensionHelper.php @@ -255,6 +255,9 @@ private static function getExpressionResolvers(): array 'ArrayHasKey' => function (Scope $scope, Arg $key, Arg $array): FuncCall { return new \PhpParser\Node\Expr\FuncCall(new Name('array_key_exists'), [$key, $array]); }, + 'ObjectHasAttribute' => function (Scope $scope, Arg $property, Arg $object): FuncCall { + return new \PhpParser\Node\Expr\FuncCall(new Name('property_exists'), [$object, $property]); + }, ]; } diff --git a/tests/Type/PHPUnit/data/assert-function.php b/tests/Type/PHPUnit/data/assert-function.php index f31fb37..ebfeb93 100644 --- a/tests/Type/PHPUnit/data/assert-function.php +++ b/tests/Type/PHPUnit/data/assert-function.php @@ -4,8 +4,8 @@ use function PHPStan\Testing\assertType; use function PHPUnit\Framework\assertArrayHasKey; -use function PHPUnit\Framework\assertArrayNotHasKey; use function PHPUnit\Framework\assertInstanceOf; +use function PHPUnit\Framework\assertObjectHasAttribute; class Foo { @@ -30,4 +30,10 @@ public function arrayHasStringKey(array $a): void assertType("array&hasOffset('key')", $a); } + public function objectHasAttribute(object $a): void + { + assertObjectHasAttribute('property', $a); + assertType("object&hasProperty(property)", $a); + } + }