Wrap the .all method to return a DecoratedEnumerableProxy

This commit is contained in:
Jeff Casimir 2011-10-28 20:38:43 -04:00
parent 173c705422
commit 3670ef76ee
3 changed files with 22 additions and 0 deletions

View File

@ -96,6 +96,14 @@ module Draper
input.respond_to?(:each) ? Draper::DecoratedEnumerableProxy.new(input, self, context) : new(input, context)
end
# Fetch all instances of the decorated class and decorate them.
#
# @param [Object] context (optional)
# @return [Draper::DecoratedEnumerableProxy]
def self.all(context = {})
Draper::DecoratedEnumerableProxy.new(model_class.all, self, context)
end
# Access the helpers proxy to call built-in and user-defined
# Rails helpers. Aliased to `.h` for convinience.
#

View File

@ -237,6 +237,16 @@ describe Draper::Base do
subject_one.should_not == subject_two
end
context '#all' do
it "should return a decorated collection" do
ProductDecorator.all.first.should be_instance_of ProductDecorator
end
it "should accept a context" do
collection = ProductDecorator.all(:admin)
collection.first.context.should == :admin
end
end
end
describe "a sample usage with denies" do

View File

@ -1,6 +1,10 @@
class Product < ActiveRecord::Base
include Draper::ModelSupport
def self.all
[Product.new, Product.new]
end
def self.scoped
[Product.new]
end