paper-trail-gem--paper_trail/test/unit/version_test.rb

75 lines
2.0 KiB
Ruby

require 'test_helper'
class PaperTrail::VersionTest < ActiveSupport::TestCase
setup do
change_schema
@animal = Animal.create
assert PaperTrail::Version.creates.present?
end
context "PaperTrail::Version.creates" do
should "return only create events" do
PaperTrail::Version.creates.each do |version|
assert_equal "create", version.event
end
end
end
context "PaperTrail::Version.updates" do
setup {
@animal.update_attributes(:name => 'Animal')
assert PaperTrail::Version.updates.present?
}
should "return only update events" do
PaperTrail::Version.updates.each do |version|
assert_equal "update", version.event
end
end
end
context "PaperTrail::Version.destroys" do
setup {
@animal.destroy
assert PaperTrail::Version.destroys.present?
}
should "return only destroy events" do
PaperTrail::Version.destroys.each do |version|
assert_equal "destroy", version.event
end
end
end
context "PaperTrail::Version.not_creates" do
setup {
@animal.update_attributes(:name => 'Animal')
@animal.destroy
assert PaperTrail::Version.not_creates.present?
}
should "return all items except create events" do
PaperTrail::Version.not_creates.each do |version|
assert_not_equal "create", version.event
end
end
end
end
class VersionTest < ActiveSupport::TestCase
# without this, it sometimes picks up the changed schema from the previous test and gets confused
setup { PaperTrail::Version.reset_column_information }
context "Version class" do
should "be a subclass of the `PaperTrail::Version` class" do
assert Version < PaperTrail::Version
end
should "act like a `PaperTrail::Version` while warning the user" do
widget = Widget.create! :name => Faker::Name.name
widget.update_attributes! :name => Faker::Name.name
assert_equal Version.last.reify.name, widget.versions.last.reify.name
end
end
end