public async Task CanDoCRUDandSearch() { // Read non-existing item var getByIdsResult = await CustomerReviewService.GetByIdsAsync(new[] { CustomerReviewId }); Assert.NotNull(getByIdsResult); Assert.Empty(getByIdsResult); // Create var item = new CustomerReview { Id = CustomerReviewId, ProductId = ProductId, CreatedDate = DateTime.Now, CreatedBy = "initial data seed", CustomerName = "John Doe", ReviewContent = "Liked that" }; await CustomerReviewService.SaveCustomerReviewsAsync(new[] { item }); _mockCustomerReviewRepository.Setup(ss => ss.GetByIdsAsync(new[] { CustomerReviewId })) .ReturnsAsync(new[] { new CustomerReviewEntity().FromModel(item, new PrimaryKeyResolvingMap()) }); getByIdsResult = await CustomerReviewService.GetByIdsAsync(new[] { CustomerReviewId }); Assert.Single(getByIdsResult); item = getByIdsResult[0]; Assert.Equal(CustomerReviewId, item.Id); // Update var updatedContent = "Updated content"; Assert.NotEqual(updatedContent, item.ReviewContent); item.ReviewContent = updatedContent; await CustomerReviewService.SaveCustomerReviewsAsync(new[] { item }); getByIdsResult = await CustomerReviewService.GetByIdsAsync(new[] { CustomerReviewId }); Assert.Single(getByIdsResult); item = getByIdsResult[0]; Assert.Equal(updatedContent, item.ReviewContent); // Search var mockReviews = new[] { new CustomerReviewEntity().FromModel(item, new PrimaryKeyResolvingMap()) }.AsQueryable().BuildMock(); _mockCustomerReviewRepository.SetupGet(x => x.CustomerReviews).Returns(mockReviews.Object); var criteria = new CustomerReviewSearchCriteria { ProductIds = new[] { ProductId } }; var cacheKey = CacheKey.With(CustomerReviewSearchService.GetType(), nameof(CustomerReviewSearchService.SearchCustomerReviewsAsync), criteria.GetCacheKey()); _platformMemoryCacheMock.Setup(pmc => pmc.CreateEntry(cacheKey)).Returns(_cacheEntryMock.Object); var searchResult = await CustomerReviewSearchService.SearchCustomerReviewsAsync(criteria); Assert.NotNull(searchResult); Assert.Equal(1, searchResult.TotalCount); Assert.Single(searchResult.Results); // Delete _mockCustomerReviewRepository.Setup(ss => ss.GetByIdsAsync(new[] { CustomerReviewId })) .ReturnsAsync(new CustomerReviewEntity[0]); await CanDeleteCustomerReviews(); }