Merge pull request #761 from jarosluv/add_undecorate_chain_feature

Add undecorate_chain feature
This commit is contained in:
Sean Linsley 2017-01-15 20:38:17 -06:00 committed by GitHub
commit ab51bf06d1
2 changed files with 28 additions and 0 deletions

View File

@ -6,4 +6,12 @@ module Draper
object
end
end
def self.undecorate_chain(object)
if object.respond_to?(:decorated?) && object.decorated?
undecorate_chain(object.object)
else
object
end
end
end

View File

@ -0,0 +1,20 @@
require 'spec_helper'
describe Draper, '.undecorate_chain' do
let!(:object) { Model.new }
let!(:decorated_inner) { Class.new(Draper::Decorator).new(object) }
let!(:decorated_outer) { Class.new(Draper::Decorator).new(decorated_inner) }
it 'undecorates full chain of decorated objects' do
expect(Draper.undecorate_chain(decorated_outer)).to equal object
end
it 'passes a non-decorated object through' do
expect(Draper.undecorate_chain(object)).to equal object
end
it 'passes a non-decorator object through' do
object = Object.new
expect(Draper.undecorate_chain(object)).to equal object
end
end