Merge pull request #616 from carnesmedia/undecorate
Draper.undecorate safely undecorates any object
This commit is contained in:
commit
5a4bcf508d
|
@ -22,6 +22,7 @@ require 'draper/decorated_association'
|
||||||
require 'draper/helper_support'
|
require 'draper/helper_support'
|
||||||
require 'draper/view_context'
|
require 'draper/view_context'
|
||||||
require 'draper/collection_decorator'
|
require 'draper/collection_decorator'
|
||||||
|
require 'draper/undecorate'
|
||||||
require 'draper/decorates_assigned'
|
require 'draper/decorates_assigned'
|
||||||
require 'draper/railtie' if defined?(Rails)
|
require 'draper/railtie' if defined?(Rails)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Draper
|
||||||
|
def self.undecorate(object)
|
||||||
|
if object.respond_to?(:decorated?) && object.decorated?
|
||||||
|
object.object
|
||||||
|
else
|
||||||
|
object
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,19 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Draper, '.undecorate' do
|
||||||
|
it 'undecorates a decorated object' do
|
||||||
|
object = Model.new
|
||||||
|
decorator = Draper::Decorator.new(object)
|
||||||
|
expect(Draper.undecorate(decorator)).to equal object
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'passes a non-decorated object through' do
|
||||||
|
object = Model.new
|
||||||
|
expect(Draper.undecorate(object)).to equal object
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'passes a non-decorator object through' do
|
||||||
|
object = Object.new
|
||||||
|
expect(Draper.undecorate(object)).to equal object
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue