2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-06-20 02:10:54 -04:00
|
|
|
require "messages"
|
|
|
|
require "spec_helper"
|
|
|
|
|
2024-02-18 15:11:11 -08:00
|
|
|
RSpec.describe Messages do
|
2018-09-20 09:07:56 +01:00
|
|
|
let(:messages) { described_class.new }
|
2018-11-28 20:51:55 +01:00
|
|
|
let(:test_formula) { formula("foo") { url("https://brew.sh/foo-0.1.tgz") } }
|
2018-09-03 16:26:11 -07:00
|
|
|
let(:elapsed_time) { 1.1 }
|
2018-06-20 02:10:54 -04:00
|
|
|
|
2018-09-03 16:26:11 -07:00
|
|
|
describe "#record_caveats" do
|
|
|
|
it "adds a caveat" do
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
2018-09-03 16:26:11 -07:00
|
|
|
messages.record_caveats(test_formula, "Zsh completions were installed")
|
2023-03-08 23:14:46 +00:00
|
|
|
end.to change(messages.caveats, :count).by(1)
|
2018-09-03 16:26:11 -07:00
|
|
|
end
|
2018-06-20 02:10:54 -04:00
|
|
|
end
|
|
|
|
|
2021-09-02 08:42:48 -07:00
|
|
|
describe "#package_installed" do
|
|
|
|
it "increases the package count" do
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
2021-09-02 08:42:48 -07:00
|
|
|
messages.package_installed(test_formula, elapsed_time)
|
2023-03-08 23:14:46 +00:00
|
|
|
end.to change(messages, :package_count).by(1)
|
2018-09-03 16:26:11 -07:00
|
|
|
end
|
2018-06-20 02:10:54 -04:00
|
|
|
|
2018-09-03 16:26:11 -07:00
|
|
|
it "adds to install_times" do
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
2021-09-02 08:42:48 -07:00
|
|
|
messages.package_installed(test_formula, elapsed_time)
|
2023-03-08 23:14:46 +00:00
|
|
|
end.to change(messages.install_times, :count).by(1)
|
2018-09-03 16:26:11 -07:00
|
|
|
end
|
2018-06-20 02:10:54 -04:00
|
|
|
end
|
2018-06-20 00:54:14 -04:00
|
|
|
|
2018-09-03 16:26:11 -07:00
|
|
|
describe "#display_messages" do
|
2021-09-02 08:42:48 -07:00
|
|
|
context "when package_count is less than two" do
|
2018-09-03 16:26:11 -07:00
|
|
|
before do
|
|
|
|
messages.record_caveats(test_formula, "Zsh completions were installed")
|
2021-09-02 08:42:48 -07:00
|
|
|
messages.package_installed(test_formula, elapsed_time)
|
2018-09-03 16:26:11 -07:00
|
|
|
end
|
2018-06-20 00:54:14 -04:00
|
|
|
|
2018-09-03 16:26:11 -07:00
|
|
|
it "doesn't print caveat details" do
|
|
|
|
expect { messages.display_messages }.not_to output.to_stdout
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when caveats is empty" do
|
|
|
|
before do
|
2021-09-02 08:42:48 -07:00
|
|
|
messages.package_installed(test_formula, elapsed_time)
|
2018-09-03 16:26:11 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
it "doesn't print caveat details" do
|
|
|
|
expect { messages.display_messages }.not_to output.to_stdout
|
|
|
|
end
|
|
|
|
end
|
2018-06-20 00:54:14 -04:00
|
|
|
|
2021-09-02 08:42:48 -07:00
|
|
|
context "when package_count is greater than one and caveats are present" do
|
2018-11-28 20:51:55 +01:00
|
|
|
let(:test_formula2) { formula("bar") { url("https://brew.sh/bar-0.1.tgz") } }
|
2018-09-03 16:26:11 -07:00
|
|
|
|
|
|
|
before do
|
|
|
|
messages.record_caveats(test_formula, "Zsh completions were installed")
|
2021-09-02 08:42:48 -07:00
|
|
|
messages.package_installed(test_formula, elapsed_time)
|
|
|
|
messages.package_installed(test_formula2, elapsed_time)
|
2018-09-03 16:26:11 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
it "prints caveat details" do
|
|
|
|
expect { messages.display_messages }.to output(
|
2019-02-11 09:50:09 +00:00
|
|
|
<<~EOS,
|
2018-09-03 16:26:11 -07:00
|
|
|
==> Caveats
|
|
|
|
==> foo
|
|
|
|
Zsh completions were installed
|
|
|
|
EOS
|
|
|
|
).to_stdout
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-07-25 21:33:48 +02:00
|
|
|
context "when the `display_times` argument is true" do
|
|
|
|
context "when `install_times` is empty" do
|
|
|
|
it "doesn't print anything" do
|
|
|
|
expect { messages.display_messages(display_times: true) }.not_to output.to_stdout
|
2018-09-03 16:26:11 -07:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-07-25 21:33:48 +02:00
|
|
|
context "when `install_times` is present" do
|
2018-09-03 16:26:11 -07:00
|
|
|
before do
|
2021-09-02 08:42:48 -07:00
|
|
|
messages.package_installed(test_formula, elapsed_time)
|
2018-09-03 16:26:11 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
it "prints installation times" do
|
2020-07-25 21:33:48 +02:00
|
|
|
expect { messages.display_messages(display_times: true) }.to output(
|
2019-02-11 09:50:09 +00:00
|
|
|
<<~EOS,
|
2018-09-03 16:26:11 -07:00
|
|
|
==> Installation times
|
|
|
|
foo 1.100 s
|
|
|
|
EOS
|
|
|
|
).to_stdout
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-07-25 21:33:48 +02:00
|
|
|
context "when the `display_times` argument isn't specified" do
|
2018-09-03 16:26:11 -07:00
|
|
|
it "doesn't print installation times" do
|
|
|
|
expect { messages.display_messages }.not_to output.to_stdout
|
|
|
|
end
|
|
|
|
end
|
2018-06-20 00:54:14 -04:00
|
|
|
end
|
2018-07-13 10:02:39 +01:00
|
|
|
end
|