Testing NotOnUpdate Version Management in PaperTrail
This test suite examines the behavior of the NotOnUpdate model in PaperTrail, specifically focusing on version creation and change tracking. The tests verify the save_with_version functionality and its interaction with callback states, ensuring proper version management and change capture.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
paper-trail-gem/paper_trail
spec/models/not_on_update_spec.rb
# frozen_string_literal: true
require "spec_helper"
RSpec.describe NotOnUpdate, type: :model do
describe "#save_with_version", versioning: true do
let!(:record) { described_class.create! }
it "creates a version, regardless" do
expect { record.paper_trail.save_with_version }.to change {
PaperTrail::Version.count
}.by(+1)
end
it "captures changes when in_after_callback is true" do
record.name = "test"
record.paper_trail.save_with_version(in_after_callback: true)
changeset = record.versions.last.changeset
expect(changeset[:name]).to eq([nil, "test"])
end
end
end