Beispiel #1
0
        public void InvokeFunction_Input_Output_CommunicationFailure_ShouldReconnectAndRetry()
        {
            // Arrange
            var connection  = new SapPooledConnection(_connectionPoolMock.Object);
            var input       = new { Name = "123" };
            var shouldThrow = true;

            _rfcFunctionMock.Setup(x => x.Invoke <OutputModel>(It.IsAny <object>())).Callback(() =>
            {
                if (!shouldThrow)
                {
                    return;
                }
                shouldThrow = false;
                throw new SapCommunicationFailedException(string.Empty);
            });

            // Act
            connection.InvokeFunction <OutputModel>("SomeFunction", input);

            // Assert
            _connectionPoolMock.Verify(x => x.ForgetConnection(_rfcConnectionMock.Object), Times.Once);
            _connectionPoolMock.Verify(x => x.GetConnection(It.IsAny <CancellationToken>()), Times.Exactly(2));
            _rfcFunctionMock.Verify(x => x.Invoke <OutputModel>(input), Times.Exactly(2));
        }
        public void Dispose_RightAfterConstruction_ShouldNotReturnConnectionToPool()
        {
            // Arrange
            var connection = new SapPooledConnection(_connectionPoolMock.Object);

            // Act
            connection.Dispose();

            // Assert
            _connectionPoolMock.Verify(x => x.ReturnConnection(It.IsAny <ISapConnection>()), Times.Never);
        }
Beispiel #3
0
        public void InvokeFunction_NoInput_NoOutput_ShouldForwardCall()
        {
            // Arrange
            var connection = new SapPooledConnection(_connectionPoolMock.Object);

            // Act
            connection.InvokeFunction("SomeFunction");

            // Assert
            _rfcConnectionMock.Verify(x => x.CreateFunction("SomeFunction"), Times.Once);
            _rfcFunctionMock.Verify(x => x.Invoke(), Times.Once);
        }
Beispiel #4
0
        public void InvokeFunction_Input_Output_ShouldForwardCall()
        {
            // Arrange
            var connection = new SapPooledConnection(_connectionPoolMock.Object);
            var input      = new { Name = "123" };

            // Act
            connection.InvokeFunction <OutputModel>("SomeFunction", input);

            // Assert
            _rfcConnectionMock.Verify(x => x.CreateFunction("SomeFunction"), Times.Once);
            _rfcFunctionMock.Verify(x => x.Invoke <OutputModel>(input), Times.Once);
        }
Beispiel #5
0
        public void Dispose_ShouldReturnConnectionToPool()
        {
            // Arrange
            var connection = new SapPooledConnection(_connectionPoolMock.Object);

            connection.InvokeFunction("Test");

            // Act
            connection.Dispose();

            // Assert
            _connectionPoolMock.Verify(x => x.ReturnConnection(_rfcConnectionMock.Object), Times.Once);
            _connectionPoolMock.Verify(x => x.ForgetConnection(It.IsAny <ISapConnection>()), Times.Never);
        }