public async Task SendsMessageOnlyWhenTransactionScopeIsCompleted(bool completeTheScope, bool throwException, bool expectToReceiveMessage) { var gotMessage = false; _activator.Handle<string>(async str => gotMessage = true); try { using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { scope.EnlistRebus(); await _bus.SendLocal("hallå i stuen!1"); if (throwException) { throw new ApplicationException("omg what is this?????"); } if (completeTheScope) { scope.Complete(); } } } catch(ApplicationException exception) when (exception.Message == "omg what is this?????") { Console.WriteLine("An exception occurred... quite expected though"); } await Task.Delay(1000); Assert.That(gotMessage, Is.EqualTo(expectToReceiveMessage), "Must receive message IFF the tx scope is completed"); }
public async Task SendsMessageOnlyWhenTransactionScopeIsCompleted(bool completeTheScope, bool expectToReceiveMessage) { var gotMessage = false; _activator.Handle<string>(async str => gotMessage = true); using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { scope.EnlistRebus(); await _bus.SendLocal("hallå i stuen!1"); if (completeTheScope) { scope.Complete(); } } await Task.Delay(1000); Assert.That(gotMessage, Is.EqualTo(expectToReceiveMessage), "Must receive message IFF the tx scope is completed"); }