diff --git a/lib/draper/base.rb b/lib/draper/base.rb index 78342ee..155a423 100644 --- a/lib/draper/base.rb +++ b/lib/draper/base.rb @@ -175,6 +175,11 @@ module Draper end end + def kind_of?(klass) + model.kind_of?(klass) || super(klass) + end + alias :is_a? :kind_of? + def self.method_missing(method, *args, &block) model_class.send(method, *args, &block) end diff --git a/spec/draper/base_spec.rb b/spec/draper/base_spec.rb index 6a5e18b..cb9c417 100644 --- a/spec/draper/base_spec.rb +++ b/spec/draper/base_spec.rb @@ -445,4 +445,24 @@ describe Draper::Base do end end end + + describe "#kind_of?" do + context "pretends to be of kind of model class" do + it "#kind_of? Decorator" do + subject.should be_kind_of Decorator + end + + it "#is_a? Decorator" do + subject.is_a?(Decorator).should be_true + end + + it "#kind_of? Product" do + subject.should be_kind_of Product + end + + it "#is_a? Product" do + subject.is_a?(Product).should be_true + end + end + end end