spec/flipper/dsl_spec.rb in flipper-1.0.0 vs spec/flipper/dsl_spec.rb in flipper-1.1.0

- old
+ new

@@ -134,10 +134,22 @@ expect(subject.group(:admins)).to be(@group) end end end + describe '#expression' do + it "returns nil if feature has no expression" do + expect(subject.expression(:stats)).to be(nil) + end + + it "returns expression if feature has expression" do + expression = Flipper.property(:plan).eq("basic") + subject[:stats].enable_expression expression + expect(subject.expression(:stats)).to eq(expression) + end + end + describe '#features' do context 'with no features enabled/disabled' do it 'defaults to empty set' do expect(subject.features).to eq(Set.new) end @@ -166,9 +178,36 @@ subject.enable(:stats) expect(subject[:stats].boolean_value).to eq(true) subject.disable(:stats) expect(subject[:stats].boolean_value).to eq(false) + end + end + + describe '#enable_expression/disable_expression' do + it 'enables and disables the feature for the expression' do + expression = Flipper.property(:plan).eq("basic") + + expect(subject[:stats].expression).to be(nil) + subject.enable_expression(:stats, expression) + expect(subject[:stats].expression).to eq(expression) + + subject.disable_expression(:stats) + expect(subject[:stats].expression).to be(nil) + end + end + + describe '#add_expression/remove_expression' do + it 'enables and disables the feature for the expression' do + expression = Flipper.property(:plan).eq("basic") + any_expression = Flipper.any(expression) + + expect(subject[:stats].expression).to be(nil) + subject.add_expression(:stats, any_expression) + expect(subject[:stats].expression).to eq(any_expression) + + subject.remove_expression(:stats, expression) + expect(subject[:stats].expression).to eq(Flipper.any) end end describe '#enable_actor/disable_actor' do it 'enables and disables the feature for actor' do