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

108 lines
3.0 KiB
Ruby
Raw Normal View History

2017-12-11 04:05:11 +00:00
# frozen_string_literal: true
require "spec_helper"
2017-04-01 04:51:21 +00:00
RSpec.describe PaperTrail do
describe ".request" do
it "returns the value returned by the block" do
expect(described_class.request(whodunnit: "abe lincoln") { "A test" }).to eq("A test")
end
end
2017-10-17 22:34:44 +00:00
describe "#config", versioning: true do
it "allows for config values to be set" do
2017-10-27 16:07:47 +00:00
expect(described_class.config.enabled).to eq(true)
described_class.config.enabled = false
expect(described_class.config.enabled).to eq(false)
2017-10-17 22:34:44 +00:00
end
it "accepts blocks and yield the config instance" do
2017-10-27 16:07:47 +00:00
expect(described_class.config.enabled).to eq(true)
described_class.config { |c| c.enabled = false }
expect(described_class.config.enabled).to eq(false)
2017-10-17 22:34:44 +00:00
end
end
describe "#configure" do
it "is an alias for the `config` method" do
2017-10-27 16:07:47 +00:00
expect(described_class.method(:configure)).to eq(
described_class.method(:config)
)
2017-10-17 22:34:44 +00:00
end
end
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
2020-08-18 05:56:22 +00:00
after do
described_class.enabled = true
end
2016-08-22 04:27:16 +00:00
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
end
2021-08-30 02:22:39 +00:00
context "when default" do
2017-04-01 05:50:13 +00:00
it "has 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
2017-04-01 05:50:13 +00:00
it "has 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
2021-08-30 02:22:39 +00:00
context "when error within `with_versioning` block" do
2017-04-01 05:50:13 +00:00
it "reverts the value of `PaperTrail.enabled?` to its 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
2021-08-30 02:22:39 +00:00
context "with `versioning: true`", versioning: true do
2017-04-01 05:50:13 +00:00
it "has 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
2017-04-01 05:50:13 +00:00
it "keeps 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
2021-08-30 02:22:39 +00:00
context "with `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
2017-04-01 05:50:13 +00:00
it "has versioning on by default" do
2017-04-01 04:51:21 +00:00
expect(described_class).to be_enabled
end
end
2017-04-01 05:50:13 +00:00
it "does 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
2018-02-01 17:04:50 +00:00
it "returns the expected String" do
expect(described_class.version).to eq(described_class::VERSION::STRING)
end
end
end