Skip to content

Commit 3534700

Browse files
committed
add more test coverage
1 parent 1b5cd58 commit 3534700

File tree

1 file changed

+92
-14
lines changed

1 file changed

+92
-14
lines changed

libraries/tests/AWS.Lambda.Powertools.Logging.Tests/Utilities/PowertoolsLoggerHelpersTests.cs

Lines changed: 92 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
#if NET8_0_OR_GREATER
32

43
using System;
@@ -70,57 +69,136 @@ public void ObjectToDictionary_NullObject_Return_New_Dictionary()
7069
// Act & Assert
7170
Assert.NotNull(() => PowertoolsLoggerHelpers.ObjectToDictionary(null));
7271
}
73-
72+
7473
[Fact]
7574
public void Should_Log_With_Anonymous()
7675
{
7776
var consoleOut = Substitute.For<StringWriter>();
7877
SystemWrapper.Instance.SetOut(consoleOut);
79-
78+
8079
// Act & Assert
81-
Logger.AppendKey("newKey", new
80+
Logger.AppendKey("newKey", new
8281
{
8382
name = "my name"
8483
});
85-
84+
8685
Logger.LogInformation("test");
87-
86+
8887
consoleOut.Received(1).WriteLine(
8988
Arg.Is<string>(i =>
9089
i.Contains("\"new_key\":{\"name\":\"my name\"}"))
9190
);
9291
}
93-
92+
9493
[Fact]
9594
public void Should_Log_With_Complex_Anonymous()
9695
{
9796
var consoleOut = Substitute.For<StringWriter>();
9897
SystemWrapper.Instance.SetOut(consoleOut);
99-
98+
10099
// Act & Assert
101-
Logger.AppendKey("newKey", new
100+
Logger.AppendKey("newKey", new
102101
{
103102
id = 1,
104103
name = "my name",
105-
Adresses = new {
104+
Adresses = new
105+
{
106106
street = "street 1",
107107
number = 1,
108-
city = new
108+
city = new
109109
{
110110
name = "city 1",
111111
state = "state 1"
112112
}
113113
}
114114
});
115-
115+
116116
Logger.LogInformation("test");
117-
117+
118118
consoleOut.Received(1).WriteLine(
119119
Arg.Is<string>(i =>
120-
i.Contains("\"new_key\":{\"id\":1,\"name\":\"my name\",\"adresses\":{\"street\":\"street 1\",\"number\":1,\"city\":{\"name\":\"city 1\",\"state\":\"state 1\"}"))
120+
i.Contains(
121+
"\"new_key\":{\"id\":1,\"name\":\"my name\",\"adresses\":{\"street\":\"street 1\",\"number\":1,\"city\":{\"name\":\"city 1\",\"state\":\"state 1\"}"))
121122
);
122123
}
123124

125+
[Fact]
126+
public void ObjectToDictionary_EnumValue_ReturnsOriginalEnum()
127+
{
128+
// Arrange
129+
var enumValue = DayOfWeek.Monday;
130+
131+
// Act
132+
var result = PowertoolsLoggerHelpers.ObjectToDictionary(enumValue);
133+
134+
// Assert
135+
Assert.Equal(enumValue, result);
136+
}
137+
138+
[Fact]
139+
public void ObjectToDictionary_ObjectWithNullProperty_ExcludesNullProperty()
140+
{
141+
// Arrange
142+
var objectWithNull = new { name = (string)null, age = 30 };
143+
144+
// Act
145+
var result = PowertoolsLoggerHelpers.ObjectToDictionary(objectWithNull);
146+
147+
// Assert
148+
Assert.IsType<Dictionary<string, object>>(result);
149+
var dictionary = (Dictionary<string, object>)result;
150+
Assert.Single(dictionary);
151+
Assert.Equal(30, dictionary["age"]);
152+
Assert.False(dictionary.ContainsKey("name"));
153+
}
154+
155+
[Fact]
156+
public void ObjectToDictionary_EmptyAnonymousObject_ReturnsEmptyDictionary()
157+
{
158+
// Arrange
159+
var emptyObject = new { };
160+
161+
// Act
162+
var result = PowertoolsLoggerHelpers.ObjectToDictionary(emptyObject);
163+
164+
// Assert
165+
Assert.IsType<Dictionary<string, object>>(result);
166+
var dictionary = (Dictionary<string, object>)result;
167+
Assert.Empty(dictionary);
168+
}
169+
170+
[Fact]
171+
public void ObjectToDictionary_ObjectWithNestedEnum_ReturnsDictionaryWithEnum()
172+
{
173+
// Arrange
174+
var objectWithEnum = new { name = "test", day = DayOfWeek.Friday };
175+
176+
// Act
177+
var result = PowertoolsLoggerHelpers.ObjectToDictionary(objectWithEnum);
178+
179+
// Assert
180+
Assert.IsType<Dictionary<string, object>>(result);
181+
var dictionary = (Dictionary<string, object>)result;
182+
Assert.Equal(2, dictionary.Count);
183+
Assert.Equal("test", dictionary["name"]);
184+
Assert.Equal(DayOfWeek.Friday, dictionary["day"]);
185+
}
186+
187+
[Fact]
188+
public void ObjectToDictionary_ObjectWithAllNullProperties_ReturnsEmptyDictionary()
189+
{
190+
// Arrange
191+
var allNullObject = new { name = (string)null, address = (string)null };
192+
193+
// Act
194+
var result = PowertoolsLoggerHelpers.ObjectToDictionary(allNullObject);
195+
196+
// Assert
197+
Assert.IsType<Dictionary<string, object>>(result);
198+
var dictionary = (Dictionary<string, object>)result;
199+
Assert.Empty(dictionary);
200+
}
201+
124202
public void Dispose()
125203
{
126204
PowertoolsLoggingSerializer.ConfigureNamingPolicy(LoggerOutputCase.Default);

0 commit comments

Comments
 (0)