Skip to content

Commit 1df9646

Browse files
authored
feat: implement AllFlags [contract-tests] (#53)
* feat: implement AllFlags
1 parent 4a754a0 commit 1df9646

File tree

3 files changed

+16
-41
lines changed

3 files changed

+16
-41
lines changed

apps/sdk-contract-tests/src/client_entity.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,16 @@ tl::expected<nlohmann::json, std::string> ClientEntity::Custom(
3636

3737
tl::expected<nlohmann::json, std::string> ClientEntity::EvaluateAll(
3838
EvaluateAllFlagParams params) {
39-
EvaluateAllFlagsResponse resp;
39+
EvaluateAllFlagsResponse resp{};
4040

41-
return tl::make_unexpected("not yet supported");
41+
boost::ignore_unused(params);
42+
43+
for (auto& [key, value] : client_->AllFlags()) {
44+
resp.state[key] = nlohmann::json::parse(
45+
boost::json::serialize(boost::json::value_from(value)));
46+
}
47+
48+
return resp;
4249
}
4350

4451
tl::expected<nlohmann::json, std::string> ClientEntity::EvaluateDetail(

apps/sdk-contract-tests/test-suppressions.txt

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,3 @@
1-
evaluation/parameterized/evaluationReasons=false/basic values - bool/flag1-bool/flag1-bool/evaluate all flags
2-
evaluation/parameterized/evaluationReasons=false/basic values - bool/flag2-bool/flag2-bool/evaluate all flags
3-
evaluation/parameterized/evaluationReasons=false/basic values - int/flag1-int/flag1-int/evaluate all flags
4-
evaluation/parameterized/evaluationReasons=false/basic values - int/flag2-int/flag2-int/evaluate all flags
5-
evaluation/parameterized/evaluationReasons=false/basic values - double/flag1-double/flag1-double/evaluate all flags
6-
evaluation/parameterized/evaluationReasons=false/basic values - double/flag2-double/flag2-double/evaluate all flags
7-
evaluation/parameterized/evaluationReasons=false/basic values - string/flag1-string/flag1-string/evaluate all flags
8-
evaluation/parameterized/evaluationReasons=false/basic values - string/flag2-string/flag2-string/evaluate all flags
9-
evaluation/parameterized/evaluationReasons=false/basic values - any/flag1-any/flag1-any/evaluate all flags
10-
evaluation/parameterized/evaluationReasons=false/basic values - any/flag2-any/flag2-any/evaluate all flags
11-
evaluation/parameterized/evaluationReasons=false/evaluation reasons - off/flag-key/evaluate all flags
12-
evaluation/parameterized/evaluationReasons=false/evaluation reasons - fallthrough/flag-key/evaluate all flags
13-
evaluation/parameterized/evaluationReasons=false/evaluation reasons - fallthrough experiment/flag-key/evaluate all flags
14-
evaluation/parameterized/evaluationReasons=false/evaluation reasons - target match/flag-key/evaluate all flags
15-
evaluation/parameterized/evaluationReasons=false/evaluation reasons - rule match/flag-key/evaluate all flags
16-
evaluation/parameterized/evaluationReasons=false/evaluation reasons - rule match experiment/flag-key/evaluate all flags
17-
evaluation/parameterized/evaluationReasons=false/evaluation reasons - prerequisite failed/flag-key/evaluate all flags
18-
evaluation/parameterized/evaluationReasons=false/evaluation reasons - error MALFORMED_FLAG/flag-key/evaluate all flags
19-
evaluation/parameterized/evaluationReasons=false/evaluation reasons - error MALFORMED_FLAG/flag-key/evaluate all flags
20-
evaluation/parameterized/evaluationReasons=true/basic values - bool/flag1-bool/flag1-bool/evaluate all flags
21-
evaluation/parameterized/evaluationReasons=true/basic values - bool/flag2-bool/flag2-bool/evaluate all flags
22-
evaluation/parameterized/evaluationReasons=true/basic values - int/flag1-int/flag1-int/evaluate all flags
23-
evaluation/parameterized/evaluationReasons=true/basic values - int/flag2-int/flag2-int/evaluate all flags
24-
evaluation/parameterized/evaluationReasons=true/basic values - double/flag1-double/flag1-double/evaluate all flags
25-
evaluation/parameterized/evaluationReasons=true/basic values - double/flag2-double/flag2-double/evaluate all flags
26-
evaluation/parameterized/evaluationReasons=true/basic values - string/flag1-string/flag1-string/evaluate all flags
27-
evaluation/parameterized/evaluationReasons=true/basic values - string/flag2-string/flag2-string/evaluate all flags
28-
evaluation/parameterized/evaluationReasons=true/basic values - any/flag1-any/flag1-any/evaluate all flags
29-
evaluation/parameterized/evaluationReasons=true/basic values - any/flag2-any/flag2-any/evaluate all flags
30-
evaluation/parameterized/evaluationReasons=true/evaluation reasons - off/flag-key/evaluate all flags
31-
evaluation/parameterized/evaluationReasons=true/evaluation reasons - fallthrough/flag-key/evaluate all flags
32-
evaluation/parameterized/evaluationReasons=true/evaluation reasons - fallthrough experiment/flag-key/evaluate all flags
33-
evaluation/parameterized/evaluationReasons=true/evaluation reasons - target match/flag-key/evaluate all flags
34-
evaluation/parameterized/evaluationReasons=true/evaluation reasons - rule match/flag-key/evaluate all flags
35-
evaluation/parameterized/evaluationReasons=true/evaluation reasons - rule match experiment/flag-key/evaluate all flags
36-
evaluation/parameterized/evaluationReasons=true/evaluation reasons - prerequisite failed/flag-key/evaluate all flags
37-
evaluation/parameterized/evaluationReasons=true/evaluation reasons - error MALFORMED_FLAG/flag-key/evaluate all flags
38-
evaluation/parameterized/evaluationReasons=true/evaluation reasons - error MALFORMED_FLAG/flag-key/evaluate all flags
391
events/requests/method and headers
402
events/requests/URL path is computed correctly/base URI has no trailing slash
413
events/requests/URL path is computed correctly/base URI has a trailing slash

libs/client-sdk/src/api.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,13 @@ bool Client::Initialized() const {
7474
}
7575

7676
std::unordered_map<Client::FlagKey, Value> Client::AllFlags() const {
77-
return {};
77+
std::unordered_map<Client::FlagKey, Value> result;
78+
for (auto& [key, descriptor] : flag_manager_.GetAll()) {
79+
if (descriptor->flag) {
80+
result.try_emplace(key, descriptor->flag->detail().value());
81+
}
82+
}
83+
return result;
7884
}
7985

8086
void Client::TrackInternal(std::string event_name,

0 commit comments

Comments
 (0)