draper/spec/draper/model_support_spec.rb

49 lines
1.4 KiB
Ruby

require 'spec_helper'
describe Draper::ActiveModelSupport do
subject { Product.new }
describe '#decorator' do
its(:decorator) { should be_kind_of(ProductDecorator) }
its(:decorator) { should be(subject.decorator) }
it 'have abillity to pass block' do
a = Product.new.decorator { |d| d.awesome_title }
a.should eql "Awesome Title"
end
it 'is aliased to .decorate' do
subject.decorator.model.should == subject.decorate.model
end
end
describe Draper::ModelSupport::ClassMethods do
shared_examples_for "a call to Draper::ModelSupport::ClassMethods#decorate" do
subject { klass.limit }
its(:decorate) { should be_kind_of(Draper::DecoratedEnumerableProxy) }
it "decorate the collection" do
subject.decorate.size.should == 1
subject.decorate.to_ary[0].model.should be_a(klass)
end
it "return a new instance each time it is called" do
subject.decorate.should_not == subject.decorate
end
end
describe '#decorate - decorate collections of AR objects' do
let(:klass) { Product }
it_should_behave_like "a call to Draper::ModelSupport::ClassMethods#decorate"
end
describe '#decorate - decorate collections of namespaced AR objects' do
let(:klass) { Namespace::Product }
it_should_behave_like "a call to Draper::ModelSupport::ClassMethods#decorate"
end
end
end