1111 using FailureDetails = ServiceControl . Contracts . Operations . FailureDetails ;
1212
1313 [ TestFixture ]
14- public class ExternalIntegrationsFailedMessagesIndexTests
14+ public class MessageFailedConverterTests
1515 {
1616 [ Test ]
1717 public void Archive_status_maps_to_archive ( )
@@ -59,6 +59,30 @@ public void If_not_present_in_metadata_body_is_ignored()
5959 Assert . IsNull ( result . MessageDetails . Body ) ;
6060 }
6161
62+ [ Test ]
63+ public void If_message_type_is_missing_it_is_ignored ( )
64+ {
65+ var failedMessage = new FailedMessageBuilder ( FailedMessageStatus . Unresolved )
66+ . SetMessageType ( null )
67+ . AddProcessingAttempt ( pa => { } )
68+ . Build ( ) ;
69+
70+ var result = failedMessage . ToEvent ( ) ;
71+ Assert . IsNull ( result . MessageType ) ;
72+ }
73+
74+ [ Test ]
75+ public void If_content_type_is_missing_it_is_ignored ( )
76+ {
77+ var failedMessage = new FailedMessageBuilder ( FailedMessageStatus . Unresolved )
78+ . SetContentType ( null )
79+ . AddProcessingAttempt ( pa => { } )
80+ . Build ( ) ;
81+
82+ var result = failedMessage . ToEvent ( ) ;
83+ Assert . IsNull ( result . MessageDetails . ContentType ) ;
84+ }
85+
6286 [ Test ]
6387 public void Body_is_mapped_from_metadata_of_last_processing_attempt ( )
6488 {
@@ -73,13 +97,27 @@ public void Body_is_mapped_from_metadata_of_last_processing_attempt()
7397 private class FailedMessageBuilder
7498 {
7599 private readonly FailedMessageStatus messageStatus ;
100+ string messageType = "SomeMessage" ;
101+ string contentType = "application/json" ;
76102 private List < Action < FailedMessage . ProcessingAttempt > > processingAttempts = new List < Action < FailedMessage . ProcessingAttempt > > ( ) ;
77103
78104 public FailedMessageBuilder ( FailedMessageStatus messageStatus )
79105 {
80106 this . messageStatus = messageStatus ;
81107 }
82108
109+ public FailedMessageBuilder SetMessageType ( string messageType )
110+ {
111+ this . messageType = messageType ;
112+ return this ;
113+ }
114+
115+ public FailedMessageBuilder SetContentType ( string contentType )
116+ {
117+ this . contentType = contentType ;
118+ return this ;
119+ }
120+
83121 public FailedMessageBuilder AddProcessingAttempt ( Action < FailedMessage . ProcessingAttempt > callback )
84122 {
85123 processingAttempts . Add ( callback ) ;
@@ -92,19 +130,26 @@ public FailedMessage Build()
92130 {
93131 ProcessingAttempts = processingAttempts . Select ( x =>
94132 {
133+ var messageMetadata = new Dictionary < string , object >
134+ {
135+ { "SendingEndpoint" , new Contracts . Operations . EndpointDetails ( ) } ,
136+ { "ReceivingEndpoint" , new Contracts . Operations . EndpointDetails ( ) } ,
137+ } ;
138+ if ( messageType != null )
139+ {
140+ messageMetadata [ "MessageType" ] = messageType ;
141+ }
142+ if ( contentType != null )
143+ {
144+ messageMetadata [ "ContentType" ] = contentType ;
145+ }
95146 var attempt = new FailedMessage . ProcessingAttempt
96147 {
97148 FailureDetails = new FailureDetails
98149 {
99150 Exception = new ExceptionDetails ( )
100151 } ,
101- MessageMetadata = new Dictionary < string , object >
102- {
103- { "SendingEndpoint" , new Contracts . Operations . EndpointDetails ( ) } ,
104- { "ReceivingEndpoint" , new Contracts . Operations . EndpointDetails ( ) } ,
105- { "MessageType" , "SomeMessage" } ,
106- { "ContentType" , "application/json" } ,
107- } ,
152+ MessageMetadata = messageMetadata ,
108153 } ;
109154 x ( attempt ) ;
110155 return attempt ;
0 commit comments