spec/tests/validations/validators_spec.rb in attestor-0.2.0 vs spec/tests/validations/validators_spec.rb in attestor-0.3.0
- old
+ new
@@ -1,10 +1,11 @@
# encoding: utf-8
describe Attestor::Validations::Validators do
let(:validator_class) { Attestor::Validations::Validator }
+ let(:follower_class) { Attestor::Validations::Follower }
describe ".new" do
it "creates a collection" do
expect(subject).to be_kind_of Enumerable
@@ -29,34 +30,92 @@
expect(subject.to_a).to match_array validators
end
end # describe #each
- describe "#add" do
+ describe "#add_validator" do
- context "without options" do
+ context "without contexts" do
- let(:result) { subject.add("foo") }
+ let(:result) { subject.add_validator "foo" }
it "returns validators" do
expect(result).to be_kind_of described_class
end
+ it "adds validator (not a follower)" do
+ item = result.first
+ expect(item).to be_kind_of validator_class
+ expect(item).not_to be_kind_of follower_class
+ end
+
+ it "assigns a name" do
+ item = result.first
+ expect(item.name).to eq :foo
+ end
+
+ it "preserves existing items" do
+ expect(result.add_validator(:bar).map(&:name))
+ .to contain_exactly :foo, :bar
+ end
+
+ end # context
+
+ context "with contexts" do
+
+ let(:result) { subject.add_validator "foo", only: [:foo] }
+
it "adds item to validators" do
+ expect(result.map(&:name)).to eq [:foo]
+ expect(result.set(:foo).map(&:name)).to eq [:foo]
+ expect(result.set(:all).map(&:name)).to eq []
+ end
+
+ end # context
+
+ context "existing validator" do
+
+ subject { described_class.new.add_validator "foo" }
+
+ it "returns itself" do
+ expect(subject.add_validator "foo").to eq subject
+ end
+
+ end # context
+
+ end # describe #add_validator
+
+ describe "#add_follower" do
+
+ context "without contexts" do
+
+ let(:result) { subject.add_follower "foo" }
+
+ it "returns validators" do
+ expect(result).to be_kind_of described_class
+ end
+
+ it "adds a follower" do
item = result.first
+ expect(item).to be_kind_of follower_class
+ end
+
+ it "assigns a name" do
+ item = result.first
expect(item.name).to eq :foo
end
it "preserves existing items" do
- expect(result.add(:bar).map(&:name)).to contain_exactly :foo, :bar
+ expect(result.add_follower(:bar).map(&:name))
+ .to contain_exactly :foo, :bar
end
end # context
- context "with options" do
+ context "with contexts" do
- let(:result) { subject.add "foo", only: [:foo] }
+ let(:result) { subject.add_follower "foo", only: [:foo] }
it "adds item to validators" do
expect(result.map(&:name)).to eq [:foo]
expect(result.set(:foo).map(&:name)).to eq [:foo]
expect(result.set(:all).map(&:name)).to eq []
@@ -64,27 +123,27 @@
end # context
context "existing validator" do
- subject { described_class.new.add "foo" }
+ subject { described_class.new.add_follower "foo" }
it "returns itself" do
- expect(subject.add "foo").to eq subject
+ expect(subject.add_follower "foo").to eq subject
end
end # context
- end # describe #add
+ end # describe #add_follower
- describe "#context" do
+ describe "#set" do
subject do
described_class.new
- .add("foo", only: %w(cad cam))
- .add("bar", except: %w(cad))
- .add("baz", except: %w(cam))
+ .add_validator("foo", only: %w(cad cam))
+ .add_validator("bar", except: %w(cad))
+ .add_validator("baz", except: %w(cam))
end
it "returns a collection" do
expect(subject.set "all").to be_kind_of described_class
end
@@ -93,8 +152,8 @@
expect(subject.set("cad").map(&:name)).to contain_exactly :foo, :baz
expect(subject.set("cam").map(&:name)).to contain_exactly :foo, :bar
expect(subject.set("all").map(&:name)).to contain_exactly :bar, :baz
end
- end # describe #context
+ end # describe #set
end # describe Attestor::Validators