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); }
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)); }