public async Task ParseXml_ValidXml_ReturnsSerializedObject()
        {
            string fooValue = Factory.GetString();
            int    barValue = Factory.GetInteger();
            string payload  = $"<root><Foo>{fooValue}</Foo><Bar>{barValue}</Bar></root>";
            var    message  = new HttpResponseMessage {
                StatusCode = HttpStatusCode.OK, Content = new StringContent(payload)
            };

            TestablePayload result = await _service.ParseXmlAsync <TestablePayload>(message);

            Assert.Equal(fooValue + barValue, result.Foo + result.Bar);
        }
        public async Task ParseJson_ValidJson_ReturnsSerializedObject()
        {
            string fooValue = Factory.GetString();
            int    barValue = Factory.GetInteger();
            string payload  = $"{{\"Foo\": \"{fooValue}\", \"Bar\": {barValue}}}";
            var    message  = new HttpResponseMessage {
                StatusCode = HttpStatusCode.OK, Content = new StringContent(payload)
            };

            TestablePayload result = await _service.ParseJsonAsync <TestablePayload>(message);

            Assert.Equal(fooValue + barValue, result.Foo + result.Bar);
        }
        public async Task ParseXml_InvalidXml_ReturnsInstanceWithErrorMessage()
        {
            string fooValue = Factory.GetString();
            int    barValue = Factory.GetInteger();
            string payload  = $"<rootX><Foo>{fooValue}</Foo><Bar>{barValue}</Bar></rootY>";
            var    message  = new HttpResponseMessage {
                StatusCode = HttpStatusCode.OK, Content = new StringContent(payload)
            };

            TestablePayload result = await _service.ParseXmlAsync <TestablePayload>(message);

            Assert.Equal($"Deserializing xml failed: {payload}", result.ErrorMessage);
        }
        public async Task ParseJson_InvalidJson_ReturnsInstanceWithErrorMessage()
        {
            string fooValue = Factory.GetString();
            int    barValue = Factory.GetInteger();
            string payload  = $"\"Foo\": \"{fooValue}\", \"Bar\": {barValue}";
            var    message  = new HttpResponseMessage {
                StatusCode = HttpStatusCode.OK, Content = new StringContent(payload)
            };

            TestablePayload result = await _service.ParseJsonAsync <TestablePayload>(message);

            Assert.Equal("Deserializing json failed", result.ErrorMessage);
        }