Skip to content

Commit 75ee06b

Browse files
committed
feat(metrics): enhance WithFunctionName method to handle null or empty values and add corresponding unit tests
1 parent 583d4d9 commit 75ee06b

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

libraries/src/AWS.Lambda.Powertools.Metrics/MetricsBuilder.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public MetricsBuilder WithDefaultDimensions(Dictionary<string, string> defaultDi
8686
/// <returns></returns>
8787
public MetricsBuilder WithFunctionName(string functionName)
8888
{
89-
_options.FunctionName = functionName;
89+
_options.FunctionName = !string.IsNullOrWhiteSpace(functionName) ? functionName : null;
9090
return this;
9191
}
9292

libraries/tests/AWS.Lambda.Powertools.Metrics.Tests/MetricsTests.cs

+51
Original file line numberDiff line numberDiff line change
@@ -321,4 +321,55 @@ public void Service_Should_Return_Null_When_Not_Set()
321321
// Assert
322322
Assert.Null(result);
323323
}
324+
325+
[Fact]
326+
public void WithFunctionName_Should_Set_FunctionName_In_Options()
327+
{
328+
// Arrange
329+
var builder = new MetricsBuilder();
330+
var expectedFunctionName = "TestFunction";
331+
332+
// Act
333+
var result = builder.WithFunctionName(expectedFunctionName);
334+
var metrics = result.Build();
335+
336+
// Assert
337+
Assert.Equal(expectedFunctionName, metrics.Options.FunctionName);
338+
Assert.Same(builder, result);
339+
}
340+
341+
[Theory]
342+
[InlineData(null)]
343+
[InlineData("")]
344+
[InlineData(" ")]
345+
public void WithFunctionName_Should_Allow_NullOrEmpty_FunctionName(string functionName)
346+
{
347+
// Arrange
348+
var builder = new MetricsBuilder();
349+
350+
// Act
351+
var result = builder.WithFunctionName(functionName);
352+
var metrics = result.Build();
353+
354+
// Assert
355+
// Assert
356+
Assert.Null(metrics.Options.FunctionName); // All invalid values should result in null
357+
Assert.Same(builder, result);
358+
}
359+
360+
[Fact]
361+
public void Build_Should_Preserve_FunctionName_When_Set_Through_Builder()
362+
{
363+
// Arrange
364+
var builder = new MetricsBuilder()
365+
.WithNamespace("TestNamespace")
366+
.WithService("TestService")
367+
.WithFunctionName("TestFunction");
368+
369+
// Act
370+
var metrics = builder.Build();
371+
372+
// Assert
373+
Assert.Equal("TestFunction", metrics.Options.FunctionName);
374+
}
324375
}

0 commit comments

Comments
 (0)