Testing Article Version Management Implementation in Paper Trail
This test suite validates the article management functionality in PaperTrail, focusing on versioning behavior and user attribution. It ensures proper version creation and whodunnit tracking while handling both enabled and disabled versioning scenarios.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
paper-trail-gem/paper_trail
spec/requests/articles_spec.rb
# frozen_string_literal: true
require "spec_helper"
RSpec.describe "Articles management", type: :request, order: :defined do
let(:valid_params) { { article: { title: "Doh", content: FFaker::Lorem.sentence } } }
context "with versioning disabled" do
specify { expect(PaperTrail).not_to be_enabled }
it "does not create a version" do
expect(PaperTrail.request).to be_enabled
expect {
post articles_path, params: valid_params
}.not_to change(PaperTrail::Version, :count)
end
end
with_versioning do
let(:article) { Article.last }
context "when `current_user` method returns a `String`" do
it "sets that value as the `whodunnit`" do
expect {
post articles_path, params: valid_params
}.to change(PaperTrail::Version, :count).by(1)
expect(article.title).to eq("Doh")
expect(article.versions.last.whodunnit).to eq("foobar")
end
end
end
end