public async Task CallsSetHeadersWithHttpRequestMessage()
        {
            // Arrange
            requestDispatcher = new TestRequestDispatcher(httpClient);
            requestDispatcher.ContentSerializer = serializerMock.Object;

            // Act
            await CallSend(HttpMethod.Get, "http://localhost");

            // Assert
            Assert.AreEqual(1, ((TestRequestDispatcher)requestDispatcher).SetHeadersCallCount);
            Assert.IsNotNull(((TestRequestDispatcher)requestDispatcher).LastSetHeadersMessage);
        }
        public async Task CallsOnErrorResponseWithHttpResponseMessage()
        {
            // Arrange
            requestDispatcher = new TestRequestDispatcher(httpClient);
            requestDispatcher.ContentSerializer = serializerMock.Object;

            messageHandler.ResponseHandler = r => new HttpResponseMessage(HttpStatusCode.BadRequest);

            // Act
            await CallSend(HttpMethod.Get, "http://localhost");

            // Assert
            Assert.AreEqual(1, ((TestRequestDispatcher)requestDispatcher).OnErrorResponseCallCount);
            Assert.IsNotNull(((TestRequestDispatcher)requestDispatcher).LastOnErrorResponseMessage);
        }
        public void InitializeBase()
        {
            messageHandler    = new TestHttpMessageHandler();
            httpClient        = new HttpClient(messageHandler);
            requestDispatcher = new BaseRequestDispatcher(httpClient);

            requestContent           = new object();
            serializedRequestContent = new StringContent("request");

            responseContent           = new object();
            serializedResponseContent = new StringContent("response");
            responseMessage           = new HttpResponseMessage(HttpStatusCode.OK);
            responseMessage.Content   = serializedResponseContent;

            serializerMock = new Mock <IContentSerializer>();
            serializerMock.Setup(s => s.DeserializeAsync <object>(serializedResponseContent)).Returns(Task.FromResult(responseContent));
            serializerMock.Setup(s => s.Serialize(requestContent)).Returns(serializedRequestContent);
            requestDispatcher.ContentSerializer = serializerMock.Object;
        }