public void ReturnsProperlyFilteredCategories(string searchText, FlashcardsSortingCriterion criterion,
                                                      bool descending, int pageIndex, int pageSize)
        {
            var model      = new FlashcardsFilteringModel(searchText, criterion, descending, pageIndex, pageSize);
            var categories = AddCategories();
            var flashards  = AddFlashcards(categories[0], 50);

            var query = Context.Flashcards.AsQueryable();
            var filteredFlashcards = FilteringServices.Filter(query, model).ToList();

            var expected = flashards.Where(f =>
                                           f.Key.Contains(model.SearchText) || f.Value.Contains(model.SearchText) || f.KeyDescription.Contains(model.SearchText) ||
                                           f.ValueDescription.Contains(model.SearchText) || f.Category.Name.Contains(model.SearchText));

            var lambda = GetLambda(criterion);

            expected = descending ? expected.OrderByDescending(lambda) : expected.OrderBy(lambda);

            var expectedList = expected.Skip(model.PageIndex * model.PageSize).Take(model.PageSize)
                               .ToList();

            Assert.Equal(expectedList.Count, filteredFlashcards.Count);
            for (var i = 0; i < expectedList.Count; i++)
            {
                var returned = filteredFlashcards[i];
                var exp      = new FlashcardDto(expectedList[i]);
                Assert.True(exp.Id == returned.Id);
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> Post([FromBody] FlashcardDto flashcardDto)
        {
            var userId    = _userManager.GetUserId(this.User);
            var isAdmin   = this.User.IsInRole(_roleNamesOptions.AdminRoleName);
            var flashcard = await _services.Post(flashcardDto, userId, isAdmin);

            return(new JsonResult(new FlashcardDto(flashcard)));
        }
Esempio n. 3
0
        public async Task <Flashcard> Post(FlashcardDto flashcardDto, string userId, bool isAdmin)
        {
            var flashcard = flashcardDto.ToEntity();

            if (!(await HasPrivilege(flashcard, userId, isAdmin)) && !await IsPublic(flashcard))
            {
                return(null);
            }
            await _repository.Add(flashcard);

            await _unitOfWork.SaveChangesAsync();

            return(flashcard);
        }