Sha256: 7eb52e411eabc97098450dcf7aec972b8df43e906de5ab0d0a4a640f7e424a51
Contents?: true
Size: 1.63 KB
Versions: 1
Compression:
Stored size: 1.63 KB
Contents
# encoding: utf-8 require "ostruct" describe Assertion::Guard do before do IsAdult = Assertion.about(:age) { age.to_i >= 18 } AdultOnly = Class.new(described_class) { def state; IsAdult[object]; end } end let(:valid) { OpenStruct.new(name: "Joe", age: 40) } let(:invalid) { OpenStruct.new(name: "Ian", age: 10) } let(:guard) { AdultOnly.new valid } it "can declare attributes" do expect(AdultOnly).to be_kind_of Assertion::Attributes end describe ".new" do subject { guard } it { is_expected.to be_frozen } context "with an attriubute" do before { allow(AdultOnly).to receive(:attributes) { [:foo] } } it "adds the alias to the #object" do expect(subject.foo).to eql subject.object end end # context end # describe .new describe ".[]" do it "returns the result of the call" do expect(AdultOnly[valid]).to eql valid expect { AdultOnly[invalid] }.to raise_error Assertion::InvalidError end end # describe .[] describe "#object" do subject { guard.object } it { is_expected.to eql valid } end # describe #object describe "#call" do subject { guard.call } context "when #state is valid" do it { is_expected.to eql valid } end # context context "when #state is invalid" do let(:guard) { AdultOnly.new invalid } it "raises InvalidError" do expect { subject }.to raise_error Assertion::InvalidError end end # context end # describe #call after do Object.send :remove_const, :AdultOnly Object.send :remove_const, :IsAdult end end # describe Assertion::Guard
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
assertion-0.1.0 | spec/unit/assertion/guard_spec.rb |