Beispiel #1
0
        public async Task <ActionResult> Get([FromQuery] GetTodoItemsRequest requst)
        {
            var query = db.TodoItems.AsQueryable();

            // filter
            if (!string.IsNullOrEmpty(requst.Filter.Title))
            {
                query = query.Where(a => a.Title.Contains(requst.Filter.Title));
            }
            if (requst.Filter.Status.HasValue)
            {
                query = query.Where(a => a.Status == requst.Filter.Status);
            }

            var total = await query.CountAsync();


            var items = await query
                        .OrderByDescending(a => a.CreateOn)
                        .Skip(requst.Skip)
                        .Take(GetTake(requst.Take))
                        .ToArrayAsync();

            var response = new GetTodoItemsResponse
            {
                Items = items,
                Total = total
            };

            return(Ok(response));
        public async Task HandleAsyncTest(int totalItems)
        {
            var todoItemEntities = await PopulateTodoItems(totalItems);

            var handler = new GetTodoItemsRequestHandler(Context);

            var request  = new GetTodoItemsRequest();
            var response = await handler.HandleAsync(request);

            Assert.IsNotNull(response?.Item);
            Assert.AreEqual(0, response.Notifications.Count);
            Assert.AreEqual(todoItemEntities.Count, response.Item.Count);

            foreach (var todoItemEntity in todoItemEntities)
            {
                var todoItem = response.Item.SingleOrDefault(item => item.Id == todoItemEntity.Id);
                VerifyTodoItem.AssertTodoItem(todoItemEntity, todoItem);
            }
        }