public async Task FakeHttpClient_AllowsRulesWithUnconditionalReturnValue()
        {
            var fakeClient = new FakeHttpClient();

            fakeClient.AddRule(r => r.RequestUri.Host == "www.200.com", OkResponse);
            fakeClient.AddRule(r => r.RequestUri.Host == "www.500.com", ErrorResponse);
            fakeClient.AddRule(r => r.RequestUri.Host == "www.404.com", NotFound);

            var response404 = await fakeClient.GetAsync("http://www.404.com");
            var response200 = await fakeClient.GetAsync("http://www.200.com");
            var response500 = await fakeClient.GetAsync("http://www.500.com");

            Assert.AreEqual(HttpStatusCode.NotFound, response404.StatusCode);
            Assert.AreEqual(HttpStatusCode.OK, response200.StatusCode);
            Assert.AreEqual(HttpStatusCode.InternalServerError, response500.StatusCode);
        }
        public async Task FakeHttpClient_AllowsRulesWithStaticReturnValue()
        {
            var fakeClient = new FakeHttpClient();
            fakeClient.AddRule(OkResponse);

            var response200 = await fakeClient.GetAsync("http://www.404.com");

            Assert.AreEqual(HttpStatusCode.OK, response200.StatusCode);
        }
        public async Task FakeHttpClient_KeepsRequestHistory()
        {
            var fakeClient = new FakeHttpClient();
            fakeClient.AddRule(OkResponse);

            var response404 = await fakeClient.GetAsync("http://www.404.com");
            var response200 = await fakeClient.GetAsync("http://www.200.com");

            Assert.AreEqual(2, fakeClient.History.Count);
        }
        public async Task FakeHttpClient_AllowsRulesWithConditionalReturnValue()
        {
            var fakeClient = new FakeHttpClient();

            fakeClient.AddRule(req => req.RequestUri.Host == "www.404.com" ? NotFound : OkResponse);

            var response404 = await fakeClient.GetAsync("http://www.404.com");
            var response200 = await fakeClient.GetAsync("http://www.200.com");

            Assert.AreEqual(HttpStatusCode.NotFound, response404.StatusCode);
            Assert.AreEqual(HttpStatusCode.OK, response200.StatusCode);
        }
 public async Task FakeHttpClient_ThrowsExceptionWhenFakeReturnsNull()
 {
     var fakeClient = new FakeHttpClient();
     fakeClient.AddRule(r => null);
     var response = await fakeClient.GetAsync("http://www.test.com");
 }