Testing PaperTrail Version Control Implementation in paper_trail
This test suite evaluates the PaperTrail request functionality in an Articles controller context. It specifically tests the behavior of version tracking when PaperTrail is enabled and disabled, ensuring proper state management during article creation.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
paper-trail-gem/paper_trail
spec/controllers/articles_controller_spec.rb
# frozen_string_literal: true
require "spec_helper"
RSpec.describe ArticlesController, type: :controller do
describe "PaperTrail.request.enabled?" do
context "when PaperTrail.enabled? == true" do
before { PaperTrail.enabled = true }
after { PaperTrail.enabled = false }
it "returns true" do
expect(PaperTrail.enabled?).to eq(true)
post :create, params: { article: { title: "Doh", content: FFaker::Lorem.sentence } }
expect(assigns(:article)).not_to be_nil
expect(PaperTrail.request.enabled?).to eq(true)
expect(assigns(:article).versions.length).to eq(1)
end
end
context "when PaperTrail.enabled? == false" do
it "returns false" do
expect(PaperTrail.enabled?).to eq(false)
post :create, params: { article: { title: "Doh", content: FFaker::Lorem.sentence } }
expect(PaperTrail.request.enabled?).to eq(false)
expect(assigns(:article).versions.length).to eq(0)
end
end
end
end