1
0
Fork 0
mirror of https://github.com/paper-trail-gem/paper_trail.git synced 2022-11-09 11:33:19 -05:00
paper-trail-gem--paper_trail/test/unit/protected_attrs_test.rb
2016-02-15 18:13:45 -05:00

52 lines
1.6 KiB
Ruby

require 'test_helper'
class ProtectedAttrsTest < ActiveSupport::TestCase
subject { ProtectedWidget.new }
# These ActiveModel matchers (provided by shoulda-matchers) only work for
# Rails 3.
if ActiveRecord::VERSION::MAJOR < 4
accessible_attrs = ProtectedWidget.accessible_attributes.to_a
accessible_attrs.each do |attr_name|
should allow_mass_assignment_of(attr_name.to_sym)
end
inaccessible = ProtectedWidget.
column_names.
reject { |column_name| accessible_attrs.include?(column_name) }
inaccessible.each do |attr_name|
should_not allow_mass_assignment_of(attr_name.to_sym)
end
end
context 'A model with `attr_accessible` created' do
setup do
@widget = ProtectedWidget.create! :name => 'Henry'
@initial_attributes = @widget.attributes
end
should 'be `nil` in its previous version' do
assert_nil @widget.previous_version
end
context 'which is then updated' do
setup do
@widget.assign_attributes(:name => 'Jeff', :a_text => 'Short statement')
@widget.an_integer = 42
@widget.save!
end
should 'not be `nil` in its previous version' do
assert_not_nil @widget.previous_version
end
should 'the previous version should contain right attributes' do
# For some reason this test seems to be broken in JRuby 1.9 mode in the
# test env even though it works in the console. WTF?
unless ActiveRecord::VERSION::MAJOR >= 4 && defined?(JRUBY_VERSION)
assert_attributes_equal @widget.previous_version.attributes, @initial_attributes
end
end
end
end
end