Testing Update Event Data Handling in PaperTrail
This test suite examines the Update event handling in PaperTrail’s versioning system, specifically focusing on the #data method behavior. It verifies how object changes are tracked and stored under different touch scenarios, ensuring proper version history management.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
paper-trail-gem/paper_trail
spec/paper_trail/events/update_spec.rb
# frozen_string_literal: true
require "spec_helper"
module PaperTrail
module Events
::RSpec.describe Update do
describe "#data", versioning: true do
context "when is_touch false" do
it "object_changes is present" do
carter = Family::CelebrityFamily.create(
name: "Carter",
path_to_stardom: "Mexican radio"
)
carter.path_to_stardom = "Johnny"
data = described_class.new(carter, false, false, nil).data
expect(data[:object_changes]).to eq(
<<~YAML
---
path_to_stardom:
- Mexican radio
- Johnny
YAML
)
end
end
context "when is_touch true" do
it "object_changes is nil" do
carter = Family::CelebrityFamily.create(
name: "Carter",
path_to_stardom: "Mexican radio"
)
carter.path_to_stardom = "Johnny"
data = described_class.new(carter, false, true, nil).data
expect(data[:object_changes]).to be_nil
end
end
end
end
end
end