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); }
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); }
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); }
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); }