11namespace ServiceControl . AcceptanceTests . Recoverability
22{
33 using System ;
4+ using System . Collections . Generic ;
45 using System . Linq ;
56 using System . Text . Json ;
67 using System . Threading . Tasks ;
78 using AcceptanceTesting ;
89 using AcceptanceTesting . EndpointTemplates ;
910 using AcceptanceTests ;
10- using Contracts . MessageFailures ;
1111 using NServiceBus ;
1212 using NServiceBus . AcceptanceTesting ;
1313 using NUnit . Framework ;
@@ -37,6 +37,11 @@ public async Task A_new_message_failure_is_created()
3737 . DoNotFailOnErrorMessages ( ) )
3838 . Done ( async ctx =>
3939 {
40+ if ( ! ctx . ExternalProcessorSubscribed )
41+ {
42+ return false ;
43+ }
44+
4045 if ( ! ctx . OriginalMessageHandled )
4146 {
4247 return false ;
@@ -109,6 +114,10 @@ public async Task A_new_message_failure_is_created()
109114 "FailedMessages/" + context . EditedMessageFailure . ProcessingAttempts . Last ( ) . Headers [ "ServiceControl.EditOf" ] ,
110115 Is . EqualTo ( context . OriginalMessageFailure . Id ) ) ;
111116 Assert . That ( editedMessageBody . MessageInternalId , Is . EqualTo ( context . EditedMessageInternalId ) ) ;
117+ Assert . That ( context . MessageFailedIds , Has . Count . EqualTo ( 2 ) ) ;
118+ Assert . That ( context . MessageFailedIds , Is . Unique ) ;
119+ Assert . That ( context . MessageFailedIds , Has . Some . EqualTo ( context . OriginalMessageFailureId ) ) ;
120+ Assert . That ( context . MessageFailedIds , Has . Some . EqualTo ( context . EditedMessageFailureId ) ) ;
112121 } ) ;
113122 }
114123
@@ -119,14 +128,12 @@ class EditMessageFailureContext : ScenarioContext
119128 public bool EditedMessageHandled { get ; set ; }
120129 public FailedMessage OriginalMessageFailure { get ; set ; }
121130 public FailedMessage EditedMessageFailure { get ; set ; }
122-
123131 public string OriginalMessageFailureId { get ; set ; }
124132 public string EditedMessageFailureId { get ; set ; }
125133 public string EditedMessageInternalId { get ; set ; }
126134 public bool ExternalProcessorSubscribed { get ; set ; }
127- public string FirstMessageFailedId { get ; set ; }
128- public string SecondMessageFailedId { get ; set ; }
129135 public bool MessageFailedHandled { get ; set ; }
136+ public List < string > MessageFailedIds { get ; } = [ ] ;
130137 }
131138
132139 class FailingEditedMessageReceiver : EndpointConfigurationBuilder
@@ -152,13 +159,9 @@ public Task Handle(FailingMessage message, IMessageHandlerContext context)
152159
153160 public Task Handle ( ServiceControl . Contracts . MessageFailed message , IMessageHandlerContext context )
154161 {
155- if ( testContext . FirstMessageFailedId == null )
156- {
157- testContext . FirstMessageFailedId = message . FailedMessageId ;
158- }
159- else
162+ testContext . MessageFailedIds . Add ( message . FailedMessageId ) ;
163+ if ( testContext . MessageFailedIds . Count == 2 )
160164 {
161- testContext . SecondMessageFailedId = message . FailedMessageId ;
162165 testContext . MessageFailedHandled = true ;
163166 }
164167 return Task . CompletedTask ;
0 commit comments