@@ -282,6 +282,46 @@ public void GetStandardColumnNameAndValueForTraceIdReturnsLogLevelKeyValue()
282282 Assert . Equal ( "34898a9020e0390190b0982370034f00" , result . Value ) ;
283283 }
284284
285+ [ Fact ]
286+ public void GetStandardColumnNameAndNullValueForTraceIdReturnsLogLevelKeyValue ( )
287+ {
288+ // Arrange
289+ var traceId = default ( ActivityTraceId ) ;
290+ var logEvent = new LogEvent (
291+ new DateTimeOffset ( 2020 , 1 , 1 , 0 , 0 , 0 , 0 , TimeSpan . Zero ) ,
292+ LogEventLevel . Debug , null , new MessageTemplate ( new List < MessageTemplateToken > ( ) { new TextToken ( "Test message" ) } ) ,
293+ new List < LogEventProperty > ( ) , traceId , ActivitySpanId . CreateRandom ( ) ) ;
294+ SetupSut ( new MSSqlServer . ColumnOptions ( ) , CultureInfo . InvariantCulture ) ;
295+
296+ // Act
297+ var result = _sut . GetStandardColumnNameAndValue ( StandardColumn . TraceId , logEvent ) ;
298+
299+ // Assert
300+ Assert . Equal ( "TraceId" , result . Key ) ;
301+ Assert . Null ( result . Value ) ;
302+ }
303+
304+ [ Fact ]
305+ public void GetStandardColumnNameAndNullValueForTraceIdWithoutAllowNullReturnsLogLevelKeyValueEmpty ( )
306+ {
307+ // Arrange
308+ var traceId = default ( ActivityTraceId ) ;
309+ var logEvent = new LogEvent (
310+ new DateTimeOffset ( 2020 , 1 , 1 , 0 , 0 , 0 , 0 , TimeSpan . Zero ) ,
311+ LogEventLevel . Debug , null , new MessageTemplate ( new List < MessageTemplateToken > ( ) { new TextToken ( "Test message" ) } ) ,
312+ new List < LogEventProperty > ( ) , traceId , ActivitySpanId . CreateRandom ( ) ) ;
313+ var columnOptions = new MSSqlServer . ColumnOptions ( ) ;
314+ columnOptions . TraceId . AllowNull = false ;
315+ SetupSut ( columnOptions , CultureInfo . InvariantCulture ) ;
316+
317+ // Act
318+ var result = _sut . GetStandardColumnNameAndValue ( StandardColumn . TraceId , logEvent ) ;
319+
320+ // Assert
321+ Assert . Equal ( "TraceId" , result . Key ) ;
322+ Assert . Equal ( string . Empty , result . Value ) ;
323+ }
324+
285325 [ Fact ]
286326 public void GetStandardColumnNameAndValueForSpanIdReturnsLogLevelKeyValue ( )
287327 {
@@ -301,6 +341,46 @@ public void GetStandardColumnNameAndValueForSpanIdReturnsLogLevelKeyValue()
301341 Assert . Equal ( "0390190b09823700" , result . Value ) ;
302342 }
303343
344+ [ Fact ]
345+ public void GetStandardColumnNameAndNullValueForSpanIdReturnsLogLevelKeyValue ( )
346+ {
347+ // Arrange
348+ var spanId = default ( ActivitySpanId ) ;
349+ var logEvent = new LogEvent (
350+ new DateTimeOffset ( 2020 , 1 , 1 , 0 , 0 , 0 , 0 , TimeSpan . Zero ) ,
351+ LogEventLevel . Debug , null , new MessageTemplate ( new List < MessageTemplateToken > ( ) { new TextToken ( "Test message" ) } ) ,
352+ new List < LogEventProperty > ( ) , ActivityTraceId . CreateRandom ( ) , spanId ) ;
353+ SetupSut ( new MSSqlServer . ColumnOptions ( ) , CultureInfo . InvariantCulture ) ;
354+
355+ // Act
356+ var result = _sut . GetStandardColumnNameAndValue ( StandardColumn . SpanId , logEvent ) ;
357+
358+ // Assert
359+ Assert . Equal ( "SpanId" , result . Key ) ;
360+ Assert . Null ( result . Value ) ;
361+ }
362+
363+ [ Fact ]
364+ public void GetStandardColumnNameAndNullValueForSpanIdWithoutAllowNullReturnsLogLevelKeyValueEmpty ( )
365+ {
366+ // Arrange
367+ var spanId = default ( ActivitySpanId ) ;
368+ var logEvent = new LogEvent (
369+ new DateTimeOffset ( 2020 , 1 , 1 , 0 , 0 , 0 , 0 , TimeSpan . Zero ) ,
370+ LogEventLevel . Debug , null , new MessageTemplate ( new List < MessageTemplateToken > ( ) { new TextToken ( "Test message" ) } ) ,
371+ new List < LogEventProperty > ( ) , ActivityTraceId . CreateRandom ( ) , spanId ) ;
372+ var columnOptions = new MSSqlServer . ColumnOptions ( ) ;
373+ columnOptions . SpanId . AllowNull = false ;
374+ SetupSut ( columnOptions , CultureInfo . InvariantCulture ) ;
375+
376+ // Act
377+ var result = _sut . GetStandardColumnNameAndValue ( StandardColumn . SpanId , logEvent ) ;
378+
379+ // Assert
380+ Assert . Equal ( "SpanId" , result . Key ) ;
381+ Assert . Equal ( string . Empty , result . Value ) ;
382+ }
383+
304384 [ Fact ]
305385 public void GetStandardColumnNameAndValueForLogLevelReturnsLogLevelKeyValueAsEnum ( )
306386 {
@@ -449,6 +529,27 @@ public void GetStandardColumnNameAndValueForExceptionWhenCalledWithoutExceptionR
449529 Assert . Null ( result . Value ) ;
450530 }
451531
532+ [ Fact ]
533+ public void GetStandardColumnNameAndValueForExceptionWhenCalledWithoutExceptionAndNotAllowedNullReturnsEmptyValue ( )
534+ {
535+ // Arrange
536+ var logEvent = new LogEvent (
537+ new DateTimeOffset ( 2020 , 1 , 1 , 0 , 0 , 0 , 0 , TimeSpan . Zero ) ,
538+ LogEventLevel . Debug , null , new MessageTemplate ( new List < MessageTemplateToken > ( ) { new TextToken ( "Test message" ) } ) ,
539+ new List < LogEventProperty > ( ) ) ;
540+ var columnOptions = new Serilog . Sinks . MSSqlServer . ColumnOptions ( ) ;
541+ columnOptions . Level . StoreAsEnum = true ;
542+ columnOptions . Exception . AllowNull = false ;
543+ SetupSut ( columnOptions , CultureInfo . InvariantCulture ) ;
544+
545+ // Act
546+ var result = _sut . GetStandardColumnNameAndValue ( StandardColumn . Exception , logEvent ) ;
547+
548+ // Assert
549+ Assert . Equal ( "Exception" , result . Key ) ;
550+ Assert . Equal ( string . Empty , result . Value ) ;
551+ }
552+
452553 [ Fact ]
453554 public void GetStandardColumnNameAndValueForPropertiesUsesRootElementName ( )
454555 {
0 commit comments