From be5f192bd1c7b22c3fe0c1b20e10b620463d7561 Mon Sep 17 00:00:00 2001 From: Ben Atkins Date: Fri, 31 Oct 2014 10:40:43 -0400 Subject: [PATCH] close #438; PaperTrail::Model::ClassMethods#paper_trail_enabled_for_model? should return false if has_paper_trail isn't declared on the class in question --- CHANGELOG.md | 2 ++ lib/paper_trail/has_paper_trail.rb | 1 + spec/models/fluxor_spec.rb | 19 +++++++++++++++++++ spec/models/gadget_spec.rb | 2 +- spec/models/widget_spec.rb | 8 +++++++- test/dummy/app/models/post.rb | 1 - 6 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 spec/models/fluxor_spec.rb diff --git a/CHANGELOG.md b/CHANGELOG.md index d56df04eb..fab17070b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ PaperTrail::Rails::Engine.eager_load! ``` + - [#438](https://github.com/airblade/paper_trail/issues/438) - `Model.paper_trail_enabled_for_model?` should return `false` if + `has_paper_trail` has not been declared on the class. - [#427](https://github.com/airblade/paper_trail/pull/427) - Fix `reify` method in context of model where a column has been removed. - [#414](https://github.com/airblade/paper_trail/issues/414) - Fix functionality `ignore` argument to `has_paper_trail` in `ActiveRecord` 4. diff --git a/lib/paper_trail/has_paper_trail.rb b/lib/paper_trail/has_paper_trail.rb index 7e93a9107..793ed3630 100644 --- a/lib/paper_trail/has_paper_trail.rb +++ b/lib/paper_trail/has_paper_trail.rb @@ -101,6 +101,7 @@ def paper_trail_on end def paper_trail_enabled_for_model? + return false unless self.include?(PaperTrail::Model::InstanceMethods) PaperTrail.enabled_for_model?(self) end diff --git a/spec/models/fluxor_spec.rb b/spec/models/fluxor_spec.rb new file mode 100644 index 000000000..2812a1412 --- /dev/null +++ b/spec/models/fluxor_spec.rb @@ -0,0 +1,19 @@ +require 'rails_helper' + +describe Fluxor, :type => :model do + describe '`be_versioned` matcher' do + it { is_expected.to_not be_versioned } + end + + describe "Methods" do + describe "Class" do + subject { Fluxor } + + describe "#paper_trail_enabled_for_model?" do + it { is_expected.to respond_to(:paper_trail_enabled_for_model?) } + + it { expect(subject.paper_trail_enabled_for_model?).to be false } + end + end + end +end diff --git a/spec/models/gadget_spec.rb b/spec/models/gadget_spec.rb index 0f9140b51..573a22d9f 100644 --- a/spec/models/gadget_spec.rb +++ b/spec/models/gadget_spec.rb @@ -1,7 +1,7 @@ require 'rails_helper' describe Gadget, :type => :model do - it { should be_versioned } + it { is_expected.to be_versioned } let(:gadget) { Gadget.create!(:name => 'Wrench', :brand => 'Acme') } diff --git a/spec/models/widget_spec.rb b/spec/models/widget_spec.rb index ab24b2c78..bbd87d3ab 100644 --- a/spec/models/widget_spec.rb +++ b/spec/models/widget_spec.rb @@ -2,7 +2,7 @@ describe Widget, :type => :model do describe '`be_versioned` matcher' do - it { should be_versioned } + it { is_expected.to be_versioned } end let(:widget) { Widget.create! :name => 'Bob', :an_integer => 1 } @@ -225,6 +225,12 @@ describe "Class" do subject { Widget } + describe "#paper_trail_enabled_for_model?" do + it { is_expected.to respond_to(:paper_trail_enabled_for_model?) } + + it { expect(subject.paper_trail_enabled_for_model?).to be true } + end + describe '#paper_trail_off!' do it { is_expected.to respond_to(:paper_trail_off!) } diff --git a/test/dummy/app/models/post.rb b/test/dummy/app/models/post.rb index 9892fd808..9364c395d 100644 --- a/test/dummy/app/models/post.rb +++ b/test/dummy/app/models/post.rb @@ -1,4 +1,3 @@ class Post < ActiveRecord::Base has_paper_trail :class_name => "PostVersion" - end