Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
            });
        }
Esempio n. 9
0
        public void IncorrectOrderBys(string input)
        {
            var request = HttpVerbs.Get.NewRequest(("orderby", input));

            Assert.Throws <BadRequestException>(() => QueryParserHelper.GetQueryParser <User>().Parse(request, true));
        }
Esempio n. 10
0
        public void CorrectVerb(HttpVerbs input)
        {
            var query = QueryParserHelper.GetQueryParser <User>().Parse(input.NewRequest(), true);

            Assert.Equal(query.Verb, input);
        }
Esempio n. 11
0
        public void InCorrectFilter(string key, string value)
        {
            var request = HttpVerbs.Get.NewRequest((key, value));

            Assert.Throws <BadRequestException>(() => QueryParserHelper.GetQueryParser <User>().Parse(request, true));
        }