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..a6a9113 100644 --- a/tests/ProviderTest.php +++ b/tests/ProviderTest.php @@ -4,9 +4,11 @@ namespace LaunchDarkly\Tests; +use LaunchDarkly\EvaluationDetail; 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 +68,21 @@ public function testEvaluationErrorResultsAreConvertedCorrectly(): void $this->assertEquals(ErrorCode::FLAG_NOT_FOUND(), $error->getResolutionErrorCode()); } + public function testWrongTypeEvaluationErrorsAreConvertedCorrectly(): void + { + $evaluation = new 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();