diff --git a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/booking/BookingConfiguration.java b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/booking/BookingConfiguration.java index 652368e..b6b0de0 100644 --- a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/booking/BookingConfiguration.java +++ b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/booking/BookingConfiguration.java @@ -6,18 +6,13 @@ import io.reflectoring.customer.CustomerConfiguration; import io.reflectoring.customer.data.CustomerRepository; import io.reflectoring.flight.FlightConfiguration; import io.reflectoring.flight.data.FlightService; -import org.springframework.boot.SpringBootConfiguration; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -@SpringBootConfiguration +@Configuration @Import({CustomerConfiguration.class, FlightConfiguration.class}) -@EnableAutoConfiguration @ComponentScan public class BookingConfiguration { diff --git a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/customer/CustomerConfiguration.java b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/customer/CustomerConfiguration.java index b040837..a0dc056 100644 --- a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/customer/CustomerConfiguration.java +++ b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/customer/CustomerConfiguration.java @@ -1,14 +1,17 @@ package io.reflectoring.customer; -import org.springframework.boot.SpringBootConfiguration; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import io.reflectoring.customer.business.CustomerService; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -@SpringBootConfiguration -@EnableAutoConfiguration +@Configuration @ComponentScan public class CustomerConfiguration { + @Bean + public CustomerService customerService(){ + return new CustomerService(); + } + } diff --git a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/customer/business/CustomerService.java b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/customer/business/CustomerService.java new file mode 100644 index 0000000..f70e0ae --- /dev/null +++ b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/customer/business/CustomerService.java @@ -0,0 +1,4 @@ +package io.reflectoring.customer.business; + +public class CustomerService { +} diff --git a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/customer/web/CustomerController.java b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/customer/web/CustomerController.java new file mode 100644 index 0000000..911e006 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/customer/web/CustomerController.java @@ -0,0 +1,14 @@ +package io.reflectoring.customer.web; + +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class CustomerController { + + @PostMapping("/customer") + public String hello() { + return "hello"; + } + +} diff --git a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/flight/FlightConfiguration.java b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/flight/FlightConfiguration.java index 0bd7d1e..4e8e445 100644 --- a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/flight/FlightConfiguration.java +++ b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/flight/FlightConfiguration.java @@ -6,11 +6,9 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.scheduling.annotation.EnableScheduling; -@SpringBootConfiguration -@EnableAutoConfiguration +@Configuration @EnableScheduling @ComponentScan public class FlightConfiguration { diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingTestConfiguration.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingTestConfiguration.java new file mode 100644 index 0000000..e7b575b --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingTestConfiguration.java @@ -0,0 +1,10 @@ +package io.reflectoring.booking; + +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; + +@SpringBootConfiguration +@EnableAutoConfiguration +class BookingTestConfiguration extends BookingConfiguration { + +} diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingConfigurationTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingTestConfigurationTest.java similarity index 76% rename from spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingConfigurationTest.java rename to spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingTestConfigurationTest.java index 4938e9d..1205854 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingConfigurationTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingTestConfigurationTest.java @@ -4,14 +4,12 @@ import java.util.Arrays; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; -import org.springframework.test.context.junit.jupiter.SpringExtension; -@SpringBootTest(classes = BookingConfiguration.class) -class BookingConfigurationTest { +@SpringBootTest(classes = BookingTestConfiguration.class) +class BookingTestConfigurationTest { @Autowired private ApplicationContext applicationContext; diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerConfigurationTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerConfigurationTest.java deleted file mode 100644 index c1a14a8..0000000 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerConfigurationTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.reflectoring.customer; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -@SpringBootTest(classes = CustomerConfiguration.class) -class CustomerConfigurationTest { - - @Test - void bookingConfigurationLoads() { - } - -} \ No newline at end of file diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerModuleTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerModuleTest.java new file mode 100644 index 0000000..41324c9 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerModuleTest.java @@ -0,0 +1,42 @@ +package io.reflectoring.customer; + +import io.reflectoring.booking.business.BookingService; +import io.reflectoring.booking.data.BookingRepository; +import io.reflectoring.booking.web.BookingController; +import io.reflectoring.customer.business.CustomerService; +import io.reflectoring.customer.data.CustomerRepository; +import io.reflectoring.customer.web.CustomerController; +import io.reflectoring.flight.data.FlightService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +class CustomerModuleTest { + + @Autowired(required = false) + private BookingController bookingController; + @Autowired(required = false) + private BookingService bookingService; + @Autowired(required = false) + private BookingRepository bookingRepository; + + @Autowired + private CustomerController customerController; + @Autowired + private CustomerService customerService; + @Autowired + private CustomerRepository customerRepository; + + @Test + void onlyCustomerModuleIsLoaded() { + assertThat(customerController).isNotNull(); + assertThat(customerService).isNotNull(); + assertThat(customerRepository).isNotNull(); + assertThat(bookingController).isNull(); + assertThat(bookingService).isNull(); + assertThat(bookingRepository).isNull(); + } + +} \ No newline at end of file diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerTestConfiguration.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerTestConfiguration.java new file mode 100644 index 0000000..ade3205 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerTestConfiguration.java @@ -0,0 +1,13 @@ +package io.reflectoring.customer; + +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@SpringBootConfiguration +@EnableAutoConfiguration +class CustomerTestConfiguration extends CustomerConfiguration { + +} diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/data/CustomerModuleDataLayerTests.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/data/CustomerModuleDataLayerTests.java new file mode 100644 index 0000000..2024157 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/data/CustomerModuleDataLayerTests.java @@ -0,0 +1,24 @@ +package io.reflectoring.customer.data; + +import io.reflectoring.booking.data.BookingRepository; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import static org.assertj.core.api.Assertions.*; + +@DataJpaTest +class CustomerModuleDataLayerTests { + + @Autowired + private CustomerRepository customerRepository; + + @Autowired(required = false) + private BookingRepository bookingRepository; + + @Test + void onlyCustomerRepositoryIsLoaded() { + assertThat(customerRepository).isNotNull(); + assertThat(bookingRepository).isNull(); + } + +} \ No newline at end of file diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/data/CustomerRepositoryTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/data/CustomerRepositoryTest.java deleted file mode 100644 index 15ef7bc..0000000 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/data/CustomerRepositoryTest.java +++ /dev/null @@ -1,43 +0,0 @@ -package io.reflectoring.customer.data; - -import java.util.Arrays; -import java.util.List; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.context.ApplicationContext; -import org.springframework.test.context.junit.jupiter.SpringExtension; -import static org.assertj.core.api.Assertions.assertThat; - -@DataJpaTest -class CustomerRepositoryTest { - - @Autowired - private CustomerRepository repository; - - @Autowired - private ApplicationContext applicationContext; - - @BeforeEach - void printApplicationContext() { - Arrays.stream(applicationContext.getBeanDefinitionNames()) - .map(name -> applicationContext.getBean(name).getClass().getName()) - .sorted() - .forEach(System.out::println); - } - - @Test - void findsByName() { - Customer customer = Customer.builder() - .name("Hurley") - .build(); - repository.save(customer); - - List foundCustomers = repository.findByName("Hurley"); - assertThat(foundCustomers).hasSize(1); - } - -} \ No newline at end of file diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/web/CustomerModuleWebLayerTests.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/web/CustomerModuleWebLayerTests.java new file mode 100644 index 0000000..a0d8713 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/web/CustomerModuleWebLayerTests.java @@ -0,0 +1,24 @@ +package io.reflectoring.customer.web; + +import io.reflectoring.booking.web.BookingController; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import static org.assertj.core.api.Assertions.*; + +@WebMvcTest +class CustomerModuleWebLayerTests { + + @Autowired + private CustomerController customerController; + + @Autowired(required = false) + private BookingController bookingController; + + @Test + void onlyCustomerControllerIsLoaded() { + assertThat(customerController).isNotNull(); + assertThat(bookingController).isNull(); + } + +} \ No newline at end of file diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/flight/FlightMockConfiguration.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/flight/FlightMockConfiguration.java deleted file mode 100644 index de4186d..0000000 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/flight/FlightMockConfiguration.java +++ /dev/null @@ -1,4 +0,0 @@ -package io.reflectoring.flight; - -public class FlightMockConfiguration { -} diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/flight/FlightTestConfiguration.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/flight/FlightTestConfiguration.java new file mode 100644 index 0000000..5f2bff8 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/flight/FlightTestConfiguration.java @@ -0,0 +1,10 @@ +package io.reflectoring.flight; + +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; + +@SpringBootConfiguration +@EnableAutoConfiguration +class FlightTestConfiguration extends FlightConfiguration { + +}