Search in sources :

Example 11 with WarehouseInfoDTO

use of com.ncedu.fooddelivery.api.v1.dto.warehouseDTOs.WarehouseInfoDTO in project 2021-msk-food-delivery by netcracker-edu.

the class ProductServiceTest method getProductsSuccess.

// TODO: rewrite tests!!!
@Test
public void getProductsSuccess() {
    Pageable pageable = PageRequest.of(0, 2);
    Page<Product> productsPage = ProductUtils.createPageWithMilkProducts(pageable);
    Long warehouseId = 4L;
    Point geo = makeGeo();
    WarehouseInfoDTO warehouseInfoDTO = new WarehouseInfoDTO(warehouseId, null, null, null, null, false);
    when(warehouseServiceMock.getNearestWarehouse(geo)).thenReturn(warehouseInfoDTO);
    when(productRepoMock.findAll(warehouseId, pageable)).thenReturn(productsPage);
    CoordsDTO coordsDTO = makeCoordsDTO();
    List<ProductDTO> resultList = productService.getProducts(coordsDTO, pageable);
    List<ProductDTO> perfectList = ProductUtils.createProductDTOListFromPage(productsPage);
    verify(warehouseServiceMock, times(1)).getNearestWarehouse(geo);
    verify(productRepoMock, times(1)).findAll(warehouseId, pageable);
    assertEquals(perfectList, resultList);
}
Also used : Pageable(org.springframework.data.domain.Pageable) Product(com.ncedu.fooddelivery.api.v1.entities.Product) Point(com.vividsolutions.jts.geom.Point) SearchProductDTO(com.ncedu.fooddelivery.api.v1.dto.product.SearchProductDTO) ProductDTO(com.ncedu.fooddelivery.api.v1.dto.product.ProductDTO) WarehouseInfoDTO(com.ncedu.fooddelivery.api.v1.dto.warehouseDTOs.WarehouseInfoDTO) CoordsDTO(com.ncedu.fooddelivery.api.v1.dto.CoordsDTO) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 12 with WarehouseInfoDTO

use of com.ncedu.fooddelivery.api.v1.dto.warehouseDTOs.WarehouseInfoDTO in project 2021-msk-food-delivery by netcracker-edu.

the class WarehouseController method getNearestWarehouse.

@PreAuthorize("isAuthenticated()")
@GetMapping(path = "/api/v1/warehouse/nearest")
public ResponseEntity<WarehouseInfoDTO> getNearestWarehouse(@RequestParam(required = true) @DecimalMin(value = "-90.0", inclusive = true) @DecimalMax(value = "90.0", inclusive = true) BigDecimal lat, @RequestParam(required = true) @DecimalMin(value = "-180.0", inclusive = false) @DecimalMax(value = "180.0", inclusive = false) BigDecimal lon) {
    Point geo = geometryFactory.createPoint(new Coordinate(lon.doubleValue(), lat.doubleValue()));
    WarehouseInfoDTO nearestWarehouse = warehouseService.getNearestWarehouse(geo);
    return new ResponseEntity<>(nearestWarehouse, HttpStatus.OK);
}
Also used : ResponseEntity(org.springframework.http.ResponseEntity) Coordinate(com.vividsolutions.jts.geom.Coordinate) Point(com.vividsolutions.jts.geom.Point) WarehouseInfoDTO(com.ncedu.fooddelivery.api.v1.dto.warehouseDTOs.WarehouseInfoDTO) GetMapping(org.springframework.web.bind.annotation.GetMapping) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize)

Aggregations

WarehouseInfoDTO (com.ncedu.fooddelivery.api.v1.dto.warehouseDTOs.WarehouseInfoDTO)12 Test (org.junit.jupiter.api.Test)8 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)8 Point (com.vividsolutions.jts.geom.Point)7 ProductDTO (com.ncedu.fooddelivery.api.v1.dto.product.ProductDTO)5 SearchProductDTO (com.ncedu.fooddelivery.api.v1.dto.product.SearchProductDTO)5 Product (com.ncedu.fooddelivery.api.v1.entities.Product)5 OrderProductPosition (com.ncedu.fooddelivery.api.v1.entities.orderProductPosition.OrderProductPosition)5 ProductPosition (com.ncedu.fooddelivery.api.v1.entities.productPosition.ProductPosition)5 Pageable (org.springframework.data.domain.Pageable)5 CoordsDTO (com.ncedu.fooddelivery.api.v1.dto.CoordsDTO)3 BigDecimal (java.math.BigDecimal)3 NotFoundEx (com.ncedu.fooddelivery.api.v1.errors.notfound.NotFoundEx)2 ProductAvailabilityEx (com.ncedu.fooddelivery.api.v1.errors.orderRegistration.ProductAvailabilityEx)2 WarehouseCoordsBindingEx (com.ncedu.fooddelivery.api.v1.errors.orderRegistration.WarehouseCoordsBindingEx)2 CreateOrderDTO (com.ncedu.fooddelivery.api.v1.dto.order.CreateOrderDTO)1 Order (com.ncedu.fooddelivery.api.v1.entities.order.Order)1 Coordinate (com.vividsolutions.jts.geom.Coordinate)1 ArrayList (java.util.ArrayList)1 Executable (org.junit.jupiter.api.function.Executable)1