Skip to content

Commit d75dde2

Browse files
test: restructure some specs to make requirements the top level conte… (#43)
Signed-off-by: Josh Nichols <[email protected]> Co-authored-by: Jose Miguel Colella <[email protected]>
1 parent 1cd12ca commit d75dde2

File tree

2 files changed

+114
-42
lines changed

2 files changed

+114
-42
lines changed

spec/openfeature/sdk/api_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
RSpec.describe OpenFeature::SDK::API do
1212
subject(:api) { described_class.instance }
1313

14+
context "with Requirement 1.1.1" do
15+
pending
16+
end
17+
1418
context "with Requirement 1.1.2" do
1519
before do
1620
api.configure do |config|
@@ -90,4 +94,8 @@
9094
expect(api).is_a?(OpenFeature::SDK::Client)
9195
end
9296
end
97+
98+
context "with Requirement 1.1.6" do
99+
pending
100+
end
93101
end

spec/openfeature/sdk/client_spec.rb

Lines changed: 106 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -93,34 +93,48 @@
9393
end
9494
end
9595

96-
context "Requirement 1.4.1" do
97-
context "MUST provide methods for detailed flag value evaluation with parameters flag key (string, required), default value (boolean | number | string | structure, required), evaluation context (optional), and evaluation options (optional), which returns an evaluation details structure." do
98-
let(:flag_key) { "my-awesome-feature-flag-key" }
96+
context "Requirement 1.3.3" do
97+
pending
98+
end
9999

100-
context "boolean value" do
100+
context "Detailed Feature Evaluation" do
101+
let(:flag_key) { "my-awesome-feature-flag-key" }
102+
103+
context "boolean value" do
104+
context "Requirement 1.4.1" do
101105
it do
102106
expect(client).to respond_to(:fetch_boolean_details)
103107
end
104108

105109
it do
106110
expect(client.fetch_boolean_details(flag_key: flag_key, default_value: false)).is_a?(OpenFeature::SDK::Provider::NoOpProvider::ResolutionDetails)
107111
end
112+
end
108113

109-
context "Requirement 1.4.2" do
110-
it "The evaluation details structure's value field MUST contain the evaluated flag value" do
111-
expect(client.fetch_boolean_details(flag_key: flag_key, default_value: true).value).is_a?(TrueClass)
112-
expect(client.fetch_boolean_details(flag_key: flag_key, default_value: false).value).is_a?(FalseClass)
113-
end
114+
context "Requirement 1.4.2" do
115+
it "The evaluation details structure's value field MUST contain the evaluated flag value" do
116+
expect(client.fetch_boolean_details(flag_key: flag_key, default_value: true).value).is_a?(TrueClass)
117+
expect(client.fetch_boolean_details(flag_key: flag_key, default_value: false).value).is_a?(FalseClass)
114118
end
119+
end
115120

116-
context "Requirement 1.4.4" do
117-
it "The evaluation details structure's flag key field MUST contain the flag key argument passed to the detailed flag evaluation method." do
118-
expect(client).to respond_to(:fetch_boolean_details)
119-
end
121+
context "Requirement 1.4.3" do
122+
pending
123+
end
124+
125+
context "Requirement 1.4.4" do
126+
it "The evaluation details structure's flag key field MUST contain the flag key argument passed to the detailed flag evaluation method." do
127+
expect(client).to respond_to(:fetch_boolean_details)
120128
end
121129
end
122130

123-
context "number value" do
131+
context "Requirement 1.4.5" do
132+
pending
133+
end
134+
end
135+
136+
context "number value" do
137+
context "Requirement 1.4.1" do
124138
it do
125139
expect(client).to respond_to(:fetch_number_details)
126140
end
@@ -129,44 +143,56 @@
129143
expect(client.fetch_number_details(flag_key: flag_key, default_value: 1.2)).is_a?(OpenFeature::SDK::Provider::NoOpProvider::ResolutionDetails)
130144
expect(client.fetch_number_details(flag_key: flag_key, default_value: 1)).is_a?(OpenFeature::SDK::Provider::NoOpProvider::ResolutionDetails)
131145
end
146+
end
132147

133-
context "Requirement 1.4.2" do
134-
it "The evaluation details structure's value field MUST contain the evaluated flag value" do
135-
expect(client.fetch_number_details(flag_key: flag_key, default_value: 1.0).value).is_a?(Float)
136-
expect(client.fetch_number_details(flag_key: flag_key, default_value: 1).value).is_a?(Integer)
137-
end
148+
context "Requirement 1.4.2" do
149+
it "The evaluation details structure's value field MUST contain the evaluated flag value" do
150+
expect(client.fetch_number_details(flag_key: flag_key, default_value: 1.0).value).is_a?(Float)
151+
expect(client.fetch_number_details(flag_key: flag_key, default_value: 1).value).is_a?(Integer)
138152
end
153+
end
139154

140-
context "Requirement 1.4.4" do
141-
it "The evaluation details structure's flag key field MUST contain the flag key argument passed to the detailed flag evaluation method." do
142-
expect(client).to respond_to(:fetch_number_details)
143-
end
155+
context "Requirement 1.4.3" do
156+
pending
157+
end
158+
159+
context "Requirement 1.4.4" do
160+
it "The evaluation details structure's flag key field MUST contain the flag key argument passed to the detailed flag evaluation method." do
161+
expect(client).to respond_to(:fetch_number_details)
144162
end
145163
end
164+
end
146165

147-
context "string value" do
166+
context "string value" do
167+
context "Requirement 1.4.1" do
148168
it do
149169
expect(client).to respond_to(:fetch_string_details)
150170
end
151171

152172
it do
153173
expect(client.fetch_string_details(flag_key: flag_key, default_value: "some-string")).is_a?(OpenFeature::SDK::Provider::NoOpProvider::ResolutionDetails)
154174
end
175+
end
155176

156-
context "Requirement 1.4.2" do
157-
it "The evaluation details structure's value field MUST contain the evaluated flag value" do
158-
expect(client.fetch_string_details(flag_key: flag_key, default_value: "some-string").value).is_a?(String)
159-
end
177+
context "Requirement 1.4.2" do
178+
it "The evaluation details structure's value field MUST contain the evaluated flag value" do
179+
expect(client.fetch_string_details(flag_key: flag_key, default_value: "some-string").value).is_a?(String)
160180
end
181+
end
161182

162-
context "Requirement 1.4.4" do
163-
it "The evaluation details structure's flag key field MUST contain the flag key argument passed to the detailed flag evaluation method." do
164-
expect(client).to respond_to(:fetch_string_details)
165-
end
183+
context "Requirement 1.4.3" do
184+
pending
185+
end
186+
187+
context "Requirement 1.4.4" do
188+
it "The evaluation details structure's flag key field MUST contain the flag key argument passed to the detailed flag evaluation method." do
189+
expect(client).to respond_to(:fetch_string_details)
166190
end
167191
end
192+
end
168193

169-
context "object value" do
194+
context "object value" do
195+
context "Requirement 1.4.1" do
170196
it do
171197
expect(client).to respond_to(:fetch_object_details)
172198
end
@@ -175,21 +201,59 @@
175201
expect(client.fetch_object_details(flag_key: flag_key,
176202
default_value: { name: "some-name" })).is_a?(OpenFeature::SDK::Provider::NoOpProvider::ResolutionDetails)
177203
end
204+
end
178205

179-
context "Requirement 1.4.2" do
180-
it "The evaluation details structure's value field MUST contain the evaluated flag value" do
181-
expect(client.fetch_object_details(flag_key: flag_key,
182-
default_value: { name: "some-name" }).value).is_a?(String)
183-
end
206+
context "Requirement 1.4.2" do
207+
it "The evaluation details structure's value field MUST contain the evaluated flag value" do
208+
expect(client.fetch_object_details(flag_key: flag_key,
209+
default_value: { name: "some-name" }).value).is_a?(String)
184210
end
211+
end
185212

186-
context "Requirement 1.4.4" do
187-
it "The evaluation details structure's flag key field MUST contain the flag key argument passed to the detailed flag evaluation method." do
188-
expect(client).to respond_to(:fetch_object_details)
189-
end
213+
context "Requirement 1.4.4" do
214+
it "The evaluation details structure's flag key field MUST contain the flag key argument passed to the detailed flag evaluation method." do
215+
expect(client).to respond_to(:fetch_object_details)
190216
end
191217
end
192218
end
219+
220+
context "Requirement 1.4.5" do
221+
pending
222+
end
223+
224+
context "Requirement 1.4.6" do
225+
pending
226+
end
227+
228+
context "Requirement 1.4.7" do
229+
pending
230+
end
231+
232+
context "Requirement 1.4.8" do
233+
pending
234+
end
235+
236+
context "Requirement 1.4.9" do
237+
pending
238+
end
239+
240+
context "Requirement 1.4.10" do
241+
pending
242+
end
243+
244+
context "Requirement 1.4.11" do
245+
pending
246+
end
247+
248+
context "Requirement 1.4.12" do
249+
pending
250+
end
251+
end
252+
253+
context "Evaluation Options" do
254+
context "Requirement 1.5.1" do
255+
pending
256+
end
193257
end
194258
end
195259
end

0 commit comments

Comments
 (0)