spec/unit/log_spec.rb in tty-logger-0.1.0 vs spec/unit/log_spec.rb in tty-logger-0.2.0
- old
+ new
@@ -2,10 +2,24 @@
RSpec.describe TTY::Logger, "#log" do
let(:output) { StringIO.new }
let(:styles) { TTY::Logger::Handlers::Console::STYLES }
+ it "logs without a method name directly using level" do
+ logger = TTY::Logger.new(output: output) do |config|
+ config.level = :debug
+ end
+
+ logger.log(:debug, "Deploying...")
+
+ expect(output.string).to eq([
+ "\e[36m#{styles[:debug][:symbol]}\e[0m ",
+ "\e[36mdebug\e[0m ",
+ "Deploying... \n"
+ ].join)
+ end
+
it "logs a message at debug level" do
logger = TTY::Logger.new(output: output) do |config|
config.level = :debug
end
@@ -82,22 +96,44 @@
"\e[36mwaiting\e[0m ",
"Waiting for deploy \n"].join)
end
it "logs a message in a block" do
- logger = TTY::Logger.new(output: output) do |config|
- config.level = :debug
- end
+ logger = TTY::Logger.new(output: output)
logger.info { "Successfully deployed" }
expect(output.string).to eq([
"\e[32m#{styles[:info][:symbol]}\e[0m ",
"\e[32minfo\e[0m ",
"Successfully deployed \n"].join)
end
+ it "logs a message in a block as an array of elements" do
+ logger = TTY::Logger.new(output: output)
+
+ logger.info { ["Successfully", "deployed"] }
+
+ expect(output.string).to eq([
+ "\e[32m#{styles[:info][:symbol]}\e[0m ",
+ "\e[32minfo\e[0m ",
+ "Successfully deployed \n"].join)
+ end
+
+ it "logs a message in a block with metadata" do
+ logger = TTY::Logger.new(output: output)
+
+ logger.info { ["Successfully", "deployed", {app: "myapp", env: "prod"}] }
+
+ expect(output.string).to eq([
+ "\e[32m#{styles[:info][:symbol]}\e[0m ",
+ "\e[32minfo\e[0m ",
+ "Successfully deployed ",
+ "\e[32mapp\e[0m=myapp \e[32menv\e[0m=prod\n"
+ ].join)
+ end
+
it "doesn't log when lower level" do
logger = TTY::Logger.new(output: output) do |config|
config.level = :warn
end
@@ -116,29 +152,52 @@
"\e[32minfo\e[0m ",
"Successfully deployed ",
"\e[32mapp\e[0m=myapp \e[32menv\e[0m=prod\n"].join)
end
- it "logs message with fields" do
+ it "logs message with scoped fields" do
logger = TTY::Logger.new(output: output)
- logger.with(app: 'myapp', env: 'prod').info("Successfully deployed")
+ logger.info("Successfully deployed", app: 'myapp', env: 'prod')
expect(output.string).to eq([
"\e[32m#{styles[:info][:symbol]}\e[0m ",
"\e[32minfo\e[0m ",
"Successfully deployed ",
"\e[32mapp\e[0m=myapp \e[32menv\e[0m=prod\n"].join)
end
- it "logs message with scoped fields" do
- logger = TTY::Logger.new(output: output)
+ it "adds new custom log type" do
+ heart = "❤"
+ logger = TTY::Logger.new(output: output) do |config|
+ config.types = {thanks: {level: :info}}
+ config.handlers = [
+ [:console, {
+ styles: {
+ thanks: {
+ symbol: heart,
+ label: "thanks",
+ color: :red,
+ levelpad: 1
+ }
+ }
+ }]
+ ]
+ end
- logger.info("Successfully deployed", app: 'myapp', env: 'prod')
+ logger.thanks("Great work!", app: "myapp", env: "prod")
expect(output.string).to eq([
- "\e[32m#{styles[:info][:symbol]}\e[0m ",
- "\e[32minfo\e[0m ",
- "Successfully deployed ",
- "\e[32mapp\e[0m=myapp \e[32menv\e[0m=prod\n"].join)
+ "\e[31m#{heart}\e[0m ",
+ "\e[31mthanks\e[0m ",
+ "Great work! ",
+ "\e[31mapp\e[0m=myapp \e[31menv\e[0m=prod\n"].join)
+ end
+
+ it "fails to add already defined log type" do
+ expect {
+ TTY::Logger.new do |config|
+ config.types = {success: {level: :info}}
+ end
+ }.to raise_error(TTY::Logger::Error, "Already defined log type :success")
end
end