diff --git a/lib/draper/helper_support.rb b/lib/draper/helper_support.rb new file mode 100644 index 0000000..5806b73 --- /dev/null +++ b/lib/draper/helper_support.rb @@ -0,0 +1,5 @@ +module Draper::HelperSupport + def decorate(input, &block) + capture { block.call(input.decorate) } + end +end \ No newline at end of file diff --git a/spec/draper/helper_support_spec.rb b/spec/draper/helper_support_spec.rb new file mode 100644 index 0000000..94d0508 --- /dev/null +++ b/spec/draper/helper_support_spec.rb @@ -0,0 +1,18 @@ +require 'spec_helper' + +describe Draper::HelperSupport do + before(:each){ @product = Product.new} + + context '#decorate' do + it 'renders a block' do + output = ApplicationController.decorate(@product){|p| p.model.object_id } + output.should == @product.object_id + end + + it 'uses #capture so Rails only renders the content once' do + ApplicationController.decorate(@product){|p| p.model.object_id } + ApplicationController.capture_triggered.should be + end + end + +end