public void CountParseHasOptionImplications() { var request = HttpVerbs.Get.NewRequest(("fields", "collection.count")); var query = QueryParserHelper.GetQueryParser <User>().Parse(request, true); Assert.True(query.Options.NeedsCount); Assert.False(query.Options.NeedsEnumeration); }
public void DefaultPaging(HttpVerbs verb, int offset, int limit) { var request = HttpRequestHelper.NewRequest(verb); var query = QueryParserHelper.GetQueryParser <User>().Parse(request, true); Assert.Equal(offset, query.Page.Offset); Assert.Equal(limit, query.Page.Limit); }
public void IgnoredAndBadFilters() { var request = HttpVerbs.Get.NewRequest(("", "oulala")); var options = new RddOptions(); var parser = QueryParserHelper.GetQueryParser <User>(options); var query = parser.Parse(request, true); }
public void CorrectPaging(string input, int offset, int limit) { var request = HttpVerbs.Get.NewRequest(("paging", input)); var query = QueryParserHelper.GetQueryParser <User>().Parse(request, true); Assert.Equal(offset, query.Page.Offset); Assert.Equal(limit, query.Page.Limit); }
public void CorrectOrderBys(string input, SortDirection direction, string output) { var request = HttpVerbs.Get.NewRequest(("orderby", input)); var query = QueryParserHelper.GetQueryParser <User>().Parse(request, true); Assert.Single(query.OrderBys); Assert.Equal(direction, query.OrderBys[0].Direction); Assert.Equal ( new PropertyExpression(new ExpressionParser().Parse <User>(output).ToLambdaExpression()).Property, new PropertyExpression(query.OrderBys[0].LambdaExpression).Property ); }
public async void MailAdressFiltersShouldWork() { await RunCodeInsideIsolatedDatabaseAsync(async (context) => { var unitOfWork = new UnitOfWork(context); var storage = new EFStorageService(context); var repo = new UsersRepository(storage, _fixture.RightsService); var collection = new UsersCollection(repo, _fixture.PatcherProvider, _fixture.Instanciator); var users = User.GetManyRandomUsers(20).OrderBy(u => u.Id).ToList(); await repo.AddRangeAsync(users, new Query <User> { Verb = HttpVerbs.Post }); await unitOfWork.SaveChangesAsync(); var request = HttpVerbs.Get.NewRequest(("mail", "*****@*****.**")); var query = QueryParserHelper.GetQueryParser <User>().Parse(request, true); var result = (await collection.GetAsync(query)).Items; Assert.Single(result); Assert.Equal("John Doe 3", result.FirstOrDefault().Name); }); }
public async Task WebControllerShouldWorkOnInterfaces() { var storage = new InMemoryStorageService(); var repository = new Repository <IUser>(storage, new OpenRightExpressionsHelper <IUser>(), new IncludeApplicator()); var collection = new ReadOnlyRestCollection <IUser, int>(repository); var appController = new ReadOnlyAppController <IUser, int>(collection); await repository.AddAsync(new User { Id = 1 }, new Query <IUser> { Verb = Domain.Helpers.HttpVerbs.Post }); await repository.AddAsync(new AnotherUser { Id = 2 }, new Query <IUser> { Verb = Domain.Helpers.HttpVerbs.Post }); var controller = new UserWebController(appController, QueryParserHelper.GetQueryParser <IUser>()); var results = await controller.GetEnumerable(); //Simplified equivalent to Get() Assert.Equal(2, results.Count()); }
public async void LeftJoinShouldWork(string key, string value) { await RunCodeInsideIsolatedDatabaseAsync(async (context) => { var unitOfWork = new UnitOfWork(context); context.Add(new Parent { OptionalChild = new OptionalChild { Name = "value" } }); context.Add(new Parent()); await unitOfWork.SaveChangesAsync(); var request = HttpVerbs.Get.NewRequest((key, value)); var query = QueryParserHelper.GetQueryParser <Parent>().Parse(request, true); var storage = new EFStorageService(context); var repo = new OpenRepository <Parent>(storage, null); var collection = new RestCollection <Parent, int>(repo, new ObjectPatcher <Parent>(_fixture.PatcherProvider, new ReflectionHelper()), new DefaultInstanciator <Parent>()); var result = (await collection.GetAsync(query)).Items; Assert.Single(result); }); }
public void IncorrectOrderBys(string input) { var request = HttpVerbs.Get.NewRequest(("orderby", input)); Assert.Throws <BadRequestException>(() => QueryParserHelper.GetQueryParser <User>().Parse(request, true)); }
public void CorrectVerb(HttpVerbs input) { var query = QueryParserHelper.GetQueryParser <User>().Parse(input.NewRequest(), true); Assert.Equal(query.Verb, input); }
public void InCorrectFilter(string key, string value) { var request = HttpVerbs.Get.NewRequest((key, value)); Assert.Throws <BadRequestException>(() => QueryParserHelper.GetQueryParser <User>().Parse(request, true)); }