paper-trail-gem--paper_trail/spec/paper_trail_spec.rb

93 lines
2.6 KiB
Ruby
Raw Normal View History

require "rails_helper"
2017-04-01 04:51:21 +00:00
RSpec.describe PaperTrail do
2017-04-01 05:19:54 +00:00
describe ".gem_version" do
it "returns a Gem::Version" do
v = described_class.gem_version
expect(v).to be_a(::Gem::Version)
expect(v.to_s).to eq(::PaperTrail::VERSION::STRING)
end
end
2016-08-22 04:27:16 +00:00
context "when enabled" do
it "affects all threads" do
2017-04-01 04:51:21 +00:00
Thread.new { described_class.enabled = false }.join
assert_equal false, described_class.enabled?
2016-08-22 04:27:16 +00:00
end
after do
2017-04-01 04:51:21 +00:00
described_class.enabled = true
2016-08-22 04:27:16 +00:00
end
end
context "default" do
it "should have versioning off by default" do
2017-04-01 04:51:21 +00:00
expect(described_class).not_to be_enabled
end
2015-12-19 23:47:13 +00:00
it "should turn versioning on in a `with_versioning` block" do
2017-04-01 04:51:21 +00:00
expect(described_class).not_to be_enabled
with_versioning do
2017-04-01 04:51:21 +00:00
expect(described_class).to be_enabled
end
2017-04-01 04:51:21 +00:00
expect(described_class).not_to be_enabled
end
context "error within `with_versioning` block" do
it "should revert the value of `PaperTrail.enabled?` to it's previous state" do
2017-04-01 04:51:21 +00:00
expect(described_class).not_to be_enabled
2015-12-19 23:47:13 +00:00
expect { with_versioning { raise } }.to raise_error(RuntimeError)
2017-04-01 04:51:21 +00:00
expect(described_class).not_to be_enabled
end
end
end
context "`versioning: true`", versioning: true do
it "should have versioning on by default" do
2017-04-01 04:51:21 +00:00
expect(described_class).to be_enabled
end
2015-12-19 23:47:13 +00:00
it "should keep versioning on after a with_versioning block" do
2017-04-01 04:51:21 +00:00
expect(described_class).to be_enabled
with_versioning do
2017-04-01 04:51:21 +00:00
expect(described_class).to be_enabled
end
2017-04-01 04:51:21 +00:00
expect(described_class).to be_enabled
end
end
context "`with_versioning` block at class level" do
2017-04-01 04:51:21 +00:00
it { expect(described_class).not_to be_enabled }
with_versioning do
it "should have versioning on by default" do
2017-04-01 04:51:21 +00:00
expect(described_class).to be_enabled
end
end
it "should not leak the `enabled?` state into successive tests" do
2017-04-01 04:51:21 +00:00
expect(described_class).not_to be_enabled
end
end
2017-04-01 01:42:14 +00:00
describe ".version" do
2017-04-01 04:51:21 +00:00
it { expect(described_class).to respond_to(:version) }
it { expect(described_class.version).to eq(described_class::VERSION::STRING) }
end
2017-04-01 01:42:14 +00:00
describe ".whodunnit" do
2017-04-01 04:51:21 +00:00
before(:all) { described_class.whodunnit = "foobar" }
it "should get set to `nil` by default" do
2017-04-01 04:51:21 +00:00
expect(described_class.whodunnit).to be_nil
end
end
2017-04-01 01:42:14 +00:00
describe ".controller_info" do
2017-04-01 04:51:21 +00:00
before(:all) { described_class.controller_info = { foo: "bar" } }
it "should get set to an empty hash before each test" do
2017-04-01 04:51:21 +00:00
expect(described_class.controller_info).to eq({})
end
end
end