public async Task Returns_Failure_Response_When_Response_Is_Unsuccessful()
        {
            var httpHandlerMock = new Mock <HttpMessageHandler>();

            httpHandlerMock.Protected()
            .Setup <Task <HttpResponseMessage> >("SendAsync",
                                                 ItExpr.IsAny <HttpRequestMessage>(),
                                                 ItExpr.IsAny <CancellationToken>()
                                                 ).ReturnsAsync(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.InternalServerError,
                Content    = new StringContent("1", Encoding.UTF8, "application/json")
            });
            _sut = new AcquiringBankHttpClient(new HttpClient(httpHandlerMock.Object), _mockLogger.Object);

            var response = await _sut.Post <int>("http://test.com", null);

            Assert.Equal(default, response.Data);
        public async Task Returns_Successful_Response_When_Http_Response_Is_Successful()
        {
            var httpHandlerMock = new Mock <HttpMessageHandler>();

            httpHandlerMock.Protected()
            .Setup <Task <HttpResponseMessage> >("SendAsync",
                                                 ItExpr.IsAny <HttpRequestMessage>(),
                                                 ItExpr.IsAny <CancellationToken>()
                                                 ).ReturnsAsync(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.Accepted,
                Content    = new StringContent("1", Encoding.UTF8, "application/json")
            });
            _sut = new AcquiringBankHttpClient(new HttpClient(httpHandlerMock.Object), _mockLogger.Object);

            var response = await _sut.Post <int>("http://test.com", null);

            Assert.Equal(1, response.Data);
            Assert.Equal("Successfully sent payment to acquiring bank", response.Message);
            Assert.False(response.Error);
        }