spec/flipper/adapter_spec.rb in flipper-0.2.1 vs spec/flipper/adapter_spec.rb in flipper-0.3.0

- old
+ new

@@ -1,12 +1,13 @@ require 'helper' require 'flipper/adapter' require 'flipper/adapters/memory' describe Flipper::Adapter do - let(:local_cache) { {} } - let(:adapter) { Flipper::Adapters::Memory.new } + let(:local_cache) { {} } + let(:adapter) { Flipper::Adapters::Memory.new } + let(:features_key) { described_class::FeaturesKey } subject { described_class.new(adapter, local_cache) } describe ".wrap" do context "with Flipper::Adapter instance" do @@ -276,8 +277,51 @@ subject.eql?(Object.new).should be_false end it "is aliased to ==" do (subject == described_class.new(adapter)).should be_true + end + end + + describe "#features" do + context "with no features enabled/disabled" do + it "defaults to empty set" do + subject.features.should eq(Set.new) + end + end + + context "with features enabled and disabled" do + before do + subject.set_add(features_key, 'stats') + subject.set_add(features_key, 'cache') + subject.set_add(features_key, 'search') + end + + it "returns set of feature names" do + subject.features.should be_instance_of(Set) + subject.features.sort.should eq(['cache', 'search', 'stats']) + end + end + end + + describe "#feature_add" do + context "with string name" do + before do + subject.feature_add('search') + end + + it "adds string to set" do + subject.set_members(features_key).should include('search') + end + end + + context "with symbol name" do + before do + subject.feature_add(:search) + end + + it "adds string to set" do + subject.set_members(features_key).should include('search') + end end end end