Loading spec/labkit/logging/json_logger_spec.rb +31 −22 Original line number Diff line number Diff line Loading @@ -195,34 +195,31 @@ RSpec.describe Labkit::Logging::JsonLogger do expect(data["timestamp"]).to eq(expected_iso8601) end it "formats Time values in nested hashes" do output = subject.format_message("INFO", now, "test", { event: { created_at: time_value, metadata: { updated_at: time_value } } }) it "formats Time objects in hash messages to ISO8601" do time_value = Time.now output = subject.format_message("INFO", now, "test", { event_time: time_value }) data = JSON.parse(output) expect(data["event"]["created_at"]).to eq(expected_iso8601) expect(data["event"]["metadata"]["updated_at"]).to eq(expected_iso8601) expect(data["event_time"]).to eq(time_value.utc.iso8601(3)) expect(data["event_time"]).to be_a(String) end it "formats DateTime values in nested hashes" do output = subject.format_message("INFO", now, "test", { event: { created_at: datetime_value, metadata: { updated_at: datetime_value } } }) it "formats nested Time objects in hash messages" do time_value = Time.now output = subject.format_message("INFO", now, "test", { nested: { event_time: time_value } }) data = JSON.parse(output) expect(data["nested"]["event_time"]).to eq(time_value.utc.iso8601(3)) expect(data["nested"]["event_time"]).to be_a(String) end it "formats nested DateTime objects in hash messages" do time_value = DateTime.now output = subject.format_message("INFO", now, "test", { nested: { event_time: time_value } }) data = JSON.parse(output) expect(data["event"]["created_at"]).to eq(expected_iso8601) expect(data["event"]["metadata"]["updated_at"]).to eq(expected_iso8601) expect(data["nested"]["event_time"]).to eq(time_value.to_time.utc.iso8601(3)) expect(data["nested"]["event_time"]).to be_a(String) end it "formats Time values in arrays" do Loading Loading @@ -292,6 +289,18 @@ RSpec.describe Labkit::Logging::JsonLogger do expect(data["timestamp"]).to eq("2024-01-15T10:30:45.123Z") end it "does not corrupt context when formatting hash messages with Time values" do time_value = Time.now Labkit::Context.with_context("request_id" => "12345") do output = subject.format_message("INFO", now, "test", { event_time: time_value }) data = JSON.parse(output) expect(data["#{Labkit::Context::LOG_KEY}.request_id"]).to eq("12345") expect(data["time"]).to eq(now.utc.iso8601(3)) expect(data["event_time"]).to eq(time_value.utc.iso8601(3)) end end end describe "reserved log keys" do Loading Loading
spec/labkit/logging/json_logger_spec.rb +31 −22 Original line number Diff line number Diff line Loading @@ -195,34 +195,31 @@ RSpec.describe Labkit::Logging::JsonLogger do expect(data["timestamp"]).to eq(expected_iso8601) end it "formats Time values in nested hashes" do output = subject.format_message("INFO", now, "test", { event: { created_at: time_value, metadata: { updated_at: time_value } } }) it "formats Time objects in hash messages to ISO8601" do time_value = Time.now output = subject.format_message("INFO", now, "test", { event_time: time_value }) data = JSON.parse(output) expect(data["event"]["created_at"]).to eq(expected_iso8601) expect(data["event"]["metadata"]["updated_at"]).to eq(expected_iso8601) expect(data["event_time"]).to eq(time_value.utc.iso8601(3)) expect(data["event_time"]).to be_a(String) end it "formats DateTime values in nested hashes" do output = subject.format_message("INFO", now, "test", { event: { created_at: datetime_value, metadata: { updated_at: datetime_value } } }) it "formats nested Time objects in hash messages" do time_value = Time.now output = subject.format_message("INFO", now, "test", { nested: { event_time: time_value } }) data = JSON.parse(output) expect(data["nested"]["event_time"]).to eq(time_value.utc.iso8601(3)) expect(data["nested"]["event_time"]).to be_a(String) end it "formats nested DateTime objects in hash messages" do time_value = DateTime.now output = subject.format_message("INFO", now, "test", { nested: { event_time: time_value } }) data = JSON.parse(output) expect(data["event"]["created_at"]).to eq(expected_iso8601) expect(data["event"]["metadata"]["updated_at"]).to eq(expected_iso8601) expect(data["nested"]["event_time"]).to eq(time_value.to_time.utc.iso8601(3)) expect(data["nested"]["event_time"]).to be_a(String) end it "formats Time values in arrays" do Loading Loading @@ -292,6 +289,18 @@ RSpec.describe Labkit::Logging::JsonLogger do expect(data["timestamp"]).to eq("2024-01-15T10:30:45.123Z") end it "does not corrupt context when formatting hash messages with Time values" do time_value = Time.now Labkit::Context.with_context("request_id" => "12345") do output = subject.format_message("INFO", now, "test", { event_time: time_value }) data = JSON.parse(output) expect(data["#{Labkit::Context::LOG_KEY}.request_id"]).to eq("12345") expect(data["time"]).to eq(now.utc.iso8601(3)) expect(data["event_time"]).to eq(time_value.utc.iso8601(3)) end end end describe "reserved log keys" do Loading