@@ -103,56 +103,68 @@ public async Task Should_discard_edit_when_different_edit_already_exists()
103103 Assert . That ( dispatcher . DispatchedMessages , Is . Empty ) ;
104104 }
105105
106- // [Test]
107- // public async Task Should_dispatch_edited_message_when_first_edit()
108- // {
109- // var failedMessage = await CreateAndStoreFailedMessage();
106+ [ Test ]
107+ public async Task Should_dispatch_edited_message_when_first_edit ( )
108+ {
109+ var failedMessage = await CreateAndStoreFailedMessage ( ) ;
110110
111- // var newBodyContent = Encoding.UTF8.GetBytes("new body content");
112- // var newHeaders = new Dictionary<string, string> { { "someKey", "someValue" } };
113- // var message = CreateEditMessage(failedMessage.UniqueMessageId, newBodyContent, newHeaders);
111+ var newBodyContent = Encoding . UTF8 . GetBytes ( "new body content" ) ;
112+ var newHeaders = new Dictionary < string , string > { { "someKey" , "someValue" } } ;
113+ var message = CreateEditMessage ( failedMessage . UniqueMessageId , newBodyContent , newHeaders ) ;
114114
115- // var handlerContent = message.FailedMessageId;
116- // await handler.Handle(message, handlerContent);
115+ await handler . Handle ( message , message . FailedMessageId ) ;
117116
118- // var dispatchedMessage = dispatcher.DispatchedMessages.Single();
119- // Assert.Multiple(() =>
120- // {
121- // Assert.That(
122- // dispatchedMessage.Item1.Destination,
123- // Is.EqualTo(failedMessage.ProcessingAttempts.Last().FailureDetails.AddressOfFailingEndpoint));
124- // Assert.That(dispatchedMessage.Item1.Message.Body.ToArray(), Is.EqualTo(newBodyContent));
125- // Assert.That(dispatchedMessage.Item1.Message.Headers["someKey"], Is.EqualTo("someValue"));
126- // });
117+ var dispatchedMessage = dispatcher . DispatchedMessages . Single ( ) ;
118+ Assert . Multiple ( ( ) =>
119+ {
120+ Assert . That (
121+ dispatchedMessage . Item1 . Destination ,
122+ Is . EqualTo ( failedMessage . ProcessingAttempts . Last ( ) . FailureDetails . AddressOfFailingEndpoint ) ) ;
123+ Assert . That ( dispatchedMessage . Item1 . Message . Body . ToArray ( ) , Is . EqualTo ( newBodyContent ) ) ;
124+ Assert . That ( dispatchedMessage . Item1 . Message . Headers [ "someKey" ] , Is . EqualTo ( "someValue" ) ) ;
125+ } ) ;
127126
128- // using (var x = await ErrorMessageDataStore.CreateEditFailedMessageManager())
129- // {
130- // var failedMessage2 = await x.GetFailedMessage(failedMessage.UniqueMessageId);
131- // Assert.That(failedMessage2, Is.Not.Null, "Edited failed message");
127+ using ( var x = await ErrorMessageDataStore . CreateEditFailedMessageManager ( ) )
128+ {
129+ var failedMessage2 = await x . GetFailedMessage ( failedMessage . UniqueMessageId ) ;
130+ Assert . That ( failedMessage2 , Is . Not . Null , "Edited failed message" ) ;
132131
133- // var editId = await x.GetCurrentEditingMessageId(failedMessage2.UniqueMessageId);
132+ var editId = await x . GetCurrentEditingMessageId ( failedMessage2 . UniqueMessageId ) ;
134133
135- // Assert.Multiple(() =>
136- // {
137- // Assert.That(failedMessage2.Status, Is.EqualTo(FailedMessageStatus.Resolved), "Failed message status");
138- // Assert.That(editId, Is.EqualTo(handlerContent.MessageId ), "MessageId");
139- // });
140- // }
141- // }
134+ Assert . Multiple ( ( ) =>
135+ {
136+ Assert . That ( failedMessage2 . Status , Is . EqualTo ( FailedMessageStatus . Resolved ) , "Failed message status" ) ;
137+ Assert . That ( editId , Is . EqualTo ( message . FailedMessageId ) , "MessageId" ) ;
138+ } ) ;
139+ }
140+ }
142141
143- //[Test]
144- //public async Task Should_dispatch_edited_message_when_retrying()
145- //{
146- // var failedMessageId = Guid.NewGuid().ToString();
147- // await CreateAndStoreFailedMessage(failedMessageId);
142+ [ Test ]
143+ public async Task Should_dispatch_edited_message_when_retrying ( )
144+ {
145+ var failedMessageId = Guid . NewGuid ( ) . ToString ( ) ;
146+ var controlMessageId = Guid . NewGuid ( ) . ToString ( ) ;
147+ await CreateAndStoreFailedMessage ( failedMessageId ) ;
148148
149- // var handlerContext = new TestableMessageHandlerContext();
150- // var message = CreateEditMessage(failedMessageId);
151- // await handler.Handle(message, handlerContext);
152- // await handler.Handle(message, handlerContext);
149+ var message = CreateEditMessage ( failedMessageId ) ;
150+ await handler . Handle ( message , controlMessageId ) ;
151+ await handler . Handle ( message , controlMessageId ) ;
153152
154- // Assert.That(dispatcher.DispatchedMessages, Has.Count.EqualTo(2), "Dispatched message count");
155- //}
153+ Assert . That ( dispatcher . DispatchedMessages , Has . Count . EqualTo ( 2 ) , "Dispatched message count" ) ;
154+ }
155+
156+ [ Test ]
157+ public async Task Simulate_Two_Tabs_dispatching_two_control_messages_for_the_same_failed_message ( )
158+ {
159+ var failedMessageId = Guid . NewGuid ( ) . ToString ( ) ;
160+ await CreateAndStoreFailedMessage ( failedMessageId ) ;
161+
162+ var message = CreateEditMessage ( failedMessageId ) ;
163+ await handler . Handle ( message , Guid . NewGuid ( ) . ToString ( ) ) ;
164+ await handler . Handle ( message , Guid . NewGuid ( ) . ToString ( ) ) ;
165+
166+ Assert . That ( dispatcher . DispatchedMessages , Has . Count . EqualTo ( 1 ) , "Dispatched message count" ) ;
167+ }
156168
157169 //[Test]
158170 //public async Task Should_dispatch_message_using_incoming_transaction()
0 commit comments