Sha256: 845f93f5d1a92a2a9d6acdf88072f92bda0f51a8d749318e1c339e1469906782
Contents?: true
Size: 1.2 KB
Versions: 2
Compression:
Stored size: 1.2 KB
Contents
RSpec.describe Patterns::Rule do after(:each) do Object.send(:remove_const, :CustomRule) if defined?(CustomRule) end it 'requires subject as the first argument' do CustomRule = Class.new(Patterns::Rule) expect { CustomRule.new }.to raise_error ArgumentError expect { CustomRule.new(Object.new) }.not_to raise_error end it 'requires #satisfied? method to be defined' do InvalidCustomRule = Class.new(Patterns::Rule) CustomRule = Class.new(Patterns::Rule) do def satisfied? true end end expect { InvalidCustomRule.new(Object.new).satisfied? }.to raise_error NotImplementedError expect { CustomRule.new(Object.new).satisfied? }.not_to raise_error end describe '#satisfied?' do context 'when subject meets the conditions' do it 'returns true' do article = OpenStruct.new('published?' => true, 'deleted?' => false) ArticleIsPublishedRule = Class.new(Patterns::Rule) do def satisfied? subject.published? end def not_applicable? subject.deleted? end end expect(ArticleIsPublishedRule.new(article).satisfied?).to eq true end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rails-patterns-0.11.0 | spec/patterns/rule_spec.rb |
rails-patterns-0.10.0 | spec/patterns/rule_spec.rb |