mirror of
https://github.com/drapergem/draper
synced 2023-03-27 23:21:17 -04:00
add namespaced model support
This commit is contained in:
parent
1c3d5667b8
commit
4ef3d2b7cd
3 changed files with 26 additions and 2 deletions
|
@ -47,8 +47,8 @@ module Draper
|
|||
# to query.
|
||||
#
|
||||
# @param [Symbol] class_name snakecase name of the decorated class, like `:product`
|
||||
def self.decorates(input)
|
||||
self.model_class = input.to_s.camelize.constantize
|
||||
def self.decorates(input, options = {})
|
||||
self.model_class = options[:class] || input.to_s.camelize.constantize
|
||||
model_class.send :include, Draper::ModelSupport
|
||||
define_method(input){ @model }
|
||||
end
|
||||
|
|
|
@ -58,6 +58,20 @@ describe Draper::Base do
|
|||
pd = ProductDecorator.new(source)
|
||||
pd.send(:product).should == source
|
||||
end
|
||||
|
||||
context("namespaced model supporting") do
|
||||
let(:source){ Namespace::Product.new }
|
||||
|
||||
it "sets the model class for the decorator" do
|
||||
decorator = Namespace::ProductDecorator.new(source)
|
||||
decorator.model_class.should == Namespace::Product
|
||||
end
|
||||
|
||||
it "creates a named accessor for the wrapped model" do
|
||||
pd = Namespace::ProductDecorator.new(source)
|
||||
pd.send(:product).should == source
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context(".model / .to_model") do
|
||||
|
|
|
@ -26,4 +26,14 @@ describe Draper::ModelSupport do
|
|||
subject.decorate.to_ary[0].model.should be_a(Product)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#decorate - decorate collections of namespaced AR objects' do
|
||||
subject { Namespace::Product.limit }
|
||||
its(:decorate) { should be_kind_of(Draper::DecoratedEnumerableProxy) }
|
||||
|
||||
it "should decorate the collection" do
|
||||
subject.decorate.size.should == 1
|
||||
subject.decorate.to_ary[0].model.should be_a(Namespace::Product)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue