From 36a718e634467cceba5273d9f30c160d9853df82 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 21:16:21 +0000 Subject: [PATCH 1/2] fix: Map wrong type evaluation errors to type mismatch Co-Authored-By: rlamb@launchdarkly.com <4955475+kinyoklion@users.noreply.github.com> --- src/ResolutionDetailsConverter.php | 2 ++ tests/ProviderTest.php | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/ResolutionDetailsConverter.php b/src/ResolutionDetailsConverter.php index 0fa2abc..935185e 100644 --- a/src/ResolutionDetailsConverter.php +++ b/src/ResolutionDetailsConverter.php @@ -70,6 +70,8 @@ private static function errorKindToCode(?string $errorKind): ResolutionError return new ResolutionError(ErrorCode::PARSE_ERROR()); case EvaluationReason::USER_NOT_SPECIFIED_ERROR: return new ResolutionError(ErrorCode::TARGETING_KEY_MISSING()); + case EvaluationReason::WRONG_TYPE_ERROR: + return new ResolutionError(ErrorCode::TYPE_MISMATCH()); case EvaluationReason::EXCEPTION_ERROR: // intentional fallthrough default: diff --git a/tests/ProviderTest.php b/tests/ProviderTest.php index 9c49eff..f72824e 100644 --- a/tests/ProviderTest.php +++ b/tests/ProviderTest.php @@ -7,6 +7,7 @@ use LaunchDarkly\EvaluationReason; use LaunchDarkly\Integrations; use LaunchDarkly\OpenFeature\Provider; +use LaunchDarkly\OpenFeature\ResolutionDetailsConverter; use OpenFeature\implementation\flags\Attributes; use OpenFeature\implementation\flags\EvaluationContext; use OpenFeature\interfaces\provider\ErrorCode; @@ -66,6 +67,21 @@ public function testEvaluationErrorResultsAreConvertedCorrectly(): void $this->assertEquals(ErrorCode::FLAG_NOT_FOUND(), $error->getResolutionErrorCode()); } + public function testWrongTypeEvaluationErrorsAreConvertedCorrectly(): void + { + $evaluation = new \LaunchDarkly\EvaluationDetail( + true, + null, + EvaluationReason::error(EvaluationReason::WRONG_TYPE_ERROR) + ); + $resolutionDetails = (new ResolutionDetailsConverter())->toResolutionDetails($evaluation); + + $this->assertEquals(Reason::ERROR, $resolutionDetails->getReason()); + /** @var ResolutionError */ + $error = $resolutionDetails->getError(); + $this->assertEquals(ErrorCode::TYPE_MISMATCH(), $error->getResolutionErrorCode()); + } + public function testInvalidTypesGenerateTypeMismatchResults(): void { $td = new Integrations\TestData(); From 7fe8ed8700e8271e521ec50ea61ce4152dd2a5d6 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 21:17:02 +0000 Subject: [PATCH 2/2] style: Import the evaluation detail class in the test Co-Authored-By: rlamb@launchdarkly.com <4955475+kinyoklion@users.noreply.github.com> --- tests/ProviderTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/ProviderTest.php b/tests/ProviderTest.php index f72824e..a6a9113 100644 --- a/tests/ProviderTest.php +++ b/tests/ProviderTest.php @@ -4,6 +4,7 @@ namespace LaunchDarkly\Tests; +use LaunchDarkly\EvaluationDetail; use LaunchDarkly\EvaluationReason; use LaunchDarkly\Integrations; use LaunchDarkly\OpenFeature\Provider; @@ -69,7 +70,7 @@ public function testEvaluationErrorResultsAreConvertedCorrectly(): void public function testWrongTypeEvaluationErrorsAreConvertedCorrectly(): void { - $evaluation = new \LaunchDarkly\EvaluationDetail( + $evaluation = new EvaluationDetail( true, null, EvaluationReason::error(EvaluationReason::WRONG_TYPE_ERROR)