spec/flipper/dsl_spec.rb in flipper-0.6.3 vs spec/flipper/dsl_spec.rb in flipper-0.7.0.beta1

- old
+ new

@@ -3,12 +3,11 @@ require 'flipper/adapters/memory' describe Flipper::DSL do subject { Flipper::DSL.new(adapter) } - let(:source) { {} } - let(:adapter) { Flipper::Adapters::Memory.new(source) } + let(:adapter) { Flipper::Adapters::Memory.new } describe "#initialize" do it "sets adapter" do dsl = described_class.new(adapter) dsl.adapter.should_not be_nil @@ -113,25 +112,25 @@ }.to raise_error(ArgumentError) end end end - describe "#random" do + describe "#time" do before do - @result = subject.random(5) + @result = subject.time(5) end - it "returns percentage of random" do - @result.should be_instance_of(Flipper::Types::PercentageOfRandom) + it "returns percentage of time" do + @result.should be_instance_of(Flipper::Types::PercentageOfTime) end it "sets value" do @result.value.should eq(5) end - it "is aliased to percentage_of_random" do - @result.should eq(subject.percentage_of_random(@result.value)) + it "is aliased to percentage_of_time" do + @result.should eq(subject.percentage_of_time(@result.value)) end end describe "#actors" do before do @@ -170,8 +169,68 @@ subject.features.each do |feature| feature.should be_instance_of(Flipper::Feature) end subject.features.map(&:name).map(&:to_s).sort.should eq(['cache', 'search', 'stats']) end + end + end + + describe "#enable/disable" do + it "enables and disables the feature" do + subject[:stats].boolean_value.should eq(false) + subject.enable(:stats) + subject[:stats].boolean_value.should eq(true) + + subject.disable(:stats) + subject[:stats].boolean_value.should eq(false) + end + end + + describe "#enable_actor/disable_actor" do + it "enables and disables the feature for actor" do + actor = Struct.new(:flipper_id).new(5) + + subject[:stats].actors_value.should be_empty + subject.enable_actor(:stats, actor) + subject[:stats].actors_value.should eq(Set["5"]) + + subject.disable_actor(:stats, actor) + subject[:stats].actors_value.should be_empty + end + end + + describe "#enable_group/disable_group" do + it "enables and disables the feature for group" do + actor = Struct.new(:flipper_id).new(5) + group = Flipper.register(:fives) { |actor| actor.flipper_id == 5 } + + subject[:stats].groups_value.should be_empty + subject.enable_group(:stats, :fives) + subject[:stats].groups_value.should eq(Set["fives"]) + + subject.disable_group(:stats, :fives) + subject[:stats].groups_value.should be_empty + end + end + + describe "#enable_percentage_of_time/disable_percentage_of_time" do + it "enables and disables the feature for percentage of time" do + subject[:stats].percentage_of_time_value.should be(0) + subject.enable_percentage_of_time(:stats, 6) + subject[:stats].percentage_of_time_value.should be(6) + + subject.disable_percentage_of_time(:stats) + subject[:stats].percentage_of_time_value.should be(0) + end + end + + describe "#enable_percentage_of_actors/disable_percentage_of_actors" do + it "enables and disables the feature for percentage of time" do + subject[:stats].percentage_of_actors_value.should be(0) + subject.enable_percentage_of_actors(:stats, 6) + subject[:stats].percentage_of_actors_value.should be(6) + + subject.disable_percentage_of_actors(:stats) + subject[:stats].percentage_of_actors_value.should be(0) end end end