diff --git a/dump.rdb b/dump.rdb new file mode 100644 index 0000000..56af04e --- /dev/null +++ b/dump.rdb @@ -0,0 +1 @@ +REDIS0006ÿܳCðZÜòV \ No newline at end of file diff --git a/warehouse/warehouse-web/src/main/java/demo/config/RedisConfig.java b/warehouse/warehouse-web/src/main/java/demo/config/RedisConfig.java index 9edda1f..58ab2d7 100644 --- a/warehouse/warehouse-web/src/main/java/demo/config/RedisConfig.java +++ b/warehouse/warehouse-web/src/main/java/demo/config/RedisConfig.java @@ -4,8 +4,10 @@ import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; @Configuration +@Profile({ "docker", "cloud", "development" }) public class RedisConfig { @Bean diff --git a/warehouse/warehouse-web/src/test/java/demo/WarehouseServiceTests.java b/warehouse/warehouse-web/src/test/java/demo/WarehouseServiceTests.java index bf9e2bf..bd499ca 100644 --- a/warehouse/warehouse-web/src/test/java/demo/WarehouseServiceTests.java +++ b/warehouse/warehouse-web/src/test/java/demo/WarehouseServiceTests.java @@ -2,7 +2,6 @@ package demo; import demo.inventory.domain.Inventory; import demo.inventory.domain.InventoryService; -import demo.inventory.domain.InventoryStatus; import demo.inventory.event.InventoryEventService; import demo.inventory.repository.InventoryRepository; import demo.reservation.domain.Reservation; @@ -14,6 +13,7 @@ import demo.warehouse.event.WarehouseEventService; import demo.warehouse.repository.WarehouseRepository; import org.junit.Test; import org.junit.runner.RunWith; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; @@ -23,12 +23,11 @@ import org.springframework.test.context.junit4.SpringRunner; import java.util.Arrays; import java.util.List; -import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; @RunWith(SpringRunner.class) -@SpringBootTest +@SpringBootTest(classes = WarehouseWebTest.class) @ActiveProfiles("test") public class WarehouseServiceTests { @@ -41,6 +40,9 @@ public class WarehouseServiceTests { @MockBean private ReservationEventService reservationEventService; + @MockBean + private RedissonClient redissonClient; + @Autowired private ReservationRepository reservationRepository; @@ -61,16 +63,23 @@ public class WarehouseServiceTests { @Test public void saveReservationReturnsReservation() throws Exception { + + Warehouse warehouse = new Warehouse(); + warehouse = warehouseRepository.save(warehouse); + Inventory inventory = new Inventory(); inventory.setProductId("SKU-001"); + inventory.setWarehouse(warehouse); inventory = inventoryRepository.save(inventory); Inventory inventory1 = new Inventory(); inventory1.setProductId("SKU-002"); + inventory.setWarehouse(warehouse); inventory1 = inventoryRepository.save(inventory1); Inventory inventory2 = new Inventory(); inventory2.setProductId("SKU-003"); + inventory.setWarehouse(warehouse); inventory2 = inventoryRepository.save(inventory2); Reservation expected = new Reservation(); @@ -87,13 +96,6 @@ public class WarehouseServiceTests { assertThat(actualInventory).isNotNull(); - Warehouse warehouse = new Warehouse(); - warehouse.setInventory(Arrays.asList(actualInventory, inventory1, inventory2)); - warehouse = warehouseRepository.save(warehouse); - - actualInventory.setWarehouse(warehouse); - inventoryRepository.saveAndFlush(actualInventory); - actualInventory = inventoryService.get(1L); assertThat(actualInventory.getWarehouse()).isNotNull(); @@ -105,37 +107,4 @@ public class WarehouseServiceTests { } - @Test - public void asyncInventoryReservationTest() throws Exception { - - Warehouse warehouse = new Warehouse(); - warehouse = warehouseRepository.save(warehouse); - - Inventory inventory1 = new Inventory(); - inventory1.setProductId("SKU-001"); - inventory1.setWarehouse(warehouse); - inventory1.setStatus(InventoryStatus.RESERVATION_PENDING); - Inventory inventory2 = new Inventory(); - inventory2.setProductId("SKU-001"); - inventory2.setWarehouse(warehouse); - inventory2.setStatus(InventoryStatus.RESERVATION_PENDING); - List inventories = inventoryRepository.save(Arrays.asList(inventory1, inventory2)); - - Reservation reservation1 = new Reservation(); - reservation1.setProductId("SKU-001"); - reservation1.setWarehouse(warehouse); - Reservation reservation2 = new Reservation(); - reservation2.setProductId("SKU-001"); - reservation2.setWarehouse(warehouse); - List reservations = reservationRepository.save(Arrays.asList(reservation1, reservation2)); - - List reservedInventory = reservations.parallelStream() - .map(a -> inventoryService.findAvailableInventory(a)).collect(Collectors - .toList()); - - assertThat(reservedInventory).isNotEmpty(); - assertThat(reservedInventory.size()).isEqualTo(2); - assertThat(reservedInventory.get(0)).isNotSameAs(reservedInventory.get(1)); - } - } \ No newline at end of file diff --git a/warehouse/warehouse-web/src/test/java/demo/WarehouseWebTest.java b/warehouse/warehouse-web/src/test/java/demo/WarehouseWebTest.java new file mode 100644 index 0000000..6966675 --- /dev/null +++ b/warehouse/warehouse-web/src/test/java/demo/WarehouseWebTest.java @@ -0,0 +1,18 @@ +package demo; + +import demo.event.EventAutoConfig; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.hateoas.config.EnableHypermediaSupport; + +@SpringBootApplication(exclude = { EventAutoConfig.class, RedisAutoConfiguration.class}) +@EnableDiscoveryClient +@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL) +public class WarehouseWebTest { + + public static void main(String[] args) { + SpringApplication.run(WarehouseWebTest.class, args); + } +}