Skip to content

Commit 381b541

Browse files
(test) added resolveStringValue tests to FlagsmithProvider
Signed-off-by: Chris Lightfoot-Wild <[email protected]>
1 parent e0bf3b6 commit 381b541

File tree

2 files changed

+106
-0
lines changed

2 files changed

+106
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
{
2+
"project": {
3+
"name": "Test project",
4+
"organisation": {
5+
"feature_analytics": false,
6+
"name": "Test Org",
7+
"id": 1,
8+
"persist_trait_data": true,
9+
"stop_serving_flags": false
10+
},
11+
"id": 1,
12+
"hide_disabled_flags": false
13+
},
14+
"segment_overrides": [],
15+
"id": 1,
16+
"feature_states": [
17+
{
18+
"multivariate_feature_state_values": [],
19+
"feature_state_value": "flag value",
20+
"id": 1,
21+
"feature": {
22+
"name": "string_feature",
23+
"type": "STANDARD",
24+
"id": 1
25+
},
26+
"segment_id": null,
27+
"enabled": true
28+
},
29+
{
30+
"multivariate_feature_state_values": [],
31+
"feature_state_value": "some-value",
32+
"id": 1,
33+
"feature": {
34+
"name": "disabled_string_feature",
35+
"type": "STANDARD",
36+
"id": 1
37+
},
38+
"segment_id": null,
39+
"enabled": false
40+
}
41+
],
42+
"identity_overrides": [
43+
{
44+
"identifier": "overridden-id",
45+
"identity_uuid": "0f21cde8-63c5-4e50-baca-87897fa6cd01",
46+
"created_date": "2019-08-27T14:53:45.698555Z",
47+
"updated_at": "2023-07-14 16:12:00.000000",
48+
"environment_api_key": "B62qaMZNwfiqT76p38ggrQ",
49+
"identity_features": [
50+
{
51+
"id": 1,
52+
"feature": {
53+
"id": 1,
54+
"name": "some_feature",
55+
"type": "STANDARD"
56+
},
57+
"featurestate_uuid": "1bddb9a5-7e59-42c6-9be9-625fa369749f",
58+
"feature_state_value": "some-overridden-value",
59+
"enabled": false,
60+
"environment": 1,
61+
"identity": null,
62+
"feature_segment": null
63+
}
64+
]
65+
}
66+
]
67+
}

providers/Flagsmith/tests/Unit/FlagsmithProviderTest.php

+39
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use OpenFeature\Providers\Flagsmith\Test\TestCase;
1212
use OpenFeature\interfaces\provider\ErrorCode;
1313
use OpenFeature\interfaces\provider\Provider;
14+
use OpenFeature\interfaces\provider\Reason;
1415

1516
use function file_get_contents;
1617
use function json_decode;
@@ -78,4 +79,42 @@ public function testBooleanResolutionWithDefaultValueFromFlag(): void
7879
$this->assertFalse($resolutionDetails->getValue());
7980
$this->assertEquals(ErrorCode::GENERAL(), $resolutionDetails->getError()?->getResolutionErrorCode());
8081
}
82+
83+
public function testStringResolutionWithEnabledFlag(): void
84+
{
85+
// Given
86+
$provider = $this->buildProvider(__DIR__ . '/../Fixtures/environments/string.json');
87+
88+
// When
89+
$resolutionDetails = $provider->resolveStringValue('string_feature', 'default value');
90+
91+
// Then
92+
$this->assertEquals('flag value', $resolutionDetails->getValue());
93+
}
94+
95+
public function testStringResolutionWithDisabledFlag(): void
96+
{
97+
// Given
98+
$provider = $this->buildProvider(__DIR__ . '/../Fixtures/environments/string.json');
99+
100+
// When
101+
$resolutionDetails = $provider->resolveStringValue('disabled_string_feature', 'default value');
102+
103+
// Then
104+
$this->assertEquals('default value', $resolutionDetails->getValue());
105+
}
106+
107+
public function testStringResolutionWithMissingFlag(): void
108+
{
109+
// Given
110+
$provider = $this->buildProvider(__DIR__ . '/../Fixtures/environments/string.json');
111+
112+
// When
113+
$resolutionDetails = $provider->resolveStringValue('missing_string_feature', 'default value');
114+
115+
// Then
116+
$this->assertEquals('default value', $resolutionDetails->getValue());
117+
$this->assertEquals(ErrorCode::GENERAL(), $resolutionDetails->getError()?->getResolutionErrorCode());
118+
$this->assertEquals(Reason::ERROR, $resolutionDetails->getReason());
119+
}
81120
}

0 commit comments

Comments
 (0)