forked from flippercloud/flipper
/
helper.rb
97 lines (76 loc) · 2.45 KB
/
helper.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
$:.unshift(File.expand_path('../../lib', __FILE__))
require 'pp'
require 'pathname'
FlipperRoot = Pathname(__FILE__).dirname.join('..').expand_path
require 'rubygems'
require 'bundler'
require 'pry'
Bundler.setup(:default)
require 'flipper'
require 'flipper-ui'
require 'flipper-api'
Dir[FlipperRoot.join("spec/support/**/*.rb")].each { |f| require f }
RSpec.configure do |config|
config.before(:example) do
Flipper.unregister_groups
end
config.disable_monkey_patching!
config.filter_run focus: true
config.run_all_when_everything_filtered = true
end
RSpec.shared_examples_for 'a percentage' do
it "initializes with value" do
percentage = described_class.new(12)
expect(percentage).to be_instance_of(described_class)
end
it "converts string values to integers when initializing" do
percentage = described_class.new('15')
expect(percentage.value).to eq(15)
end
it "has a value" do
percentage = described_class.new(19)
expect(percentage.value).to eq(19)
end
it "raises exception for value higher than 100" do
expect {
described_class.new(101)
}.to raise_error(ArgumentError, "value must be a positive number less than or equal to 100, but was 101")
end
it "raises exception for negative value" do
expect {
described_class.new(-1)
}.to raise_error(ArgumentError, "value must be a positive number less than or equal to 100, but was -1")
end
end
RSpec.shared_examples_for 'a DSL feature' do
it "returns instance of feature" do
expect(feature).to be_instance_of(Flipper::Feature)
end
it "sets name" do
expect(feature.name).to eq(:stats)
end
it "sets adapter" do
expect(feature.adapter.name).to eq(dsl.adapter.name)
end
it "sets instrumenter" do
expect(feature.instrumenter).to eq(dsl.instrumenter)
end
it "memoizes the feature" do
expect(dsl.send(method_name, :stats)).to equal(feature)
end
it "raises argument error if not string or symbol" do
expect {
dsl.send(method_name, Object.new)
}.to raise_error(ArgumentError, /must be a String or Symbol/)
end
end
RSpec.shared_examples_for "a DSL boolean method" do
it "returns boolean with value set" do
result = subject.send(method_name, true)
expect(result).to be_instance_of(Flipper::Types::Boolean)
expect(result.value).to be(true)
result = subject.send(method_name, false)
expect(result).to be_instance_of(Flipper::Types::Boolean)
expect(result.value).to be(false)
end
end