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/view_context'
|
||||
require 'draper/collection_decorator'
|
||||
require 'draper/undecorate'
|
||||
require 'draper/decorates_assigned'
|
||||
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