spec/cli_spec.rb in bundler-audit-0.8.0 vs spec/cli_spec.rb in bundler-audit-0.9.0
- old
+ new
@@ -13,32 +13,72 @@
end
end
end
end
+ describe "#stats" do
+ let(:size) { 1234 }
+ let(:last_updated_at) { Time.now }
+ let(:commit_id) { 'f0f97c4c493b853319e029d226e96f2c2f0dc539' }
+
+ let(:database) { double(Bundler::Audit::Database) }
+
+ before do
+ expect(Bundler::Audit::Database).to receive(:new).and_return(database)
+
+ expect(database).to receive(:size).and_return(size)
+ expect(database).to receive(:last_updated_at).and_return(last_updated_at)
+ expect(database).to receive(:commit_id).and_return(commit_id)
+ end
+
+ it "prints total advisory count" do
+ expect { subject.stats }.to output(
+ include(
+ "advisories:\t#{size} advisories",
+ "last updated:\t#{last_updated_at}",
+ "commit:\t#{commit_id}"
+ )
+ ).to_stdout
+ end
+ end
+
describe "#update" do
+ let(:database) { double(Bundler::Audit::Database) }
+
+ before do
+ allow(Bundler::Audit::Database).to receive(:new).and_return(database)
+ end
+
context "not --quiet (the default)" do
context "when update succeeds" do
+ let(:size) { 1234 }
+ let(:last_updated_at) { Time.now }
+ let(:commit_id) { 'f0f97c4c493b853319e029d226e96f2c2f0dc539' }
+
before do
- expect_any_instance_of(Bundler::Audit::Database).to receive(:update!).and_return(true)
+ expect(database).to receive(:update!).and_return(true)
+ expect(database).to receive(:size).and_return(size)
+ expect(database).to receive(:last_updated_at).and_return(last_updated_at)
+ expect(database).to receive(:commit_id).and_return(commit_id)
end
- it "prints updated message" do
- expect { subject.update }.to output(/Updated ruby-advisory-db/).to_stdout
+ it "prints updated message and then the stats" do
+ expect { subject.update }.to output(
+ include(
+ "Updated ruby-advisory-db",
+ "ruby-advisory-db:",
+ " advisories:\t#{size} advisories",
+ " last updated:\t#{last_updated_at}",
+ " commit:\t#{commit_id}"
+ )
+ ).to_stdout
end
-
- it "prints total advisory count" do
- size = 1234
- expect_any_instance_of(Bundler::Audit::Database).to receive(:size).and_return(size)
-
- expect { subject.update }.to output(/advisories:\t#{size} advisories/).to_stdout
- end
end
context "when update fails" do
before do
- expect_any_instance_of(Bundler::Audit::Database).to receive(:update!).and_return(false)
+ expect(database).to receive(:update!).and_return(false)
end
it "prints failure message" do
expect {
begin
@@ -56,26 +96,26 @@
}.to raise_error(SystemExit) do |error|
expect(error.success?).to eq(false)
expect(error.status).to eq(1)
end
end
-
end
context "when git is not installed" do
before do
- expect_any_instance_of(Bundler::Audit::Database).to receive(:update!).and_return(nil)
+ expect(database).to receive(:update!).and_return(nil)
+
expect(Bundler).to receive(:git_present?).and_return(false)
end
it "prints failure message" do
- expect do
+ expect {
begin
subject.update
rescue SystemExit
end
- end.to output(/Git is not installed!/).to_stderr
+ }.to output(/Git is not installed!/).to_stderr
end
it "exits with error status code" do
expect {
# Capture output of `update` only to keep spec output clean.
@@ -94,11 +134,11 @@
described_class.new([], {quiet: true})
end
context "when update succeeds" do
before do
- expect_any_instance_of(Bundler::Audit::Database).to(
+ expect(database).to(
receive(:update!).with(quiet: true).and_return(true)
)
end
it "does not print any output" do
@@ -106,10 +146,10 @@
end
end
context "when update fails" do
before do
- expect_any_instance_of(Bundler::Audit::Database).to(
+ expect(database).to(
receive(:update!).with(quiet: true).and_return(false)
)
end
it "prints failure message" do