public void Request_RelativeTemplateUriWithQuery_DeferredValues_FromContext_Build() { Uri baseUri = new Uri("http://localhost:1234/"); HttpRequest <TestParameterContext> requestBuilder = HttpRequest <TestParameterContext> .Factory.Create(baseUri) .WithRelativeUri("{action}/{id}?flag={flag?}") .WithTemplateParameter("action", context => context.Action) .WithTemplateParameter("id", context => context.Id) .WithTemplateParameter("flag", context => context.Flag); TestParameterContext testParameterContext = new TestParameterContext { Action = "foo", Id = 1, Flag = true }; using (HttpRequestMessage requestMessage = requestBuilder.BuildRequestMessage(HttpMethod.Get, testParameterContext)) { Assert.Equal( new Uri(baseUri, "foo/1?flag=True"), requestMessage.RequestUri ); } testParameterContext.Flag = false; using (HttpRequestMessage requestMessage = requestBuilder.BuildRequestMessage(HttpMethod.Get, testParameterContext)) { Assert.Equal( new Uri(baseUri, "foo/1?flag=False"), requestMessage.RequestUri ); } testParameterContext.Action = "diddly"; testParameterContext.Id = -17; testParameterContext.Flag = null; using (HttpRequestMessage requestMessage = requestBuilder.BuildRequestMessage(HttpMethod.Get, testParameterContext)) { Assert.Equal( new Uri(baseUri, "diddly/-17"), requestMessage.RequestUri ); } }
public async Task Request_RelativeTemplateUriWithQuery_DeferredValues_FromContext_Get() { Uri baseUri = new Uri("http://localhost:1234/"); TestParameterContext testParameterContext = new TestParameterContext(); Uri expectedUri = null; HttpClient client = TestClients.Expect(requestMessage => { Assert.Equal(expectedUri, requestMessage.RequestUri); }); using (client) { HttpRequest <TestParameterContext> requestBuilder = HttpRequest <TestParameterContext> .Factory.Create(baseUri) .WithRelativeUri("{action}/{id}?flag={flag?}") .WithTemplateParameter("action", context => context.Action) .WithTemplateParameter("id", context => context.Id) .WithTemplateParameter("flag", context => context.Flag); testParameterContext.Action = "foo"; testParameterContext.Id = 1; testParameterContext.Flag = true; expectedUri = new Uri(baseUri, "foo/1?flag=True"); await client.GetAsync(requestBuilder, testParameterContext); testParameterContext.Flag = false; expectedUri = new Uri(baseUri, "foo/1?flag=False"); await client.GetAsync(requestBuilder, testParameterContext); testParameterContext.Action = "diddly"; testParameterContext.Id = -17; testParameterContext.Flag = null; expectedUri = new Uri(baseUri, "diddly/-17"); await client.GetAsync(requestBuilder, testParameterContext); } }