Testing Update Event Version Management in PaperTrail
This test suite examines the update functionality in the PaperTrail gem’s versioning system. It focuses on verifying version record creation during model updates and custom event handling. The tests ensure proper behavior for update events, custom event naming, and touch operations.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
paper-trail-gem/paper_trail
spec/models/on/update_spec.rb
# frozen_string_literal: true
require "spec_helper"
require_dependency "on/update"
module On
RSpec.describe Update, type: :model, versioning: true do
describe "#versions" do
it "only creates one version record, for the update event" do
record = described_class.create(name: "Alice")
record.update(name: "blah")
record.destroy
expect(record.versions.length).to(eq(1))
expect(record.versions.last.event).to(eq("update"))
end
end
describe "#paper_trail_event" do
it "rembembers the custom event name" do
record = described_class.create(name: "Alice")
record.paper_trail_event = "banana"
record.update(name: "blah")
record.destroy
expect(record.versions.length).to(eq(1))
expect(record.versions.last.event).to(eq("banana"))
end
end
describe "#touch" do
it "does not create a version" do
record = described_class.create(name: "Alice")
expect { record.touch }.not_to(
change { record.versions.count }
)
end
end
end
end