public void Should_invoke_ends_in_reverse_order_even_if_an_end_throws() { var currentEnd = 0; int firstUoWEndOrder = 0, secondUoWEndOrder = 0, thirdUoWEndOrder = 0; var firstUoW = new TestUnitOfWork { ExpectedEndOrder = 3, OnEnd = ex => { firstUoWEndOrder = ++currentEnd; } }; var secondUoW = new TestUnitOfWork { ExpectedEndOrder = 2, OnEnd = ex => { secondUoWEndOrder = ++currentEnd; throw new Exception(); } }; var thirdUoW = new TestUnitOfWork { ExpectedEndOrder = 1, OnEnd = ex => { thirdUoWEndOrder = ++currentEnd; } }; RegisterUow(firstUoW); RegisterUow(secondUoW); RegisterUow(thirdUoW); ReceiveMessage(Helpers.Helpers.EmptyTransportMessage()); Console.Out.WriteLine(FuncBuilder); Assert.AreEqual(firstUoW.ExpectedEndOrder, firstUoWEndOrder); Assert.AreEqual(secondUoW.ExpectedEndOrder, secondUoWEndOrder); Assert.AreEqual(thirdUoW.ExpectedEndOrder, thirdUoWEndOrder); }
public void Should_invoke_ends_in_reverse_order() { var currentEnd = 0; int firstUoWEndOrder = 0, secondUoWEndOrder = 0, thirdUoWEndOrder = 0; var firstUoW = new TestUnitOfWork { ExpectedEndOrder = 3, OnEnd = ex => { firstUoWEndOrder = ++currentEnd; } }; var secondUoW = new TestUnitOfWork { ExpectedEndOrder = 2, OnEnd = ex => { secondUoWEndOrder = ++currentEnd; } }; var thirdUoW = new TestUnitOfWork { ExpectedEndOrder = 1, OnEnd = ex => { thirdUoWEndOrder = ++currentEnd; } }; RegisterUow(firstUoW); RegisterUow(secondUoW); RegisterUow(thirdUoW); ReceiveMessage(Helpers.Helpers.EmptyTransportMessage()); Assert.AreEqual(firstUoW.ExpectedEndOrder, firstUoWEndOrder); Assert.AreEqual(secondUoW.ExpectedEndOrder, secondUoWEndOrder); Assert.AreEqual(thirdUoW.ExpectedEndOrder, thirdUoWEndOrder); }
public void Should_not_invoke_end_if_begin_was_not_invoked() { var firstEndCalled = false; var throwableEndCalled = false; var lastEndCalled = false; var firstUoW = new TestUnitOfWork { OnEnd = ex => { firstEndCalled = true; } }; var throwableUoW = new TestUnitOfWork { OnBegin = () => { throw new Exception(); }, OnEnd = ex => { throwableEndCalled = true; } }; var lastUoW = new TestUnitOfWork { OnEnd = ex => { lastEndCalled = true; } }; RegisterUow(firstUoW); RegisterUow(throwableUoW); RegisterUow(lastUoW); ReceiveMessage(Helpers.Helpers.EmptyTransportMessage()); Assert.True(firstEndCalled); Assert.True(throwableEndCalled); Assert.False(lastEndCalled); }
public void Should_invoke_each_end_only_once() { var firstEndCalled = 0; var throwableEndCalled = 0; var lastEndCalled = 0; var firstUoW = new TestUnitOfWork { OnEnd = (ex) => { firstEndCalled++; } }; var throwableUoW = new TestUnitOfWork { OnEnd = (ex) => { throwableEndCalled++; throw new Exception(); } }; var lastUoW = new TestUnitOfWork { OnEnd = (ex) => { lastEndCalled++; } }; RegisterUow(firstUoW); RegisterUow(throwableUoW); RegisterUow(lastUoW); ReceiveMessage(Helpers.Helpers.EmptyTransportMessage()); Assert.AreEqual(1, firstEndCalled); Assert.AreEqual(1, throwableEndCalled); Assert.AreEqual(1, lastEndCalled); }
public void Should_pass_the_exception_to_the_uow_end() { RegisterMessageType <MessageThatBlowsUp>(); unicastBus.MessageHandlerTypes = new[] { typeof(MessageThatBlowsUpHandler) }; var endCalled = false; var uow = new TestUnitOfWork { OnEnd = (ex) => { Assert.NotNull(ex); endCalled = true; } }; RegisterUow(uow); ReceiveMessage(Helpers.Helpers.Serialize(new MessageThatBlowsUp())); Assert.True(endCalled); }
public void Should_invoke_the_uow_begin_and_end() { var beginCalled = false; var endCalled = false; var uow = new TestUnitOfWork { OnBegin = () => { beginCalled = true; Assert.False(endCalled); }, OnEnd = (ex) => { Assert.Null(ex); endCalled = true; } }; RegisterUow(uow); ReceiveMessage(Helpers.Helpers.EmptyTransportMessage()); Assert.True(beginCalled); Assert.True(endCalled); }