Sha256: fcb62b9ccdd2f6fdecbaf15fb31bc86ea24badb8c34d3c595ae0049b3818abf3
Contents?: true
Size: 1.84 KB
Versions: 3
Compression:
Stored size: 1.84 KB
Contents
# encoding: utf-8 describe ServiceObjects::Helpers::Dependable do let(:test_class) { Class.new } subject { test_class.new } before { test_class.extend described_class } describe ".depends_on" do shared_examples "dependency declarator" do it "[defines dependency getter]" do expect(subject).to respond_to dependency_name end it "[defines dependency sette]r" do expect(subject).to respond_to("#{ dependency_name }=").with(1).argument end it "[sets default dependency]" do expect(subject.send dependency_name).to eq default_value end it "[resets dependency to default implementation]" do expect { subject.send "#{ dependency_name }=", nil } .not_to change { subject.send dependency_name } end end # examples definition context "without arguments" do it "fails" do expect { test_class.depends_on }.to raise_error end end # context context "with one argument" do let(:default_value) { ServiceObjects::NULL } let(:dependency_name) { :get_item } before { test_class.depends_on :get_item } it_behaves_like "dependency declarator" end # context context "with two arguments" do let(:default_value) { Class.new } let(:dependency_name) { :get_item } before { test_class.depends_on :get_item, default: default_value } it_behaves_like "dependency declarator" end # context context "repeatedly" do let(:default_value) { Class.new } let(:dependency_name) { :get_item } before { test_class.depends_on :get_item } before { test_class.depends_on :get_item, default: default_value } it_behaves_like "dependency declarator" end # context end # describe .depends_on end # describe ServiceObject::Helpers::Dependable
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
service_objects-0.1.0 | spec/tests/helpers/dependable_spec.rb |
service_objects-0.0.2 | spec/tests/helpers/dependable_spec.rb |
service_objects-0.0.1 | spec/tests/helpers/dependable_spec.rb |