mirror of
https://github.com/internetee/registry.git
synced 2025-06-06 20:55:44 +02:00
65 lines
1.6 KiB
Ruby
65 lines
1.6 KiB
Ruby
require 'test_helper'
|
|
|
|
class Post < ApplicationRecord
|
|
has_paper_trail
|
|
end
|
|
|
|
class PaperTrailLearningTest < ActiveSupport::TestCase
|
|
setup do
|
|
ActiveRecord::Base.connection.create_table :posts do |t|
|
|
t.string :title
|
|
|
|
# Otherwise `touch` fails silently
|
|
t.datetime :updated_at
|
|
end
|
|
end
|
|
|
|
def test_returns_version_list
|
|
@record = Post.create!(title: 'any')
|
|
|
|
assert_equal 1, @record.versions.count
|
|
assert_respond_to @record.versions.first, :item_id
|
|
end
|
|
|
|
def test_returns_version_count_on_domains
|
|
@domain = domains(:airport)
|
|
@domain.save
|
|
|
|
assert_equal 1, @domain.versions.count
|
|
|
|
@domain.name = 'domain.test'
|
|
@domain.save!
|
|
assert_equal 2, @domain.versions.count
|
|
end
|
|
|
|
def test_returns_version_count_on_users
|
|
@user = users(:registrant)
|
|
|
|
@user.email = 'aaa@bbb.com'
|
|
@user.save!
|
|
assert_equal 1, @user.versions.count
|
|
end
|
|
|
|
def test_creates_new_version_upon_update
|
|
@record = Post.create!(title: 'old title')
|
|
original_record = @record.clone
|
|
|
|
assert_difference -> { @record.versions.size } do
|
|
@record.update!(title: 'new title')
|
|
end
|
|
version = @record.versions.last
|
|
assert_equal @record.id, version.item_id
|
|
assert_equal @record.class.name, version.item_type
|
|
assert_equal version.reify, original_record
|
|
assert_equal ['old title', 'new title'], version.object_changes['title']
|
|
assert_equal 'update', version.event
|
|
end
|
|
|
|
def test_touch
|
|
@record = Post.create!(title: 'any')
|
|
|
|
assert_difference -> { @record.versions.size } do
|
|
@record.touch
|
|
end
|
|
end
|
|
end
|