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

@ -95,6 +95,14 @@ module Draper
def self.decorate(input, context = {})
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,5 +1,9 @@
class Product < ActiveRecord::Base
include Draper::ModelSupport
def self.all
[Product.new, Product.new]
end
def self.scoped
[Product.new]