mirror of
https://github.com/paper-trail-gem/paper_trail.git
synced 2022-11-09 11:33:19 -05:00
96 lines
3.8 KiB
Ruby
96 lines
3.8 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe CallbackModifier, :type => :model do
|
|
with_versioning do
|
|
describe 'callback-methods', :versioning => true do
|
|
describe 'paper_trail_on_destroy' do
|
|
it 'should add :destroy to paper_trail_options[:on]' do
|
|
modifier = NoArgDestroyModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
expect(modifier.paper_trail_options[:on]).to eq [:destroy]
|
|
end
|
|
|
|
context 'when :before' do
|
|
it 'should create the version before destroy' do
|
|
modifier = BeforeDestroyModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
modifier.test_destroy
|
|
expect(modifier.versions.last.reify).not_to be_flagged_deleted
|
|
end
|
|
end
|
|
|
|
context 'when :after' do
|
|
it 'should create the version after destroy' do
|
|
modifier = AfterDestroyModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
modifier.test_destroy
|
|
expect(modifier.versions.last.reify).to be_flagged_deleted
|
|
end
|
|
end
|
|
|
|
context 'when no argument' do
|
|
it 'should default to after destroy' do
|
|
modifier = NoArgDestroyModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
modifier.test_destroy
|
|
expect(modifier.versions.last.reify).to be_flagged_deleted
|
|
end
|
|
end
|
|
end
|
|
|
|
describe 'paper_trail_on_update' do
|
|
it 'should add :update to paper_trail_options[:on]' do
|
|
modifier = UpdateModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
expect(modifier.paper_trail_options[:on]).to eq [:update]
|
|
end
|
|
|
|
it 'should create a version' do
|
|
modifier = UpdateModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
modifier.update_attributes! :some_content => 'modified'
|
|
expect(modifier.versions.last.event).to eq 'update'
|
|
end
|
|
end
|
|
|
|
describe 'paper_trail_on_create' do
|
|
it 'should add :create to paper_trail_options[:on]' do
|
|
modifier = CreateModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
expect(modifier.paper_trail_options[:on]).to eq [:create]
|
|
end
|
|
|
|
it 'should create a version' do
|
|
modifier = CreateModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
expect(modifier.versions.last.event).to eq 'create'
|
|
end
|
|
end
|
|
|
|
context 'when no callback-method used' do
|
|
it 'should set paper_trail_options[:on] to [:create, :update, :destroy]' do
|
|
modifier = DefaultModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
expect(modifier.paper_trail_options[:on]).to eq [:create, :update, :destroy]
|
|
end
|
|
|
|
it 'should default to track destroy' do
|
|
modifier = DefaultModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
modifier.destroy
|
|
expect(modifier.versions.last.event).to eq 'destroy'
|
|
end
|
|
|
|
it 'should default to track update' do
|
|
modifier = DefaultModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
modifier.update_attributes! :some_content => 'modified'
|
|
expect(modifier.versions.last.event).to eq 'update'
|
|
end
|
|
|
|
it 'should default to track create' do
|
|
modifier = DefaultModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
expect(modifier.versions.last.event).to eq 'create'
|
|
end
|
|
end
|
|
|
|
context 'when only one callback-method' do
|
|
it 'does only track the corresponding event' do
|
|
modifier = CreateModifier.create!(:some_content => FFaker::Lorem.sentence)
|
|
modifier.update_attributes!(:some_content => 'modified')
|
|
modifier.test_destroy
|
|
expect(modifier.versions.collect(&:event)).to eq ['create']
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|