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