public void GetBooksInStock_NoParamsAreSet_ReturnsAllBooksWithCountMoreThanZero()
        {
            var expectedResult = TestData.Books.Count(book => book.Count > 1);

            var queryParams = new BooksInStockQueryParams();

            var actualResult = _repository.GetBooksInStock(queryParams).Items.Count;

            Assert.Equal(expectedResult, actualResult);
        }
        public void GetBooksInStock_SortByTitleFilterIsSet_ReturnsAllBooksWithCountMoreThanZeroSortedbyTitle()
        {
            var expectedResult = TestData.Books.Where(book => book.Count > 1)
                                 .OrderBy(book => book.Name);

            var queryParams = new BooksInStockQueryParams {
                SortByTitle = true
            };

            var actualResult = _repository.GetBooksInStock(queryParams).Items;

            Assert.Equal(expectedResult, actualResult);
        }
        public void GetBooksInStock_ShowOnlyTitleFilterIsSet_ReturnsOnlyTitlesOfAllBooksWithCountMoreThanZero()
        {
            var expectedResult = TestData.Books.Where(book => book.Count > 1)
                                 .Select(book => book.Name).ToList();

            var queryParams = new BooksInStockQueryParams {
                ShowOnlyTitle = true
            };

            var actualResult = _repository.GetBooksInStock(queryParams).Titles;

            Assert.Equal(expectedResult, actualResult);
        }
        public void GetBooksInStock_GetLimitedItemsNumberIsSet_ReturnslimitedNumberBooksWithCountMoreThanZero()
        {
            var booksLimit = 2;

            var expectedResult = TestData.Books.Where(book => book.Count > 0).Take(booksLimit).ToList();

            var queryParams = new BooksInStockQueryParams {
                GetLimitedItemsNumber = booksLimit
            };

            var actualResult = _repository.GetBooksInStock(queryParams).Items;

            Assert.Equal(expectedResult, actualResult);
        }
        public void GetBooksInStock_GetOnlyCountIsSet_ReturnsOnlyCountOfAllBooksWithCountMoreThanZero()
        {
            var expectedResult = TestData.Books.Count(book => book.Count > 1);

            var queryParams = new BooksInStockQueryParams {
                GetOnlyCount = true
            };

            var result = _repository.GetBooksInStock(queryParams);

            var actualResultBooks = result.Items;
            var actualResultCount = result.AgregateValue;

            Assert.Empty(actualResultBooks);
            Assert.Equal(expectedResult, actualResultCount);
        }
Exemplo n.º 6
0
        public AggregateResponce <Book> GetBooksInStock(BooksInStockQueryParams queryParams)
        {
            if (queryParams == null)
            {
                throw new ArgumentNullException(nameof(queryParams));
            }

            var response = new AggregateResponce <Book>();

            var filter = _filter.Gt(BooksTableFieldNames.Count, 1);

            var filteredResult = _context.Books.Find(filter).Limit(queryParams.GetLimitedItemsNumber);

            if (queryParams.ShowOnlyTitle)
            {
                filteredResult = filteredResult.Project(Builders <BsonDocument> .Projection.Include(BooksTableFieldNames.Name));
            }

            if (queryParams.SortByTitle)
            {
                var sortFilter = new BsonDocument().Add(BooksTableFieldNames.Name, 1);

                filteredResult = filteredResult.Sort(sortFilter);
            }

            if (!queryParams.GetOnlyCount)
            {
                if (queryParams.ShowOnlyTitle)
                {
                    response.Titles = filteredResult.ToEnumerable()
                                      .Select(doc => doc[BooksTableFieldNames.Name].AsString)
                                      .ToList();
                }
                else
                {
                    response.Items = filteredResult.ToEnumerable()
                                     .Select(BookConverter.ConvertDocumentToBook)
                                     .ToList();
                }
            }

            response.AgregateValue = filteredResult.ToEnumerable().Count();

            return(response);
        }
        public void GetBooksInStock_QueryParamsAreNull_ThrowsArgumentNullException()
        {
            BooksInStockQueryParams queryParams = null;

            Assert.Throws <ArgumentNullException>(() => _repository.GetBooksInStock(queryParams));
        }