public async Task GetAll_ReachUnexistPage_ReturnResultWithPagination() { // ===== Arrange ===== var dbName = Guid.NewGuid().ToString(); var context = BuildContext(dbName); var mapper = BuildMap(); var httpContext = new Mock <IHttpContextAccessor>(); var http = new DefaultHttpContext(); httpContext.Setup(_ => _.HttpContext).Returns(http); // Add Mockup data await Generate_ProductGroup_Data(context, mapper, httpContext.Object); // Prepare instance for testing var actContext = BuildContext(dbName); PaginationDto pagination = new PaginationDto { Page = 5, RecordsPerPage = 2 }; string filter = null; DataOrderDTO order = new DataOrderDTO(); // ===== Act ===== var service = new ProductGroupServices(actContext, mapper, httpContext.Object); var result = await service.GetAll(pagination, filter, order); // ===== Assert ===== // Result : Check on Page Doesn't exist // Expected Exception }
public async Task GetAll_HaveData_ReturnResultWithPagination() { // ===== Arrange ===== var dbName = Guid.NewGuid().ToString(); var context = BuildContext(dbName); var mapper = BuildMap(); var httpContext = new Mock <IHttpContextAccessor>(); var http = new DefaultHttpContext(); httpContext.Setup(_ => _.HttpContext).Returns(http); // Add Mockup data await Generate_ProductGroup_Data(context, mapper, httpContext.Object); // Prepare instance for testing var actContext = BuildContext(dbName); PaginationDto pagination = new PaginationDto { RecordsPerPage = 2 }; PaginationDto pagination2 = new PaginationDto { Page = 2, RecordsPerPage = 2 }; PaginationDto pagination3 = new PaginationDto { Page = 5, RecordsPerPage = 2 }; string filter = null; DataOrderDTO order = new DataOrderDTO(); // ===== Act ===== var service = new ProductGroupServices(actContext, mapper, httpContext.Object); var result1 = await service.GetAll(pagination, filter, order); var result2 = await service.GetAll(pagination2, filter, order); // ===== Assert ===== // Result 1 : Return data on 1st Page Assert.AreEqual(result1.IsSuccess, true); Assert.AreEqual(result1.Data[0].Id, 1); Assert.IsNotNull(result1.CurrentPage); Assert.IsNotNull(result1.PageIndex); // Result 2 : Return data on 2nd Page Assert.AreEqual(result2.IsSuccess, true); Assert.AreEqual(result2.Data[0].Id, 3); }
public async Task GetAll_NoData_ReturnErrorMessage() { // ===== Arrange ===== var dbName = Guid.NewGuid().ToString(); var context = BuildContext(dbName); var mapper = BuildMap(); var httpContext = new Mock <IHttpContextAccessor>(); var http = new DefaultHttpContext(); httpContext.Setup(_ => _.HttpContext).Returns(http); var pagination = new PaginationDto(); var filter = ""; var order = new DataOrderDTO(); var expectEx = false; // ===== Act ===== long startTicks = Stopwatch.GetTimestamp(); try { var service = new ProductGroupServices(context, mapper, httpContext.Object); var result = await service.GetAll(pagination, filter, order); } catch (InvalidOperationException) { expectEx = true; } catch (Exception) { throw; } long endTicks = Stopwatch.GetTimestamp(); double elapsedSeconds = (endTicks - startTicks) * 1.0 / Stopwatch.Frequency; Console.WriteLine($"Start time : {startTicks}"); Console.WriteLine($"End time : {endTicks}"); Console.WriteLine($"Time Used : {elapsedSeconds}"); // ==== Assert ===== // Expected Exception Assert.IsTrue(expectEx); }
public async Task GetAll_CanFilterByName_ReturnFilteredListOfProductGroup() { // ===== Arrange ===== var dbName = Guid.NewGuid().ToString(); var context = BuildContext(dbName); var mapper = BuildMap(); var httpContext = new Mock <IHttpContextAccessor>(); var http = new DefaultHttpContext(); httpContext.Setup(_ => _.HttpContext).Returns(http); // Add Mockup data await Generate_ProductGroup_Data(context, mapper, httpContext.Object); // Prepare Query var pagination = new PaginationDto(); string filter1 = "Test Product Group 3"; string filter2 = "G"; var order = new DataOrderDTO(); // New context var actContext = BuildContext(dbName); // ===== Act ===== var service = new ProductGroupServices(actContext, mapper, httpContext.Object); var result = await service.GetAll(pagination, filter1, order); var result2 = await service.GetAll(pagination, filter2, order); // ===== Assert ===== // Result 1 : Exact filter Assert.IsTrue(result.IsSuccess); Assert.AreEqual(result.Data[0].Name, filter1); Assert.AreEqual(result.Data.Count, 1); // Result 2 : Like cause filter Assert.IsTrue(result2.IsSuccess); Assert.IsTrue(result2.Data[0].Name.Contains(filter2)); Assert.IsTrue(result2.Data[result2.Data.Count - 1].Name.Contains(filter2)); Assert.AreEqual(result2.Data.Count, 5); }
public async Task GetAll_FilterIsNotContainInDatabase_ReturnError() { // ===== Arrange ===== var dbName = Guid.NewGuid().ToString(); var context = BuildContext(dbName); var mapper = BuildMap(); var httpContext = new Mock <IHttpContextAccessor>(); var http = new DefaultHttpContext(); httpContext.Setup(_ => _.HttpContext).Returns(http); // Add Mockup data await Generate_ProductGroup_Data(context, mapper, httpContext.Object); // Prepare Query var pagination = new PaginationDto(); string filter = Guid.NewGuid().ToString(); var order = new DataOrderDTO(); // New context var actContext = BuildContext(dbName); // ===== Act ===== var service = new ProductGroupServices(actContext, mapper, httpContext.Object); var result = await service.GetAll(pagination, filter, order); // ===== Assert ===== // Result : Filter that not contain in Data // Expected Exception }
public async Task <ServiceResponseWithPagination <List <ProductDTO> > > GetAll(PaginationDto pagination = null, ProductFilterDTO productFilter = null, DataOrderDTO ordering = null) { // Quering data var query = _dbContext.Product.AsQueryable(); // Filtering data query = Filter(query, productFilter); // Ordering if (!(ordering is null)) { var columns = new List <string> { "Id", "GroupId", "Name", "Price", "CreatedBy", "Status" }; if (columns.Exists(x => x == ordering.OrderBy)) { if (ordering.OrderBy == "CreatedBy") { ordering.OrderBy = "CreatedByUser.Username"; } var property = $"{ordering.OrderBy}"; if (!String.IsNullOrEmpty(ordering.Sort) && ordering.Sort.ToLower() == "desc") { query = ApplyOrder(query, property, "OrderByDescending"); } else { query = ApplyOrder(query, property, "OrderBy"); } } } // Pagination var paginationResult = await _httpContext.HttpContext.InsertPaginationParametersInResponse(query, pagination.RecordsPerPage, pagination.Page); // Generate result var result = await query.Paginate(pagination).Include(entity => entity.CreatedByUser.Products).Include(entity => entity.Group).ToListAsync(); // Return error if count is 0 if (result.Count == 0) { return(ResponseResultWithPagination.Failure <List <ProductDTO> >("Product is not Exist", ResponseType.NoContent)); } // Mapping var dto = _mapper.Map <List <ProductDTO> >(result); // Return Results return(ResponseResultWithPagination.Success <List <ProductDTO> >(dto, paginationResult)); }
public async Task <IActionResult> GetAll([FromQuery] PaginationDto pagination, [FromQuery] OrderFilterDTO filter, [FromQuery] DataOrderDTO order) { try { var result = await _service.GetAll(pagination, filter, order); return(Ok(result)); } catch (Exception ex) { return(Ok(ResponseResultWithPagination.Failure <OrderDTO>(ex.Message))); } }
public async Task <ServiceResponseWithPagination <List <OrderDTO> > > GetAll_Test(PaginationDto pagination = null, OrderFilterDTO OrderFilter = null, DataOrderDTO ordering = null) { var stockService = new StockServices(_context, _mapper, _http.Object); var service = new OrderServices(_context, _mapper, _http.Object, stockService); var result = await service.GetAll(pagination, OrderFilter, ordering); return(result); }
public async Task <IActionResult> GetAll([FromQuery] PaginationDto pagination, [FromQuery] string filter = null, [FromQuery] DataOrderDTO ordering = null) { try { var paginationResult = await _ProductGroupService.GetAll(pagination, filter, ordering); return(Ok(paginationResult)); } catch (Exception ex) { return(Ok(ResponseResultWithPagination.Failure <List <ProductGroupDTO> >(ex.Message))); } }
public async Task <ServiceResponseWithPagination <List <ProductGroupDTO> > > GetAll(PaginationDto pagination = null, string productGroupfilter = null, DataOrderDTO ordering = null) { // Quering data var query = _dbContext.ProductGroup.AsQueryable(); // Filtering data if (!(String.IsNullOrEmpty(productGroupfilter))) { query = query.Where(x => x.Name.Contains(productGroupfilter)); } // Ordering if (!(ordering is null)) { var columns = new List <string> { "Id", "Name", "CreatedBy", "CreatedDate", "Status" }; if (columns.Exists(x => x == ordering.OrderBy)) { if (ordering.OrderBy == "CreatedBy") { ordering.OrderBy = "CreatedByUser.Username"; } var property = $"{ordering.OrderBy}"; if (!String.IsNullOrEmpty(ordering.Sort) && ordering.Sort.ToLower() == "desc") { query = ApplyOrder(query, property, "OrderByDescending"); } else { query = ApplyOrder(query, property, "OrderBy"); } } } // Pagination var paginationResult = await _httpContext.HttpContext.InsertPaginationParametersInResponse(query, pagination.RecordsPerPage, pagination.Page); // Generate result var result = await query.Paginate(pagination).Include(_ => _.CreatedByUser).ToListAsync(); //await query.Paginate(pagination).Include(_=>_.CreatedByUser).DefaultIfEmpty().ToListAsync(); // Return error if count is 0 if (result.Count == 0) { throw new InvalidOperationException("Product Group is not Exist"); } // Mapping var dto = _mapper.Map <List <ProductGroupDTO> >(result); // Return Results return(ResponseResultWithPagination.Success <List <ProductGroupDTO> >(dto, paginationResult)); }
public async Task <IActionResult> GetAll([FromQuery] PaginationDto pagination = null, [FromQuery] ProductFilterDTO filter = null, [FromQuery] DataOrderDTO ordering = null) { var paginationResult = await _Service.GetAll(pagination, filter, ordering); return(Ok(paginationResult)); }