paper_trail 4.0.0.beta2 → 4.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.travis.yml +9 -7
  4. data/CHANGELOG.md +38 -2
  5. data/README.md +30 -12
  6. data/Rakefile +1 -1
  7. data/gemfiles/3.0.gemfile +3 -1
  8. data/lib/generators/paper_trail/install_generator.rb +4 -1
  9. data/lib/paper_trail/cleaner.rb +1 -1
  10. data/lib/paper_trail/config.rb +6 -0
  11. data/lib/paper_trail/frameworks/sinatra.rb +1 -0
  12. data/lib/paper_trail/has_paper_trail.rb +80 -67
  13. data/lib/paper_trail/serializers/yaml.rb +2 -1
  14. data/lib/paper_trail/version_concern.rb +64 -19
  15. data/lib/paper_trail/version_number.rb +1 -1
  16. data/lib/paper_trail.rb +7 -3
  17. data/paper_trail.gemspec +2 -1
  18. data/spec/models/animal_spec.rb +19 -0
  19. data/spec/models/boolit_spec.rb +48 -0
  20. data/spec/models/json_version_spec.rb +80 -0
  21. data/spec/models/thing_spec.rb +11 -0
  22. data/spec/models/version_spec.rb +153 -78
  23. data/spec/models/widget_spec.rb +27 -6
  24. data/spec/modules/paper_trail_spec.rb +27 -0
  25. data/spec/requests/articles_spec.rb +0 -2
  26. data/test/dummy/app/models/animal.rb +2 -0
  27. data/test/dummy/app/models/boolit.rb +4 -0
  28. data/test/dummy/app/models/fruit.rb +5 -0
  29. data/test/dummy/app/models/song.rb +20 -0
  30. data/test/dummy/app/models/thing.rb +3 -0
  31. data/test/dummy/app/models/whatchamajigger.rb +4 -0
  32. data/test/dummy/app/models/widget.rb +1 -0
  33. data/test/dummy/app/versions/json_version.rb +3 -0
  34. data/test/dummy/config/initializers/paper_trail.rb +3 -0
  35. data/test/dummy/db/migrate/20110208155312_set_up_test_tables.rb +44 -3
  36. data/test/dummy/db/schema.rb +13 -4
  37. data/test/functional/controller_test.rb +4 -2
  38. data/test/unit/model_test.rb +76 -12
  39. data/test/unit/serializer_test.rb +3 -3
  40. metadata +40 -6
@@ -121,8 +121,8 @@ describe Widget, :type => :model do
121
121
 
122
122
  describe "Methods" do
123
123
  describe "Instance", :versioning => true do
124
- describe '#originator' do
125
- it { is_expected.to respond_to(:originator) }
124
+ describe '#paper_trail_originator' do
125
+ it { is_expected.to respond_to(:paper_trail_originator) }
126
126
 
127
127
  describe "return value" do
128
128
  let(:orig_name) { Faker::Name.name }
@@ -133,9 +133,9 @@ describe Widget, :type => :model do
133
133
  specify { expect(widget).to be_live }
134
134
 
135
135
  it "should return the originator for the model at a given state" do
136
- expect(widget.originator).to eq(orig_name)
136
+ expect(widget.paper_trail_originator).to eq(orig_name)
137
137
  widget.whodunnit(new_name) { |w| w.update_attributes(:name => 'Elizabeth') }
138
- expect(widget.originator).to eq(new_name)
138
+ expect(widget.paper_trail_originator).to eq(new_name)
139
139
  end
140
140
  end
141
141
 
@@ -150,7 +150,7 @@ describe Widget, :type => :model do
150
150
  let(:reified_widget) { widget.versions[1].reify }
151
151
 
152
152
  it "should return the appropriate originator" do
153
- expect(reified_widget.originator).to eq(orig_name)
153
+ expect(reified_widget.paper_trail_originator).to eq(orig_name)
154
154
  end
155
155
 
156
156
  it "should not create a new model instance" do
@@ -162,7 +162,7 @@ describe Widget, :type => :model do
162
162
  let(:reified_widget) { widget.versions[1].reify(:dup => true) }
163
163
 
164
164
  it "should return the appropriate originator" do
165
- expect(reified_widget.originator).to eq(orig_name)
165
+ expect(reified_widget.paper_trail_originator).to eq(orig_name)
166
166
  end
167
167
 
168
168
  it "should not create a new model instance" do
@@ -173,6 +173,27 @@ describe Widget, :type => :model do
173
173
  end
174
174
  end
175
175
 
176
+ describe "#originator" do
177
+ subject { widget }
178
+
179
+ it { is_expected.to respond_to(:originator) }
180
+ let(:warning_msg) do
181
+ "DEPRECATED: use `paper_trail_originator` instead of `originator`." +
182
+ " Support for `originator` will be removed in PaperTrail 4.0"
183
+ end
184
+
185
+ it 'should set the invoke `paper_trail_originator`' do
186
+ is_expected.to receive(:warn)
187
+ is_expected.to receive(:paper_trail_originator)
188
+ subject.originator
189
+ end
190
+
191
+ it 'should display a deprecation warning' do
192
+ is_expected.to receive(:warn).with(warning_msg)
193
+ subject.originator
194
+ end
195
+ end
196
+
176
197
  describe '#version_at' do
177
198
  it { is_expected.to respond_to(:version_at) }
178
199
 
@@ -0,0 +1,27 @@
1
+ require 'rails_helper'
2
+
3
+ describe PaperTrail, :type => :module, :versioning => true do
4
+ describe '#config' do
5
+ it { is_expected.to respond_to(:config) }
6
+
7
+ it "should allow for config values to be set" do
8
+ expect(subject.config.enabled).to eq(true)
9
+ subject.config.enabled = false
10
+ expect(subject.config.enabled).to eq(false)
11
+ end
12
+
13
+ it "should accept blocks and yield the config instance" do
14
+ expect(subject.config.enabled).to eq(true)
15
+ subject.config { |c| c.enabled = false }
16
+ expect(subject.config.enabled).to eq(false)
17
+ end
18
+ end
19
+
20
+ describe '#configure' do
21
+ it { is_expected.to respond_to(:configure) }
22
+
23
+ it "should be an alias for the `config` method" do
24
+ expect(subject.method(:configure)).to eq(subject.method(:config))
25
+ end
26
+ end
27
+ end
@@ -9,7 +9,6 @@ describe "Articles management", :type => :request, :order => :defined do
9
9
  it "should not create a version" do
10
10
  expect(PaperTrail).to be_enabled_for_controller
11
11
  expect { post(articles_path, valid_params) }.to_not change(PaperTrail::Version, :count)
12
- expect(PaperTrail).not_to be_enabled_for_controller
13
12
  end
14
13
 
15
14
  it "should not leak the state of the `PaperTrail.enabled_for_controller?` into the next test" do
@@ -24,7 +23,6 @@ describe "Articles management", :type => :request, :order => :defined do
24
23
  it "should set that value as the `whodunnit`" do
25
24
  expect { post articles_path, valid_params }.to change(PaperTrail::Version, :count).by(1)
26
25
  expect(article.title).to eq('Doh')
27
- expect(PaperTrail.whodunnit).to eq('foobar')
28
26
  expect(article.versions.last.whodunnit).to eq('foobar')
29
27
  end
30
28
  end
@@ -1,4 +1,6 @@
1
1
  class Animal < ActiveRecord::Base
2
2
  has_paper_trail
3
3
  self.inheritance_column = 'species'
4
+
5
+ attr_accessible :species, :name if ::PaperTrail.active_record_protected_attributes?
4
6
  end
@@ -0,0 +1,4 @@
1
+ class Boolit < ActiveRecord::Base
2
+ default_scope { where(:scoped => true) }
3
+ has_paper_trail
4
+ end
@@ -0,0 +1,5 @@
1
+ class Fruit < ActiveRecord::Base
2
+ if ENV['DB'] == 'postgres' || JsonVersion.table_exists?
3
+ has_paper_trail :class_name => 'JsonVersion'
4
+ end
5
+ end
@@ -1,6 +1,7 @@
1
1
  # Example from 'Overwriting default accessors' in ActiveRecord::Base.
2
2
  class Song < ActiveRecord::Base
3
3
  has_paper_trail
4
+ attr_accessor :name
4
5
 
5
6
  # Uses an integer of seconds to hold the length of the song
6
7
  def length=(minutes)
@@ -9,4 +10,23 @@ class Song < ActiveRecord::Base
9
10
  def length
10
11
  read_attribute(:length) / 60
11
12
  end
13
+
14
+ # override attributes hashes like some libraries do
15
+ def attributes_with_name
16
+ if name
17
+ attributes_without_name.merge(:name => name)
18
+ else
19
+ attributes_without_name
20
+ end
21
+ end
22
+ alias_method_chain :attributes, :name
23
+
24
+ def changed_attributes_with_name
25
+ if name
26
+ changed_attributes_without_name.merge(:name => name)
27
+ else
28
+ changed_attributes_without_name
29
+ end
30
+ end
31
+ alias_method_chain :changed_attributes, :name
12
32
  end
@@ -0,0 +1,3 @@
1
+ class Thing < ActiveRecord::Base
2
+ has_paper_trail :save_changes => false
3
+ end
@@ -0,0 +1,4 @@
1
+ class Whatchamajigger < ActiveRecord::Base
2
+ has_paper_trail
3
+ belongs_to :owner, :polymorphic => true
4
+ end
@@ -1,6 +1,7 @@
1
1
  class Widget < ActiveRecord::Base
2
2
  has_paper_trail
3
3
  has_one :wotsit
4
+ has_many :whatchamajiggers, :as => :owner
4
5
 
5
6
  EXCLUDED_NAME = 'Biglet'
6
7
 
@@ -0,0 +1,3 @@
1
+ class JsonVersion < PaperTrail::Version
2
+ self.table_name = 'json_versions'
3
+ end
@@ -1,3 +1,6 @@
1
+ # Turn on associations tracking when the test suite is run on Travis CI
2
+ PaperTrail.config.track_associations = true if ENV['TRAVIS']
3
+
1
4
  module PaperTrail
2
5
  class Version < ActiveRecord::Base
3
6
  attr_accessible :answer, :action, :question, :article_id, :ip, :user_agent, :title if ::PaperTrail.active_record_protected_attributes?
@@ -12,7 +12,7 @@ class SetUpTestTables < ActiveRecord::Migration
12
12
  t.boolean :a_boolean
13
13
  t.string :sacrificial_column
14
14
  t.string :type
15
- t.timestamps
15
+ t.timestamps :null => true
16
16
  end
17
17
 
18
18
  create_table :versions, :force => true do |t|
@@ -60,10 +60,23 @@ class SetUpTestTables < ActiveRecord::Migration
60
60
  end
61
61
  add_index :post_versions, [:item_type, :item_id]
62
62
 
63
+ if ENV['DB'] == 'postgres' && ::ActiveRecord::VERSION::MAJOR >= 4
64
+ create_table :json_versions, :force => true do |t|
65
+ t.string :item_type, :null => false
66
+ t.integer :item_id, :null => false
67
+ t.string :event, :null => false
68
+ t.string :whodunnit
69
+ t.json :object
70
+ t.json :object_changes
71
+ t.datetime :created_at
72
+ end
73
+ add_index :json_versions, [:item_type, :item_id]
74
+ end
75
+
63
76
  create_table :wotsits, :force => true do |t|
64
77
  t.integer :widget_id
65
78
  t.string :name
66
- t.timestamps
79
+ t.timestamps :null => true
67
80
  end
68
81
 
69
82
  create_table :fluxors, :force => true do |t|
@@ -71,6 +84,12 @@ class SetUpTestTables < ActiveRecord::Migration
71
84
  t.string :name
72
85
  end
73
86
 
87
+ create_table :whatchamajiggers, :force => true do |t|
88
+ t.string :owner_type
89
+ t.integer :owner_id
90
+ t.string :name
91
+ end
92
+
74
93
  create_table :articles, :force => true do |t|
75
94
  t.string :title
76
95
  t.string :content
@@ -128,6 +147,10 @@ class SetUpTestTables < ActiveRecord::Migration
128
147
  t.integer :version
129
148
  end
130
149
 
150
+ create_table :things, :force => true do |t|
151
+ t.string :name
152
+ end
153
+
131
154
  create_table :translations, :force => true do |t|
132
155
  t.string :headline
133
156
  t.string :content
@@ -138,7 +161,7 @@ class SetUpTestTables < ActiveRecord::Migration
138
161
  create_table :gadgets, :force => true do |t|
139
162
  t.string :name
140
163
  t.string :brand
141
- t.timestamps
164
+ t.timestamps :null => true
142
165
  end
143
166
 
144
167
  create_table :customers, :force => true do |t|
@@ -154,6 +177,16 @@ class SetUpTestTables < ActiveRecord::Migration
154
177
  t.integer :order_id
155
178
  t.string :product
156
179
  end
180
+
181
+ create_table :fruits, :force => true do |t|
182
+ t.string :name
183
+ t.string :color
184
+ end
185
+
186
+ create_table :boolits, :force => true do |t|
187
+ t.string :name
188
+ t.boolean :scoped, :default => true
189
+ end
157
190
  end
158
191
 
159
192
  def self.down
@@ -166,20 +199,28 @@ class SetUpTestTables < ActiveRecord::Migration
166
199
  drop_table :authorships
167
200
  drop_table :books
168
201
  drop_table :articles
202
+ drop_table :whatchamajiggers
169
203
  drop_table :fluxors
170
204
  drop_table :wotsits
171
205
  remove_index :post_versions, :column => [:item_type, :item_id]
172
206
  drop_table :post_versions
173
207
  remove_index :versions, :column => [:item_type, :item_id]
174
208
  drop_table :versions
209
+ if JsonVersion.table_exists?
210
+ remove_index :json_versions, :column => [:item_type, :item_id]
211
+ drop_table :json_versions
212
+ end
175
213
  drop_table :widgets
176
214
  drop_table :documents
177
215
  drop_table :legacy_widgets
216
+ drop_table :things
178
217
  drop_table :translations
179
218
  drop_table :gadgets
180
219
  drop_table :customers
181
220
  drop_table :orders
182
221
  drop_table :line_items
222
+ drop_table :fruits
223
+ drop_table :boolits
183
224
  remove_index :version_associations, :column => [:version_id]
184
225
  remove_index :version_associations, :name => 'index_version_associations_on_foreign_key'
185
226
  drop_table :version_associations
@@ -84,12 +84,11 @@ ActiveRecord::Schema.define(version: 20110208155312) do
84
84
  end
85
85
 
86
86
  create_table "post_versions", force: true do |t|
87
- t.string "item_type", null: false
88
- t.integer "item_id", null: false
89
- t.string "event", null: false
87
+ t.string "item_type", null: false
88
+ t.integer "item_id", null: false
89
+ t.string "event", null: false
90
90
  t.string "whodunnit"
91
91
  t.text "object"
92
- t.integer "transaction_id"
93
92
  t.datetime "created_at"
94
93
  t.string "ip"
95
94
  t.string "user_agent"
@@ -110,6 +109,10 @@ ActiveRecord::Schema.define(version: 20110208155312) do
110
109
  t.integer "length"
111
110
  end
112
111
 
112
+ create_table "things", force: true do |t|
113
+ t.string "name"
114
+ end
115
+
113
116
  create_table "translations", force: true do |t|
114
117
  t.string "headline"
115
118
  t.string "content"
@@ -146,6 +149,12 @@ ActiveRecord::Schema.define(version: 20110208155312) do
146
149
 
147
150
  add_index "versions", ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id"
148
151
 
152
+ create_table "whatchamajiggers", force: true do |t|
153
+ t.string "owner_type"
154
+ t.integer "owner_id"
155
+ t.string "name"
156
+ end
157
+
149
158
  create_table "widgets", force: true do |t|
150
159
  t.string "name"
151
160
  t.text "a_text"
@@ -7,8 +7,10 @@ class ControllerTest < ActionController::TestCase
7
7
  @request.env['REMOTE_ADDR'] = '127.0.0.1'
8
8
  end
9
9
 
10
+ # Mimick what RequestStore will do outside of the test env, since it is
11
+ # middleware, and doesn't get executed in controller / request specs
10
12
  teardown do
11
- PaperTrail.enabled_for_controller = true
13
+ RequestStore.store[:paper_trail] = nil
12
14
  end
13
15
 
14
16
  test 'disable on create' do
@@ -82,7 +84,7 @@ class ControllerTest < ActionController::TestCase
82
84
  @request.env['HTTP_USER_AGENT'] = 'Disable User-Agent'
83
85
  post :create, :widget => { :name => 'Flugel' }
84
86
  assert_equal 0, assigns(:widget).versions.length
85
- assert !PaperTrail.enabled_for_controller?
87
+ assert !PaperTrail.enabled_for_controller?
86
88
  assert PaperTrail.whodunnit.nil?
87
89
  assert PaperTrail.controller_info.nil?
88
90
  end
@@ -218,8 +218,8 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase
218
218
 
219
219
  should 'have changes' do
220
220
 
221
- #TODO Postgres does not appear to pass back ActiveSupport::TimeWithZone,
222
- # so chosing the lowest common denominator to test.
221
+ #TODO Postgres does not appear to pass back ActiveSupport::TimeWithZone,
222
+ # so chosing the lowest common denominator to test.
223
223
 
224
224
  changes = {
225
225
  'name' => [nil, 'Henry'],
@@ -332,6 +332,31 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase
332
332
  end
333
333
  end
334
334
 
335
+ context 'and has many associated polymorphic objects' do
336
+ setup do
337
+ @f0 = @widget.whatchamajiggers.create :name => 'f-zero'
338
+ @f1 = @widget.whatchamajiggers.create :name => 'f-zero'
339
+ @reified_widget = @widget.versions.last.reify
340
+ end
341
+
342
+ should 'copy the has_many associations when reifying' do
343
+ assert_equal @widget.whatchamajiggers.length, @reified_widget.whatchamajiggers.length
344
+ assert_same_elements @widget.whatchamajiggers, @reified_widget.whatchamajiggers
345
+
346
+ assert_equal @widget.versions.length, @reified_widget.versions.length
347
+ assert_same_elements @widget.versions, @reified_widget.versions
348
+ end
349
+ end
350
+
351
+ context 'polymorphic objects by themselves' do
352
+ setup do
353
+ @widget = Whatchamajigger.new :name => 'f-zero'
354
+ end
355
+
356
+ should 'not fail with a nil pointer on the polymorphic association' do
357
+ @widget.save!
358
+ end
359
+ end
335
360
 
336
361
  context 'and then destroyed' do
337
362
  setup do
@@ -446,7 +471,7 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase
446
471
  @last = @widget.versions.last
447
472
  end
448
473
 
449
- teardown do
474
+ teardown do
450
475
  restore_schema
451
476
  end
452
477
 
@@ -571,9 +596,9 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase
571
596
 
572
597
  should 'track who made the change' do
573
598
  assert_equal 'Alice', @version.whodunnit
574
- assert_nil @version.originator
599
+ assert_nil @version.paper_trail_originator
575
600
  assert_equal 'Alice', @version.terminator
576
- assert_equal 'Alice', @widget.originator
601
+ assert_equal 'Alice', @widget.paper_trail_originator
577
602
  end
578
603
 
579
604
  context 'when a record is updated' do
@@ -585,9 +610,9 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase
585
610
 
586
611
  should 'track who made the change' do
587
612
  assert_equal 'Bob', @version.whodunnit
588
- assert_equal 'Alice', @version.originator
613
+ assert_equal 'Alice', @version.paper_trail_originator
589
614
  assert_equal 'Bob', @version.terminator
590
- assert_equal 'Bob', @widget.originator
615
+ assert_equal 'Bob', @widget.paper_trail_originator
591
616
  end
592
617
 
593
618
  context 'when a record is destroyed' do
@@ -599,9 +624,9 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase
599
624
 
600
625
  should 'track who made the change' do
601
626
  assert_equal 'Charlie', @version.whodunnit
602
- assert_equal 'Bob', @version.originator
627
+ assert_equal 'Bob', @version.paper_trail_originator
603
628
  assert_equal 'Charlie', @version.terminator
604
- assert_equal 'Charlie', @widget.originator
629
+ assert_equal 'Charlie', @widget.paper_trail_originator
605
630
  end
606
631
  end
607
632
  end
@@ -620,7 +645,6 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase
620
645
  assert_not_nil @wotsit.versions.last.reify.updated_at
621
646
  end
622
647
 
623
- # Currently the gem generates a bunch of deprecation warnings about serialized attributes on AR 4.2
624
648
  should 'not generate warning' do
625
649
  # Tests that it doesn't try to write created_on as an attribute just because a created_on
626
650
  # method exists.
@@ -651,7 +675,7 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase
651
675
  should 'should return the correct originator' do
652
676
  PaperTrail.whodunnit = 'Ben'
653
677
  @foo.update_attribute(:name, 'Geoffrey')
654
- assert_equal PaperTrail.whodunnit, @foo.originator
678
+ assert_equal PaperTrail.whodunnit, @foo.paper_trail_originator
655
679
  end
656
680
 
657
681
  context 'when destroyed' do
@@ -1102,6 +1126,21 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase
1102
1126
  should 'return "overwritten" value on reified instance' do
1103
1127
  assert_equal 4, @song.versions.last.reify.length
1104
1128
  end
1129
+
1130
+ context 'Has a virtual attribute injected into the ActiveModel::Dirty changes' do
1131
+ setup do
1132
+ @song.name = 'Good Vibrations'
1133
+ @song.save
1134
+ @song.name = 'Yellow Submarine'
1135
+ end
1136
+
1137
+ should 'return persist the changes on the live instance properly' do
1138
+ assert_equal 'Yellow Submarine', @song.name
1139
+ end
1140
+ should 'return "overwritten" virtual attribute on the reified instance' do
1141
+ assert_equal 'Good Vibrations', @song.versions.last.reify.name
1142
+ end
1143
+ end
1105
1144
  end
1106
1145
 
1107
1146
 
@@ -1189,6 +1228,31 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase
1189
1228
  assert_equal 'destroy', @fluxor.versions.last.event
1190
1229
  end
1191
1230
  end
1231
+ context 'on []' do
1232
+ setup do
1233
+ Fluxor.reset_callbacks :create
1234
+ Fluxor.reset_callbacks :update
1235
+ Fluxor.reset_callbacks :destroy
1236
+ Fluxor.instance_eval <<-END
1237
+ has_paper_trail :on => []
1238
+ END
1239
+ @fluxor = Fluxor.create
1240
+ @fluxor.update_attributes :name => 'blah'
1241
+ end
1242
+
1243
+ teardown do
1244
+ @fluxor.destroy
1245
+ end
1246
+
1247
+ should 'not have any versions' do
1248
+ assert_equal 0, @fluxor.versions.length
1249
+ end
1250
+
1251
+ should 'still respond to touch_with_version' do
1252
+ @fluxor.touch_with_version
1253
+ assert_equal 1, @fluxor.versions.length
1254
+ end
1255
+ end
1192
1256
  context 'allows a symbol to be passed' do
1193
1257
  setup do
1194
1258
  Fluxor.reset_callbacks :create
@@ -1838,4 +1902,4 @@ class HasPaperTrailModelTransactionalTest < ActiveSupport::TestCase
1838
1902
  end
1839
1903
  end
1840
1904
  end
1841
- end
1905
+ end
@@ -10,7 +10,7 @@ class SerializerTest < ActiveSupport::TestCase
10
10
  END
11
11
 
12
12
  @fluxor = Fluxor.create :name => 'Some text.'
13
- @original_fluxor_attributes = @fluxor.send(:item_before_change).attributes # this is exactly what PaperTrail serializes
13
+ @original_fluxor_attributes = @fluxor.send(:attributes_before_change) # this is exactly what PaperTrail serializes
14
14
  @fluxor.update_attributes :name => 'Some more text.'
15
15
  end
16
16
 
@@ -41,7 +41,7 @@ class SerializerTest < ActiveSupport::TestCase
41
41
  END
42
42
 
43
43
  @fluxor = Fluxor.create :name => 'Some text.'
44
- @original_fluxor_attributes = @fluxor.send(:item_before_change).attributes # this is exactly what PaperTrail serializes
44
+ @original_fluxor_attributes = @fluxor.send(:attributes_before_change) # this is exactly what PaperTrail serializes
45
45
  @fluxor.update_attributes :name => 'Some more text.'
46
46
  end
47
47
 
@@ -83,7 +83,7 @@ class SerializerTest < ActiveSupport::TestCase
83
83
  END
84
84
 
85
85
  @fluxor = Fluxor.create
86
- @original_fluxor_attributes = @fluxor.send(:item_before_change).attributes.reject { |k,v| v.nil? } # this is exactly what PaperTrail serializes
86
+ @original_fluxor_attributes = @fluxor.send(:attributes_before_change).reject { |k,v| v.nil? } # this is exactly what PaperTrail serializes
87
87
  @fluxor.update_attributes :name => 'Some more text.'
88
88
  end
89
89