Lint: Fix RSpec/ExampleWording

This commit is contained in:
Jared Beck 2017-04-01 01:50:13 -04:00
parent 2246570dc3
commit af10cd4f00
17 changed files with 96 additions and 100 deletions

View File

@ -18,9 +18,6 @@ Style/FrozenStringLiteralComment:
RSpec/BeforeAfterAll: RSpec/BeforeAfterAll:
Enabled: false Enabled: false
RSpec/ExampleWording:
Enabled: false
RSpec/ExampleLength: RSpec/ExampleLength:
Enabled: false Enabled: false

View File

@ -13,11 +13,11 @@ describe Boolit, type: :model do
before { subject.update_attributes!(name: FFaker::Name.name) } before { subject.update_attributes!(name: FFaker::Name.name) }
it "should have versions" do it "has two versions" do
expect(subject.versions.size).to eq(2) expect(subject.versions.size).to eq(2)
end end
it "should be able to be reified and persisted" do it "can be reified and persisted" do
expect { subject.versions.last.reify.save! }.to_not raise_error expect { subject.versions.last.reify.save! }.to_not raise_error
end end
@ -28,7 +28,7 @@ describe Boolit, type: :model do
expect(Boolit.first).to be_nil expect(Boolit.first).to be_nil
end end
it "should still be able to be reified and persisted" do it "still can be reified and persisted" do
expect { subject.paper_trail.previous_version.save! }.to_not raise_error expect { subject.paper_trail.previous_version.save! }.to_not raise_error
end end
@ -40,7 +40,7 @@ describe Boolit, type: :model do
end end
after { PaperTrail.serializer = PaperTrail::Serializers::YAML } after { PaperTrail.serializer = PaperTrail::Serializers::YAML }
it "should not overwrite that attribute during the reification process" do it "does not overwrite that attribute during the reification process" do
expect(subject.paper_trail.previous_version.name).to be_nil expect(subject.paper_trail.previous_version.name).to be_nil
end end
end end

View File

@ -4,13 +4,13 @@ describe CallbackModifier, type: :model do
with_versioning do with_versioning do
describe "callback-methods", versioning: true do describe "callback-methods", versioning: true do
describe "paper_trail_on_destroy" do describe "paper_trail_on_destroy" do
it "should add :destroy to paper_trail_options[:on]" do it "adds :destroy to paper_trail_options[:on]" do
modifier = NoArgDestroyModifier.create!(some_content: FFaker::Lorem.sentence) modifier = NoArgDestroyModifier.create!(some_content: FFaker::Lorem.sentence)
expect(modifier.paper_trail_options[:on]).to eq [:destroy] expect(modifier.paper_trail_options[:on]).to eq [:destroy]
end end
context "when :before" do context "when :before" do
it "should create the version before destroy" do it "creates the version before destroy" do
modifier = BeforeDestroyModifier.create!(some_content: FFaker::Lorem.sentence) modifier = BeforeDestroyModifier.create!(some_content: FFaker::Lorem.sentence)
modifier.test_destroy modifier.test_destroy
expect(modifier.versions.last.reify).not_to be_flagged_deleted expect(modifier.versions.last.reify).not_to be_flagged_deleted
@ -18,7 +18,7 @@ describe CallbackModifier, type: :model do
end end
context "when :after" do context "when :after" do
it "should create the version after destroy" do it "creates the version after destroy" do
modifier = AfterDestroyModifier.create!(some_content: FFaker::Lorem.sentence) modifier = AfterDestroyModifier.create!(some_content: FFaker::Lorem.sentence)
modifier.test_destroy modifier.test_destroy
expect(modifier.versions.last.reify).to be_flagged_deleted expect(modifier.versions.last.reify).to be_flagged_deleted
@ -26,7 +26,7 @@ describe CallbackModifier, type: :model do
end end
context "when no argument" do context "when no argument" do
it "should default to before destroy" do it "defaults to before destroy" do
modifier = NoArgDestroyModifier.create!(some_content: FFaker::Lorem.sentence) modifier = NoArgDestroyModifier.create!(some_content: FFaker::Lorem.sentence)
modifier.test_destroy modifier.test_destroy
expect(modifier.versions.last.reify).not_to be_flagged_deleted expect(modifier.versions.last.reify).not_to be_flagged_deleted
@ -35,12 +35,12 @@ describe CallbackModifier, type: :model do
end end
describe "paper_trail_on_update" do describe "paper_trail_on_update" do
it "should add :update to paper_trail_options[:on]" do it "adds :update to paper_trail_options[:on]" do
modifier = UpdateModifier.create!(some_content: FFaker::Lorem.sentence) modifier = UpdateModifier.create!(some_content: FFaker::Lorem.sentence)
expect(modifier.paper_trail_options[:on]).to eq [:update] expect(modifier.paper_trail_options[:on]).to eq [:update]
end end
it "should create a version" do it "creates a version" do
modifier = UpdateModifier.create!(some_content: FFaker::Lorem.sentence) modifier = UpdateModifier.create!(some_content: FFaker::Lorem.sentence)
modifier.update_attributes! some_content: "modified" modifier.update_attributes! some_content: "modified"
expect(modifier.versions.last.event).to eq "update" expect(modifier.versions.last.event).to eq "update"
@ -48,36 +48,36 @@ describe CallbackModifier, type: :model do
end end
describe "paper_trail_on_create" do describe "paper_trail_on_create" do
it "should add :create to paper_trail_options[:on]" do it "adds :create to paper_trail_options[:on]" do
modifier = CreateModifier.create!(some_content: FFaker::Lorem.sentence) modifier = CreateModifier.create!(some_content: FFaker::Lorem.sentence)
expect(modifier.paper_trail_options[:on]).to eq [:create] expect(modifier.paper_trail_options[:on]).to eq [:create]
end end
it "should create a version" do it "creates a version" do
modifier = CreateModifier.create!(some_content: FFaker::Lorem.sentence) modifier = CreateModifier.create!(some_content: FFaker::Lorem.sentence)
expect(modifier.versions.last.event).to eq "create" expect(modifier.versions.last.event).to eq "create"
end end
end end
context "when no callback-method used" do context "when no callback-method used" do
it "should set paper_trail_options[:on] to [:create, :update, :destroy]" do it "sets paper_trail_options[:on] to [:create, :update, :destroy]" do
modifier = DefaultModifier.create!(some_content: FFaker::Lorem.sentence) modifier = DefaultModifier.create!(some_content: FFaker::Lorem.sentence)
expect(modifier.paper_trail_options[:on]).to eq %i(create update destroy) expect(modifier.paper_trail_options[:on]).to eq %i(create update destroy)
end end
it "should default to track destroy" do it "tracks destroy" do
modifier = DefaultModifier.create!(some_content: FFaker::Lorem.sentence) modifier = DefaultModifier.create!(some_content: FFaker::Lorem.sentence)
modifier.destroy modifier.destroy
expect(modifier.versions.last.event).to eq "destroy" expect(modifier.versions.last.event).to eq "destroy"
end end
it "should default to track update" do it "tracks update" do
modifier = DefaultModifier.create!(some_content: FFaker::Lorem.sentence) modifier = DefaultModifier.create!(some_content: FFaker::Lorem.sentence)
modifier.update_attributes! some_content: "modified" modifier.update_attributes! some_content: "modified"
expect(modifier.versions.last.event).to eq "update" expect(modifier.versions.last.event).to eq "update"
end end
it "should default to track create" do it "tracks create" do
modifier = DefaultModifier.create!(some_content: FFaker::Lorem.sentence) modifier = DefaultModifier.create!(some_content: FFaker::Lorem.sentence)
expect(modifier.versions.last.event).to eq "create" expect(modifier.versions.last.event).to eq "create"
end end

View File

@ -6,15 +6,15 @@ describe Gadget, type: :model do
let(:gadget) { Gadget.create!(name: "Wrench", brand: "Acme") } let(:gadget) { Gadget.create!(name: "Wrench", brand: "Acme") }
describe "updates", versioning: true do describe "updates", versioning: true do
it "should generate a version for updates to `name` attribute" do it "generates a version for updates to `name` attribute" do
expect { gadget.update_attribute(:name, "Hammer") }.to(change { gadget.versions.size }.by(1)) expect { gadget.update_attribute(:name, "Hammer") }.to(change { gadget.versions.size }.by(1))
end end
it "should ignore for updates to `brand` attribute" do it "ignores for updates to `brand` attribute" do
expect { gadget.update_attribute(:brand, "Stanley") }.to_not(change { gadget.versions.size }) expect { gadget.update_attribute(:brand, "Stanley") }.to_not(change { gadget.versions.size })
end end
it "should still generate a version when only the `updated_at` attribute is updated" do it "still generates a version when only the `updated_at` attribute is updated" do
# Plus 1 second because MySQL lacks sub-second resolution # Plus 1 second because MySQL lacks sub-second resolution
expect { expect {
gadget.update_attribute(:updated_at, Time.now + 1) gadget.update_attribute(:updated_at, Time.now + 1)
@ -36,25 +36,25 @@ describe Gadget, type: :model do
before { subject.save! } before { subject.save! }
context "without update timestamps" do context "without update timestamps" do
it "should only acknowledge non-ignored attrs" do it "only acknowledges non-ignored attrs" do
subject.name = "Wrench" subject.name = "Wrench"
expect(subject.paper_trail.changed_notably?).to be true expect(subject.paper_trail.changed_notably?).to be true
end end
it "should not acknowledge ignored attr (brand)" do it "does not acknowledge ignored attr (brand)" do
subject.brand = "Acme" subject.brand = "Acme"
expect(subject.paper_trail.changed_notably?).to be false expect(subject.paper_trail.changed_notably?).to be false
end end
end end
context "with update timestamps" do context "with update timestamps" do
it "should only acknowledge non-ignored attrs" do it "only acknowledges non-ignored attrs" do
subject.name = "Wrench" subject.name = "Wrench"
subject.updated_at = Time.now subject.updated_at = Time.now
expect(subject.paper_trail.changed_notably?).to be true expect(subject.paper_trail.changed_notably?).to be true
end end
it "should not acknowledge ignored attrs and timestamps only" do it "does not acknowledge ignored attrs and timestamps only" do
subject.brand = "Acme" subject.brand = "Acme"
subject.updated_at = Time.now subject.updated_at = Time.now
expect(subject.paper_trail.changed_notably?).to be false expect(subject.paper_trail.changed_notably?).to be false

View File

@ -15,19 +15,19 @@ describe JoinedVersion, type: :model, versioning: true do
before { widget } # persist a widget before { widget } # persist a widget
describe "#subsequent" do describe "#subsequent" do
it "shouldn't error out when there is a default_scope that joins" do it "does not raise error when there is a default_scope that joins" do
JoinedVersion.subsequent(version).first JoinedVersion.subsequent(version).first
end end
end end
describe "#preceding" do describe "#preceding" do
it "shouldn't error out when there is a default scope that joins" do it "does not raise error when there is a default scope that joins" do
JoinedVersion.preceding(version).first JoinedVersion.preceding(version).first
end end
end end
describe "#between" do describe "#between" do
it "shouldn't error out when there is a default scope that joins" do it "does not raise error when there is a default scope that joins" do
JoinedVersion.between(Time.now, 1.minute.from_now).first JoinedVersion.between(Time.now, 1.minute.from_now).first
end end
end end
@ -38,7 +38,7 @@ describe JoinedVersion, type: :model, versioning: true do
describe "#index" do describe "#index" do
it { is_expected.to respond_to(:index) } it { is_expected.to respond_to(:index) }
it "shouldn't error out when there is a default scope that joins" do it "does not raise error when there is a default scope that joins" do
widget # persist a widget widget # persist a widget
version.index version.index
end end

View File

@ -3,16 +3,15 @@ require "rails_helper"
# The `json_versions` table tests postgres' `json` data type. So, that # The `json_versions` table tests postgres' `json` data type. So, that
# table is only created when testing against postgres and ActiveRecord >= 4. # table is only created when testing against postgres and ActiveRecord >= 4.
if JsonVersion.table_exists? if JsonVersion.table_exists?
RSpec.describe JsonVersion, type: :model do
describe JsonVersion, type: :model do it "includes the VersionConcern module" do
it "should include the `VersionConcern` module to get base functionality" do expect(described_class).to include(PaperTrail::VersionConcern)
expect(JsonVersion).to include(PaperTrail::VersionConcern)
end end
describe "Methods" do describe "Methods" do
describe "Class" do describe "Class" do
describe "#where_object" do describe "#where_object" do
it { expect(JsonVersion).to respond_to(:where_object) } it { expect(described_class).to respond_to(:where_object) }
it "escapes values" do it "escapes values" do
f = Fruit.create(name: "Bobby") f = Fruit.create(name: "Bobby")
@ -25,9 +24,9 @@ if JsonVersion.table_exists?
end end
context "invalid arguments" do context "invalid arguments" do
it "should raise an error" do it "raises an error" do
expect { JsonVersion.where_object(:foo) }.to raise_error(ArgumentError) expect { described_class.where_object(:foo) }.to raise_error(ArgumentError)
expect { JsonVersion.where_object([]) }.to raise_error(ArgumentError) expect { described_class.where_object([]) }.to raise_error(ArgumentError)
end end
end end
@ -43,15 +42,15 @@ if JsonVersion.table_exists?
fruit.update_attributes!(name: fruit_names.sample, color: FFaker::Color.name) fruit.update_attributes!(name: fruit_names.sample, color: FFaker::Color.name)
end end
it "should be able to locate versions according to their `object` contents" do it "locates versions according to their `object` contents" do
expect(JsonVersion.where_object(name: name)).to eq([fruit.versions[1]]) expect(described_class.where_object(name: name)).to eq([fruit.versions[1]])
expect(JsonVersion.where_object(color: color)).to eq([fruit.versions[2]]) expect(described_class.where_object(color: color)).to eq([fruit.versions[2]])
end end
end end
end end
describe "#where_object_changes" do describe "#where_object_changes" do
it { expect(JsonVersion).to respond_to(:where_object_changes) } it { expect(described_class).to respond_to(:where_object_changes) }
it "escapes values" do it "escapes values" do
f = Fruit.create(name: "Bobby") f = Fruit.create(name: "Bobby")
@ -64,9 +63,9 @@ if JsonVersion.table_exists?
end end
context "invalid arguments" do context "invalid arguments" do
it "should raise an error" do it "raises an error" do
expect { JsonVersion.where_object_changes(:foo) }.to raise_error(ArgumentError) expect { described_class.where_object_changes(:foo) }.to raise_error(ArgumentError)
expect { JsonVersion.where_object_changes([]) }.to raise_error(ArgumentError) expect { described_class.where_object_changes([]) }.to raise_error(ArgumentError)
end end
end end

View File

@ -4,7 +4,7 @@ describe NotOnUpdate, type: :model do
describe "#touch_with_version", versioning: true do describe "#touch_with_version", versioning: true do
let!(:record) { described_class.create! } let!(:record) { described_class.create! }
it "should create a version, regardless" do it "creates a version, regardless" do
expect { record.paper_trail.touch_with_version }.to change { expect { record.paper_trail.touch_with_version }.to change {
PaperTrail::Version.count PaperTrail::Version.count
}.by(+1) }.by(+1)

View File

@ -4,7 +4,7 @@ describe PostWithStatus, type: :model do
with_versioning do with_versioning do
let(:post) { described_class.create!(status: "draft") } let(:post) { described_class.create!(status: "draft") }
it "should stash the enum value properly in versions" do it "saves the enum value in versions" do
post.published! post.published!
post.archived! post.archived!
expect(post.paper_trail.previous_version.published?).to be true expect(post.paper_trail.previous_version.published?).to be true
@ -23,7 +23,7 @@ describe PostWithStatus, type: :model do
context "storing enum object_changes" do context "storing enum object_changes" do
subject { post.versions.last } subject { post.versions.last }
it "should stash the enum value properly in versions object_changes" do it "saves the enum value properly in versions object_changes" do
post.published! post.published!
post.archived! post.archived!
expect(subject.changeset["status"]).to eql %w(published archived) expect(subject.changeset["status"]).to eql %w(published archived)

View File

@ -9,7 +9,7 @@ describe Skipper, type: :model do
let(:t1) { Time.zone.local(2015, 7, 15, 20, 34, 0) } let(:t1) { Time.zone.local(2015, 7, 15, 20, 34, 0) }
let(:t2) { Time.zone.local(2015, 7, 15, 20, 34, 30) } let(:t2) { Time.zone.local(2015, 7, 15, 20, 34, 30) }
it "should not create a version" do it "does not create a version" do
skipper = Skipper.create!(another_timestamp: t1) skipper = Skipper.create!(another_timestamp: t1)
expect { expect {
skipper.update_attributes!(another_timestamp: t2) skipper.update_attributes!(another_timestamp: t2)
@ -24,7 +24,7 @@ describe Skipper, type: :model do
let(:t2) { Time.zone.local(2015, 7, 15, 20, 34, 30) } let(:t2) { Time.zone.local(2015, 7, 15, 20, 34, 30) }
context "without preserve (default)" do context "without preserve (default)" do
it "should have no timestamp" do it "has no timestamp" do
skipper = Skipper.create!(another_timestamp: t1) skipper = Skipper.create!(another_timestamp: t1)
skipper.update_attributes!(another_timestamp: t2, name: "Foobar") skipper.update_attributes!(another_timestamp: t2, name: "Foobar")
skipper = skipper.versions.last.reify skipper = skipper.versions.last.reify
@ -33,7 +33,7 @@ describe Skipper, type: :model do
end end
context "with preserve" do context "with preserve" do
it "should preserve its timestamp" do it "preserves its timestamp" do
skipper = Skipper.create!(another_timestamp: t1) skipper = Skipper.create!(another_timestamp: t1)
skipper.update_attributes!(another_timestamp: t2, name: "Foobar") skipper.update_attributes!(another_timestamp: t2, name: "Foobar")
skipper = skipper.versions.last.reify(unversioned_attributes: :preserve) skipper = skipper.versions.last.reify(unversioned_attributes: :preserve)

View File

@ -3,7 +3,7 @@ require "rails_helper"
describe Thing, type: :model do describe Thing, type: :model do
it { is_expected.to be_versioned } it { is_expected.to be_versioned }
describe "should not store object_changes", versioning: true do describe "does not store object_changes", versioning: true do
let(:thing) { Thing.create(name: "pencil") } let(:thing) { Thing.create(name: "pencil") }
it { expect(thing.versions.last.object_changes).to be_nil } it { expect(thing.versions.last.object_changes).to be_nil }

View File

@ -1,7 +1,7 @@
require "rails_helper" require "rails_helper"
describe PaperTrail::Version, type: :model do describe PaperTrail::Version, type: :model do
it "should include the `VersionConcern` module to get base functionality" do it "includes the VersionConcern module" do
expect(PaperTrail::Version).to include(PaperTrail::VersionConcern) expect(PaperTrail::Version).to include(PaperTrail::VersionConcern)
end end
@ -13,7 +13,7 @@ describe PaperTrail::Version, type: :model do
context "serializer is YAML" do context "serializer is YAML" do
specify { expect(PaperTrail.serializer).to be PaperTrail::Serializers::YAML } specify { expect(PaperTrail.serializer).to be PaperTrail::Serializers::YAML }
it "should store out as a plain hash" do it "store out as a plain hash" do
expect(value =~ /HashWithIndifferentAccess/).to be_nil expect(value =~ /HashWithIndifferentAccess/).to be_nil
end end
end end
@ -21,7 +21,7 @@ describe PaperTrail::Version, type: :model do
context "serializer is JSON" do context "serializer is JSON" do
before(:all) { PaperTrail.serializer = PaperTrail::Serializers::JSON } before(:all) { PaperTrail.serializer = PaperTrail::Serializers::JSON }
it "should store out as a plain hash" do it "store out as a plain hash" do
expect(value =~ /HashWithIndifferentAccess/).to be_nil expect(value =~ /HashWithIndifferentAccess/).to be_nil
end end
@ -40,7 +40,7 @@ describe PaperTrail::Version, type: :model do
context "No previous versions" do context "No previous versions" do
specify { expect(subject.previous).to be_nil } specify { expect(subject.previous).to be_nil }
it "should return nil" do it "return nil" do
expect(subject.paper_trail_originator).to be_nil expect(subject.paper_trail_originator).to be_nil
end end
end end
@ -58,7 +58,7 @@ describe PaperTrail::Version, type: :model do
specify { expect(subject.previous).to be_instance_of(PaperTrail::Version) } specify { expect(subject.previous).to be_instance_of(PaperTrail::Version) }
it "should return nil" do it "return nil" do
expect(subject.paper_trail_originator).to eq(name) expect(subject.paper_trail_originator).to eq(name)
end end
end end
@ -67,13 +67,13 @@ describe PaperTrail::Version, type: :model do
describe "#originator" do describe "#originator" do
it { is_expected.to respond_to(:originator) } it { is_expected.to respond_to(:originator) }
it "should set the invoke `paper_trail_originator`" do it "sets the invoke `paper_trail_originator`" do
allow(ActiveSupport::Deprecation).to receive(:warn) allow(ActiveSupport::Deprecation).to receive(:warn)
is_expected.to receive(:paper_trail_originator) is_expected.to receive(:paper_trail_originator)
subject.originator subject.originator
end end
it "should display a deprecation warning" do it "displays a deprecation warning" do
expect(ActiveSupport::Deprecation).to receive(:warn). expect(ActiveSupport::Deprecation).to receive(:warn).
with(/Use paper_trail_originator instead of originator/) with(/Use paper_trail_originator instead of originator/)
subject.originator subject.originator
@ -95,7 +95,7 @@ describe PaperTrail::Version, type: :model do
describe "#version_author" do describe "#version_author" do
it { is_expected.to respond_to(:version_author) } it { is_expected.to respond_to(:version_author) }
it "should be an alias for the `terminator` method" do it "is an alias for the `terminator` method" do
expect(subject.method(:version_author)).to eq(subject.method(:terminator)) expect(subject.method(:version_author)).to eq(subject.method(:terminator))
end end
end end
@ -136,7 +136,7 @@ describe PaperTrail::Version, type: :model do
it { expect(PaperTrail::Version).to respond_to(:where_object) } it { expect(PaperTrail::Version).to respond_to(:where_object) }
context "invalid arguments" do context "invalid arguments" do
it "should raise an error" do it "raises an error" do
expect { expect {
PaperTrail::Version.where_object(:foo) PaperTrail::Version.where_object(:foo)
}.to raise_error(ArgumentError) }.to raise_error(ArgumentError)
@ -162,7 +162,7 @@ describe PaperTrail::Version, type: :model do
expect(PaperTrail.serializer).to be PaperTrail::Serializers::YAML expect(PaperTrail.serializer).to be PaperTrail::Serializers::YAML
end end
it "should be able to locate versions according to their `object` contents" do it "locates versions according to their `object` contents" do
expect( expect(
PaperTrail::Version.where_object(name: name) PaperTrail::Version.where_object(name: name)
).to eq([widget.versions[1]]) ).to eq([widget.versions[1]])
@ -181,7 +181,7 @@ describe PaperTrail::Version, type: :model do
expect(PaperTrail.serializer).to be PaperTrail::Serializers::JSON expect(PaperTrail.serializer).to be PaperTrail::Serializers::JSON
end end
it "should be able to locate versions according to their `object` contents" do it "locates versions according to their `object` contents" do
expect( expect(
PaperTrail::Version.where_object(name: name) PaperTrail::Version.where_object(name: name)
).to eq([widget.versions[1]]) ).to eq([widget.versions[1]])
@ -199,7 +199,7 @@ describe PaperTrail::Version, type: :model do
describe "#where_object_changes" do describe "#where_object_changes" do
context "invalid arguments" do context "invalid arguments" do
it "should raise an error" do it "raises an error" do
expect { expect {
PaperTrail::Version.where_object_changes(:foo) PaperTrail::Version.where_object_changes(:foo)
}.to raise_error(ArgumentError) }.to raise_error(ArgumentError)

View File

@ -38,13 +38,13 @@ describe Widget, type: :model do
describe "versioning option" do describe "versioning option" do
context "enabled", versioning: true do context "enabled", versioning: true do
it "should enable versioning" do it "enables versioning" do
expect(widget.versions.size).to eq(1) expect(widget.versions.size).to eq(1)
end end
end end
context "disabled (default)" do context "disabled (default)" do
it "should not enable versioning" do it "does not enable versioning" do
expect(widget.versions.size).to eq(0) expect(widget.versions.size).to eq(0)
end end
end end
@ -69,7 +69,7 @@ describe Widget, type: :model do
describe "after_create" do describe "after_create" do
let(:widget) { Widget.create!(name: "Foobar", created_at: Time.now - 1.week) } let(:widget) { Widget.create!(name: "Foobar", created_at: Time.now - 1.week) }
it "corresponding version should use the widget's `updated_at`" do it "corresponding version uses the widget's `updated_at`" do
expect(widget.versions.last.created_at.to_i).to eq(widget.updated_at.to_i) expect(widget.versions.last.created_at.to_i).to eq(widget.updated_at.to_i)
end end
end end
@ -81,22 +81,22 @@ describe Widget, type: :model do
it { expect(subject.paper_trail).not_to be_live } it { expect(subject.paper_trail).not_to be_live }
it "should clear the `versions_association_name` virtual attribute" do it "clears the `versions_association_name` virtual attribute" do
subject.save! subject.save!
expect(subject.paper_trail).to be_live expect(subject.paper_trail).to be_live
end end
it "corresponding version should use the widget updated_at" do it "corresponding version uses the widget updated_at" do
expect(widget.versions.last.created_at.to_i).to eq(widget.updated_at.to_i) expect(widget.versions.last.created_at.to_i).to eq(widget.updated_at.to_i)
end end
end end
describe "after_destroy" do describe "after_destroy" do
it "should create a version for that event" do it "creates a version for that event" do
expect { widget.destroy }.to change(widget.versions, :count).by(1) expect { widget.destroy }.to change(widget.versions, :count).by(1)
end end
it "should assign the version into the `versions_association_name`" do it "assigns the version into the `versions_association_name`" do
expect(widget.version).to be_nil expect(widget.version).to be_nil
widget.destroy widget.destroy
expect(widget.version).not_to be_nil expect(widget.version).not_to be_nil
@ -134,7 +134,7 @@ describe Widget, type: :model do
describe "Association", versioning: true do describe "Association", versioning: true do
describe "sort order" do describe "sort order" do
it "should sort by the timestamp order from the `VersionConcern`" do it "sorts by the timestamp order from the `VersionConcern`" do
expect(widget.versions.to_sql).to eq( expect(widget.versions.to_sql).to eq(
widget.versions.reorder(PaperTrail::Version.timestamp_sort_order).to_sql widget.versions.reorder(PaperTrail::Version.timestamp_sort_order).to_sql
) )
@ -144,7 +144,7 @@ describe Widget, type: :model do
if defined?(ActiveRecord::IdentityMap) && ActiveRecord::IdentityMap.respond_to?(:without) if defined?(ActiveRecord::IdentityMap) && ActiveRecord::IdentityMap.respond_to?(:without)
describe "IdentityMap", versioning: true do describe "IdentityMap", versioning: true do
it "should not clobber the IdentityMap when reifying" do it "does not clobber the IdentityMap when reifying" do
widget.update_attributes name: "Henry", created_at: Time.now - 1.day widget.update_attributes name: "Henry", created_at: Time.now - 1.day
widget.update_attributes name: "Harry" widget.update_attributes name: "Harry"
expect(ActiveRecord::IdentityMap).to receive(:without).once expect(ActiveRecord::IdentityMap).to receive(:without).once
@ -202,7 +202,7 @@ describe Widget, type: :model do
context "accessed from live model instance" do context "accessed from live model instance" do
specify { expect(widget.paper_trail).to be_live } specify { expect(widget.paper_trail).to be_live }
it "should return the originator for the model at a given state" do it "returns the originator for the model at a given state" do
expect(widget.paper_trail.originator).to eq(orig_name) expect(widget.paper_trail.originator).to eq(orig_name)
widget.paper_trail.whodunnit(new_name) { |w| widget.paper_trail.whodunnit(new_name) { |w|
w.update_attributes(name: "Elizabeth") w.update_attributes(name: "Elizabeth")
@ -221,11 +221,11 @@ describe Widget, type: :model do
context "default behavior (no `options[:dup]` option passed in)" do context "default behavior (no `options[:dup]` option passed in)" do
let(:reified_widget) { widget.versions[1].reify } let(:reified_widget) { widget.versions[1].reify }
it "should return the appropriate originator" do it "returns the appropriate originator" do
expect(reified_widget.paper_trail.originator).to eq(orig_name) expect(reified_widget.paper_trail.originator).to eq(orig_name)
end end
it "should not create a new model instance" do it "does not create a new model instance" do
expect(reified_widget).not_to be_new_record expect(reified_widget).not_to be_new_record
end end
end end
@ -233,11 +233,11 @@ describe Widget, type: :model do
context "creating a new instance (`options[:dup] == true`)" do context "creating a new instance (`options[:dup] == true`)" do
let(:reified_widget) { widget.versions[1].reify(dup: true) } let(:reified_widget) { widget.versions[1].reify(dup: true) }
it "should return the appropriate originator" do it "returns the appropriate originator" do
expect(reified_widget.paper_trail.originator).to eq(orig_name) expect(reified_widget.paper_trail.originator).to eq(orig_name)
end end
it "should not create a new model instance" do it "does not create a new model instance" do
expect(reified_widget).to be_new_record expect(reified_widget).to be_new_record
end end
end end
@ -247,7 +247,7 @@ describe Widget, type: :model do
describe "#version_at" do describe "#version_at" do
context "Timestamp argument is AFTER object has been destroyed" do context "Timestamp argument is AFTER object has been destroyed" do
it "should return `nil`" do it "returns nil" do
widget.update_attribute(:name, "foobar") widget.update_attribute(:name, "foobar")
widget.destroy widget.destroy
expect(widget.paper_trail.version_at(Time.now)).to be_nil expect(widget.paper_trail.version_at(Time.now)).to be_nil
@ -257,7 +257,7 @@ describe Widget, type: :model do
describe "#whodunnit" do describe "#whodunnit" do
context "no block given" do context "no block given" do
it "should raise an error" do it "raises an error" do
expect { expect {
widget.paper_trail.whodunnit("Ben") widget.paper_trail.whodunnit("Ben")
}.to raise_error(ArgumentError, "expected to receive a block") }.to raise_error(ArgumentError, "expected to receive a block")
@ -273,7 +273,7 @@ describe Widget, type: :model do
expect(widget.versions.last.whodunnit).to eq(orig_name) # persist `widget` expect(widget.versions.last.whodunnit).to eq(orig_name) # persist `widget`
end end
it "should modify value of `PaperTrail.whodunnit` while executing the block" do it "modifies value of `PaperTrail.whodunnit` while executing the block" do
widget.paper_trail.whodunnit(new_name) do widget.paper_trail.whodunnit(new_name) do
expect(PaperTrail.whodunnit).to eq(new_name) expect(PaperTrail.whodunnit).to eq(new_name)
widget.update_attributes(name: "Elizabeth") widget.update_attributes(name: "Elizabeth")
@ -339,7 +339,7 @@ describe Widget, type: :model do
end end
describe ".disable" do describe ".disable" do
it "should set the `paper_trail.enabled?` to `false`" do it "sets the `paper_trail.enabled?` to `false`" do
expect(Widget.paper_trail.enabled?).to eq(true) expect(Widget.paper_trail.enabled?).to eq(true)
Widget.paper_trail.disable Widget.paper_trail.disable
expect(Widget.paper_trail.enabled?).to eq(false) expect(Widget.paper_trail.enabled?).to eq(false)
@ -347,7 +347,7 @@ describe Widget, type: :model do
end end
describe ".enable" do describe ".enable" do
it "should set the `paper_trail.enabled?` to `true`" do it "sets the `paper_trail.enabled?` to `true`" do
Widget.paper_trail.disable Widget.paper_trail.disable
expect(Widget.paper_trail.enabled?).to eq(false) expect(Widget.paper_trail.enabled?).to eq(false)
Widget.paper_trail.enable Widget.paper_trail.enable

View File

@ -4,13 +4,13 @@ describe PaperTrail, type: :module, versioning: true do
describe "#config" do describe "#config" do
it { is_expected.to respond_to(:config) } it { is_expected.to respond_to(:config) }
it "should allow for config values to be set" do it "allows for config values to be set" do
expect(subject.config.enabled).to eq(true) expect(subject.config.enabled).to eq(true)
subject.config.enabled = false subject.config.enabled = false
expect(subject.config.enabled).to eq(false) expect(subject.config.enabled).to eq(false)
end end
it "should accept blocks and yield the config instance" do it "accepts blocks and yield the config instance" do
expect(subject.config.enabled).to eq(true) expect(subject.config.enabled).to eq(true)
subject.config { |c| c.enabled = false } subject.config { |c| c.enabled = false }
expect(subject.config.enabled).to eq(false) expect(subject.config.enabled).to eq(false)
@ -20,7 +20,7 @@ describe PaperTrail, type: :module, versioning: true do
describe "#configure" do describe "#configure" do
it { is_expected.to respond_to(:configure) } it { is_expected.to respond_to(:configure) }
it "should be an alias for the `config` method" do it "is an alias for the `config` method" do
expect(subject.method(:configure)).to eq(subject.method(:config)) expect(subject.method(:configure)).to eq(subject.method(:config))
end end
end end

View File

@ -18,7 +18,7 @@ describe PaperTrail::VersionConcern do
end end
describe "persistence", versioning: true do describe "persistence", versioning: true do
it "should store versions in the correct corresponding db location" do it "stores versions in the correct corresponding db location" do
foo_doc = Foo::Document.create!(name: "foobar") foo_doc = Foo::Document.create!(name: "foobar")
bar_doc = Bar::Document.create!(name: "raboof") bar_doc = Bar::Document.create!(name: "raboof")
expect(foo_doc.versions.first).to be_instance_of(Foo::Version) expect(foo_doc.versions.first).to be_instance_of(Foo::Version)

View File

@ -3,7 +3,7 @@ require "spec_helper"
module PaperTrail module PaperTrail
RSpec.describe VERSION do RSpec.describe VERSION do
describe "STRING" do describe "STRING" do
it "should join the numbers into a period separated string" do it "joins the numbers into a period separated string" do
expect(described_class::STRING).to eq( expect(described_class::STRING).to eq(
[ [
described_class::MAJOR, described_class::MAJOR,

View File

@ -21,11 +21,11 @@ RSpec.describe PaperTrail do
end end
context "default" do context "default" do
it "should have versioning off by default" do it "has versioning off by default" do
expect(described_class).not_to be_enabled expect(described_class).not_to be_enabled
end end
it "should turn versioning on in a `with_versioning` block" do it "has versioning on in a `with_versioning` block" do
expect(described_class).not_to be_enabled expect(described_class).not_to be_enabled
with_versioning do with_versioning do
expect(described_class).to be_enabled expect(described_class).to be_enabled
@ -34,7 +34,7 @@ RSpec.describe PaperTrail do
end end
context "error within `with_versioning` block" do context "error within `with_versioning` block" do
it "should revert the value of `PaperTrail.enabled?` to it's previous state" do it "reverts the value of `PaperTrail.enabled?` to its previous state" do
expect(described_class).not_to be_enabled expect(described_class).not_to be_enabled
expect { with_versioning { raise } }.to raise_error(RuntimeError) expect { with_versioning { raise } }.to raise_error(RuntimeError)
expect(described_class).not_to be_enabled expect(described_class).not_to be_enabled
@ -43,11 +43,11 @@ RSpec.describe PaperTrail do
end end
context "`versioning: true`", versioning: true do context "`versioning: true`", versioning: true do
it "should have versioning on by default" do it "has versioning on by default" do
expect(described_class).to be_enabled expect(described_class).to be_enabled
end end
it "should keep versioning on after a with_versioning block" do it "keeps versioning on after a with_versioning block" do
expect(described_class).to be_enabled expect(described_class).to be_enabled
with_versioning do with_versioning do
expect(described_class).to be_enabled expect(described_class).to be_enabled
@ -60,11 +60,11 @@ RSpec.describe PaperTrail do
it { expect(described_class).not_to be_enabled } it { expect(described_class).not_to be_enabled }
with_versioning do with_versioning do
it "should have versioning on by default" do it "has versioning on by default" do
expect(described_class).to be_enabled expect(described_class).to be_enabled
end end
end end
it "should not leak the `enabled?` state into successive tests" do it "does not leak the `enabled?` state into successive tests" do
expect(described_class).not_to be_enabled expect(described_class).not_to be_enabled
end end
end end
@ -77,7 +77,7 @@ RSpec.describe PaperTrail do
describe ".whodunnit" do describe ".whodunnit" do
before(:all) { described_class.whodunnit = "foobar" } before(:all) { described_class.whodunnit = "foobar" }
it "should get set to `nil` by default" do it "is nil by default" do
expect(described_class.whodunnit).to be_nil expect(described_class.whodunnit).to be_nil
end end
end end
@ -85,7 +85,7 @@ RSpec.describe PaperTrail do
describe ".controller_info" do describe ".controller_info" do
before(:all) { described_class.controller_info = { foo: "bar" } } before(:all) { described_class.controller_info = { foo: "bar" } }
it "should get set to an empty hash before each test" do it "is set to an empty hash before each test" do
expect(described_class.controller_info).to eq({}) expect(described_class.controller_info).to eq({})
end end
end end

View File

@ -6,14 +6,14 @@ describe "Articles management", type: :request, order: :defined do
context "versioning disabled" do context "versioning disabled" do
specify { expect(PaperTrail).not_to be_enabled } specify { expect(PaperTrail).not_to be_enabled }
it "should not create a version" do it "does not create a version" do
expect(PaperTrail).to be_enabled_for_controller expect(PaperTrail).to be_enabled_for_controller
expect { expect {
post articles_path, params_wrapper(valid_params) post articles_path, params_wrapper(valid_params)
}.to_not change(PaperTrail::Version, :count) }.to_not change(PaperTrail::Version, :count)
end end
it "should not leak the state of the `PaperTrail.enabled_for_controller?` into the next test" do it "does not leak the state of the `PaperTrail.enabled_for_controller?` into the next test" do
expect(PaperTrail).to be_enabled_for_controller expect(PaperTrail).to be_enabled_for_controller
end end
end end
@ -22,7 +22,7 @@ describe "Articles management", type: :request, order: :defined do
let(:article) { Article.last } let(:article) { Article.last }
context "`current_user` method returns a `String`" do context "`current_user` method returns a `String`" do
it "should set that value as the `whodunnit`" do it "sets that value as the `whodunnit`" do
expect { expect {
post articles_path, params_wrapper(valid_params) post articles_path, params_wrapper(valid_params)
}.to change(PaperTrail::Version, :count).by(1) }.to change(PaperTrail::Version, :count).by(1)