public async Task ParseQueryForId() { var queryId = Guid.NewGuid(); var query = new ExampleQuery() { Id = queryId }; bool ran = false; Func<Guid, Task<HttpResponseMessage>> assert = (id) => { Assert.AreEqual(queryId, id); ran = true; return default(HttpResponseMessage).ToTask(); }; var request = new HttpRequestMessage(HttpMethod.Get, "http://example.com/foo/" + queryId.ToString()); request.SetConfiguration(new System.Web.Http.HttpConfiguration()); await query.ParseAsync(request, (q) => assert(q.Id.ParamSingle())); Assert.IsTrue(ran); }
public async Task ParseQueryForArray() { var queryIds = Enumerable.Range(0, 10).Select(i => Guid.NewGuid()).ToArray(); var query = new ExampleQuery() { Id = queryIds }; bool ran = false; Func<Guid, Task<HttpResponseMessage>> assert = (id) => { Assert.Fail(); return default(HttpResponseMessage).ToTask(); }; Func<Guid[], Task<HttpResponseMessage[]>> assertMulti = (ids) => { Assert.AreEqual(queryIds.Length, ids.Length); ran = true; return default(HttpResponseMessage[]).ToTask(); }; var request = new HttpRequestMessage(HttpMethod.Get, "http://example.com/foo/" + queryIds.Select(id => id.ToString()) .Join(",")); request.SetConfiguration(new System.Web.Http.HttpConfiguration()); await query.ParseAsync(request, (q) => assert(q.Id.ParamSingle()), (q) => assert(q.AssociatedId.ParamSingle()), (q) => assertMulti(q.Id.ParamOr())); Assert.IsTrue(ran); }