Testing JoinedVersion Model Operations in PaperTrail
This test suite validates the JoinedVersion model functionality in PaperTrail, focusing on version history management with default scopes and joins. The tests ensure reliable version tracking and querying capabilities while maintaining data integrity across joined tables.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
paper-trail-gem/paper_trail
spec/models/joined_version_spec.rb
# frozen_string_literal: true
require "spec_helper"
RSpec.describe JoinedVersion, type: :model, versioning: true do
let(:widget) { Widget.create!(name: FFaker::Name.name) }
let(:version) { described_class.first }
describe "default_scope" do
it { expect(described_class.default_scopes).not_to be_empty }
end
describe "VersionConcern::ClassMethods" do
before { widget } # persist a widget
describe "#subsequent" do
it "does not raise error when there is a default_scope that joins" do
described_class.subsequent(version).first
end
end
describe "#preceding" do
it "does not raise error when there is a default scope that joins" do
described_class.preceding(version).first
end
end
describe "#between" do
it "does not raise error when there is a default scope that joins" do
described_class.between(Time.current, 1.minute.from_now).first
end
end
end
describe "#index" do
it { is_expected.to respond_to(:index) }
it "does not raise error when there is a default scope that joins" do
widget # persist a widget
version.index
end
end
end