Skip to content

Commit 587fb33

Browse files
committed
Add offline mode spec
1 parent 64607f9 commit 587fb33

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

spec/sdk/offline_mode_spec.rb

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# frozen_string_literal: true
2+
3+
require 'spec_helper'
4+
5+
6+
RSpec.describe Flagsmith::Client do
7+
it "gets environment flags with an environment document with an offline_handler" do
8+
offline_handler = \
9+
Flagsmith::OfflineHandlers::LocalFileHandler.new("spec/sdk/fixtures/environment.json")
10+
11+
flagsmith = Flagsmith::Client.new(
12+
offline_mode: true,
13+
offline_handler: offline_handler,
14+
)
15+
16+
response = flagsmith.get_environment_flags
17+
expect(response.count).to eq(1)
18+
expect(response.first[-1].feature_name).to eq("some_feature")
19+
end
20+
21+
it "gets identity flags with an offline_handler" do
22+
offline_handler = \
23+
Flagsmith::OfflineHandlers::LocalFileHandler.new("spec/sdk/fixtures/environment.json")
24+
25+
flagsmith = Flagsmith::Client.new(
26+
offline_mode: true,
27+
offline_handler: offline_handler,
28+
)
29+
30+
response = flagsmith.get_identity_flags("some_identity")
31+
expect(response.first[-1].feature_name).to eq("some_feature")
32+
end
33+
34+
it "raises an error if offline_mode is present but offline_handler is missing" do
35+
expect {
36+
flagsmith = Flagsmith::Client.new(offline_mode: true)
37+
}.to raise_error(
38+
Flagsmith::ClientError,
39+
"The offline_mode config param requires a matching offline_handler."
40+
)
41+
end
42+
43+
it "raises an error if both the default_flag_handler and offline_handler are used" do
44+
default_flag_handler = lambda { |feature_name|
45+
Flagsmith::Flags::DefaultFlag.new(enabled: false, value: {}.to_json)
46+
}
47+
offline_handler = \
48+
Flagsmith::OfflineHandlers::LocalFileHandler.new("spec/sdk/fixtures/environment.json")
49+
expect {
50+
Flagsmith::Client.new(
51+
default_flag_handler: default_flag_handler,
52+
offline_handler: offline_handler,
53+
)
54+
}.to raise_error(
55+
Flagsmith::ClientError,
56+
"Cannot use offline_handler and default_flag_handler at the same time."
57+
)
58+
end
59+
end
60+
61+
RSpec.describe Flagsmith::Flags::Collection do
62+
it "works with get_flag with an offline_handler" do
63+
offline_handler = \
64+
Flagsmith::OfflineHandlers::LocalFileHandler.new("spec/sdk/fixtures/environment.json")
65+
66+
flags_collection = Flagsmith::Flags::Collection.new(offline_handler: offline_handler)
67+
flag = flags_collection.get_flag("some_feature")
68+
69+
expect(flag.feature_name).to eq("some_feature")
70+
expect(flag.value).to eq("some-value")
71+
end
72+
end

0 commit comments

Comments
 (0)