Beispiel #1
0
            public async void ShouldThrowExceptionIfPreviousTxFailed()
            {
                var mockConn = new Mock <IConnection>();
                var tx       = new AsyncTransaction(mockConn.Object, Mock.Of <ITransactionResourceHandler>());
                await tx.MarkToClose();

                var error = await ExceptionAsync(() => tx.RunAsync("ttt"));

                error.Should().BeOfType <ClientException>();
            }
Beispiel #2
0
            public async Task ShouldBeClosedWhenFailed()
            {
                var protocol = new Mock <IBoltProtocol>();
                var mockConn = NewMockedConnection(protocol.Object);
                var tx       = new AsyncTransaction(mockConn.Object, Mock.Of <ITransactionResourceHandler>());

                await tx.BeginTransactionAsync(TransactionConfig.Default);

                await tx.MarkToClose();

                tx.IsOpen.Should().BeFalse();
            }
Beispiel #3
0
            public void ShouldNotEnqueueMoreMessagesAfterMarkToClosedInRollbackAsync()
            {
                var protocol = new Mock <IBoltProtocol>();
                var mockConn = NewMockedConnection(protocol.Object);
                var tx       = new AsyncTransaction(mockConn.Object, Mock.Of <ITransactionResourceHandler>());

                mockConn.Invocations.Clear();

                tx.MarkToClose();
                tx.Awaiting(t => t.RollbackAsync()).Should().NotThrow();
                protocol.Verify(x => x.RollbackTransactionAsync(It.IsAny <IConnection>()), Times.Never);
                mockConn.Verify(x => x.SyncAsync(), Times.Never);
            }
            public async Task ShouldNotEnqueueMoreMessagesAfterMarkToClosedInRollbackAsync()
            {
                var protocol = new Mock <IBoltProtocol>();
                var mockConn = NewMockedConnection(protocol.Object);
                var tx       = new AsyncTransaction(mockConn.Object);

                mockConn.Invocations.Clear();

                tx.MarkToClose();
                await tx.RollbackAsync();

                protocol.Verify(x => x.RollbackTransactionAsync(It.IsAny <IConnection>()), Times.Never);
                mockConn.Verify(x => x.SyncAsync(), Times.Never);
            }
Beispiel #5
0
            public void ShouldNotEnqueueMoreMessagesAfterMarkToClosedInCommitAsync()
            {
                var protocol = new Mock <IBoltProtocol>();
                var mockConn = NewMockedConnection(protocol.Object);
                var tx       = new AsyncTransaction(mockConn.Object, Mock.Of <ITransactionResourceHandler>());

                mockConn.Invocations.Clear();

                tx.MarkToClose();
                tx.Awaiting(t => t.CommitAsync()).Should().Throw <ClientException>().Which.Message.Should()
                .Contain("Cannot commit this transaction");
                protocol.Verify(x => x.CommitTransactionAsync(It.IsAny <IConnection>(), tx), Times.Never);
                mockConn.Verify(x => x.SyncAsync(), Times.Never);
            }
Beispiel #6
0
            public void ShouldThrowExceptionToRunAfterMarkToClosed()
            {
                var protocol = new Mock <IBoltProtocol>();
                var mockConn = NewMockedConnection(protocol.Object);
                var tx       = new AsyncTransaction(mockConn.Object, Mock.Of <ITransactionResourceHandler>());

                mockConn.Invocations.Clear();

                tx.MarkToClose();

                tx.Awaiting(t => t.RunAsync("should not run")).Should().Throw <ClientException>().Which.Message.Should()
                .StartWith("Cannot run statement in this transaction");
                protocol.Verify(x => x.RollbackTransactionAsync(It.IsAny <IConnection>()), Times.Never);
                mockConn.Verify(x => x.SyncAsync(), Times.Never);
            }
            public async Task ShouldThrowExceptionToRunAfterMarkToClosed()
            {
                var protocol = new Mock <IBoltProtocol>();
                var mockConn = NewMockedConnection(protocol.Object);
                var tx       = new AsyncTransaction(mockConn.Object);

                mockConn.Invocations.Clear();

                tx.MarkToClose();

                var exception = await Record.ExceptionAsync(() => tx.RunAsync("should not run"));

                exception.Should().BeOfType <ClientException>();
                exception.Message.Should().StartWith("Cannot run more statements in this transaction");

                protocol.Verify(x => x.RollbackTransactionAsync(It.IsAny <IConnection>()), Times.Never);
                mockConn.Verify(x => x.SyncAsync(), Times.Never);
            }