public async Task query_request_with_the_cache_bypass_set_to_true_should_not_attempt_to_get_or_save_response_in_cache()
        {
            // arrange
            MockCustomQueryResponse cacheOut;
            var mockHttpResponse = new
            {
                id              = 1,
                name            = "Content name",
                renderedContent = "<p>some content html</p>",
                properties      = new
                {
                    pageTitle   = "title",
                    pageContent = "page content"
                }
            };

            mockHttpMessageHandler
            .When("*")
            .Respond(HttpStatusCode.OK, "application/json", JsonConvert.SerializeObject(mockHttpResponse));
            var request = GetNewRequest();

            // act
            MockCustomQueryResponse response = await request.QueryAsync(new MockUmbracoQueryA(1), bypassCache : true);

            // assert
            mockCache.Verify(c => c.TryGet(It.IsAny <string>(), out cacheOut), Times.Never);
            mockCache.Verify(c => c.Add(It.IsAny <string>(), It.IsAny <object>()), Times.Never);
        }
        public async Task query_request_should_map_a_custom_query_to_a_response_type_T()
        {
            // arrange
            var mockHttpResponse = new
            {
                id              = 1,
                name            = "Content name",
                renderedContent = "<p>some content html</p>",
                properties      = new
                {
                    pageTitle   = "title",
                    pageContent = "page content"
                }
            };

            mockHttpMessageHandler
            .When("*")
            .Respond(HttpStatusCode.OK, "application/json", JsonConvert.SerializeObject(mockHttpResponse));
            var request = GetNewRequest();

            // act
            MockCustomQueryResponse response = await request.QueryAsync(new MockUmbracoQueryA(1));

            // assert
            response.Id.ShouldBe(1);
            response.Name.ShouldBe("Content name");
            response.Rest.ShouldNotBeNull();
        }
        public async Task query_request_should_check_the_cache_first()
        {
            // arrange
            MockCustomQueryResponse cacheOut;
            var request = GetNewRequest();

            // act
            MockCustomQueryResponse response = await request.QueryAsync(new MockUmbracoQueryA(1));

            // assert
            mockCache.Verify(c => c.TryGet(It.IsAny <string>(), out cacheOut), Times.Exactly(1));
        }