diff --git a/pom.xml b/pom.xml index 9bd5d015e..ca53721ee 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ UTF-8 UTF-8 - 11 + 8 ${java.version} ${java.version} 5.3.1 @@ -65,6 +65,20 @@ ${junit-platform.version} test + + + org.assertj + assertj-core + 3.11.1 + test + + + + org.hamcrest + hamcrest-library + 1.3 + test + @@ -78,21 +92,21 @@ org.apache.maven.plugins maven-surefire-plugin 2.22.0 - - - --illegal-access=permit - - + + + + + org.apache.maven.plugins maven-failsafe-plugin 2.22.0 - - - --illegal-access=permit - - + + + + + diff --git a/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java b/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java index 731a21196..766601a2f 100644 --- a/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java +++ b/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java @@ -3,11 +3,10 @@ public class IndexController { public String index(){ - return "index"; } - public String oupsHandler(){ - return "notimplemented"; + public String oopsHandler() { + throw new ValueNotFoundException(); } } diff --git a/src/main/java/guru/springframework/sfgpetclinic/controllers/ModelImpl.java b/src/main/java/guru/springframework/sfgpetclinic/controllers/ModelImpl.java new file mode 100644 index 000000000..52ef340a6 --- /dev/null +++ b/src/main/java/guru/springframework/sfgpetclinic/controllers/ModelImpl.java @@ -0,0 +1,28 @@ +package guru.springframework.sfgpetclinic.controllers; + +import guru.springframework.sfgpetclinic.fauxspring.Model; + +import java.util.HashMap; + +public class ModelImpl implements Model { + + private HashMap map; + + ModelImpl() { + map = new HashMap<>(); + } + + @Override + public void addAttribute(String key, Object o) { + map.put(key,o); + } + + @Override + public void addAttribute(Object o) { + map.put(o.toString(), o); + } + + public HashMap getMap() { + return map; + } +} diff --git a/src/main/java/guru/springframework/sfgpetclinic/controllers/ValueNotFoundException.java b/src/main/java/guru/springframework/sfgpetclinic/controllers/ValueNotFoundException.java new file mode 100644 index 000000000..0f8ad1ade --- /dev/null +++ b/src/main/java/guru/springframework/sfgpetclinic/controllers/ValueNotFoundException.java @@ -0,0 +1,7 @@ +package guru.springframework.sfgpetclinic.controllers; + +/** + * Created by jt on 2018-10-22. + */ +public class ValueNotFoundException extends RuntimeException { +} diff --git a/src/main/java/guru/springframework/sfgpetclinic/services/map/VetMapService.java b/src/main/java/guru/springframework/sfgpetclinic/services/map/VetMapService.java index c94fe4538..d04f65c97 100644 --- a/src/main/java/guru/springframework/sfgpetclinic/services/map/VetMapService.java +++ b/src/main/java/guru/springframework/sfgpetclinic/services/map/VetMapService.java @@ -28,7 +28,7 @@ public Vet findById(Long id) { @Override public Vet save(Vet object) { - if (object.getSpecialities().size() > 0){ + if (object.getSpecialities() != null && object.getSpecialities().size() > 0){ object.getSpecialities().forEach(speciality -> { if(speciality.getId() == null){ Speciality savedSpecialty = specialtyService.save(speciality); diff --git a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java new file mode 100644 index 000000000..6bd803db6 --- /dev/null +++ b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java @@ -0,0 +1,107 @@ +package guru.springframework.sfgpetclinic.controllers; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.*; + +import java.time.Duration; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assumptions.assumeTrue; + +class IndexControllerTest { + + IndexController controller; + + @BeforeEach + void setUp() { + controller = new IndexController(); + } + + @DisplayName("Test Proper View name is returned for index page") + @Test + void index() { + assertEquals("index", controller.index()); + assertEquals("index", controller.index(), "Wrong View Returned"); + + assertEquals("index", controller.index(), () -> "Another Expensive Message " + + "Make me only if you have to"); + + assertThat(controller.index()).isEqualTo("index"); + } + + @Test + @DisplayName("Test exception") + void oupsHandler() { + assertThrows(ValueNotFoundException.class, () -> { + controller.oopsHandler(); + }); + } + + @Disabled("Demo of timeout") + @Test + void testTimeOut() { + + assertTimeout(Duration.ofMillis(100), () -> { + Thread.sleep(5000); + + System.out.println("I got here"); + }); + } + + @Disabled("Demo of timeout") + @Test + void testTimeOutPrempt() { + + assertTimeoutPreemptively(Duration.ofMillis(100), () -> { + Thread.sleep(5000); + + System.out.println("I got here 2342342342342"); + }); + } + + @Test + void testAssumptionTrue() { + + assumeTrue("GURU".equalsIgnoreCase(System.getenv("GURU_RUNTIME"))); + } + + @Test + void testAssumptionTrueAssumptionIsTrue() { + + assumeTrue("GURU".equalsIgnoreCase("GURU")); + } + + @EnabledOnOs(OS.MAC) + @Test + void testMeOnMacOS() { + } + + @EnabledOnOs(OS.WINDOWS) + @Test + void testMeOnWindows() { + } + + @EnabledOnJre(JRE.JAVA_8) + @Test + void testMeOnJava8() { + } + + @EnabledOnJre(JRE.JAVA_11) + @Test + void testMeOnJava11() { + } + + @EnabledIfEnvironmentVariable(named = "USER", matches = "jt") + @Test + void testIfUserJT() { + } + + @EnabledIfEnvironmentVariable(named = "USER", matches = "fred") + @Test + void testIfUserFred() { + } +} \ No newline at end of file diff --git a/src/test/java/guru/springframework/sfgpetclinic/controllers/VetControllerTest.java b/src/test/java/guru/springframework/sfgpetclinic/controllers/VetControllerTest.java new file mode 100644 index 000000000..e3cc7e91c --- /dev/null +++ b/src/test/java/guru/springframework/sfgpetclinic/controllers/VetControllerTest.java @@ -0,0 +1,49 @@ +package guru.springframework.sfgpetclinic.controllers; + +import static org.junit.jupiter.api.Assertions.*; + +import guru.springframework.sfgpetclinic.fauxspring.Model; +import guru.springframework.sfgpetclinic.model.Vet; +import guru.springframework.sfgpetclinic.services.SpecialtyService; +import guru.springframework.sfgpetclinic.services.VetService; +import guru.springframework.sfgpetclinic.services.map.SpecialityMapService; +import guru.springframework.sfgpetclinic.services.map.VetMapService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.*; + +class VetControllerTest { + + VetController controller; + Model model; + VetService service; + SpecialtyService specialtyService; + + @BeforeEach + void setUp() { + specialtyService = new SpecialityMapService(); + service = new VetMapService(specialtyService); + controller = new VetController(service); + model = new ModelImpl(); + + Vet vet1 = new Vet(10l, "Mac", "Kem", null); + Vet vet2 = new Vet(11l, "Radzio", "Bluszcz", null); + + service.save(vet1); + service.save(vet2); + } + + @Test + void listVets() { + String str = controller.listVets(model); + + assertEquals("vets/index", str); + + Set vets = (Set)((ModelImpl)model).getMap().get("vets"); + + assertEquals(vets.size(),2); + } +} \ No newline at end of file diff --git a/src/test/java/guru/springframework/sfgpetclinic/model/OwnerTest.java b/src/test/java/guru/springframework/sfgpetclinic/model/OwnerTest.java new file mode 100644 index 000000000..94ebcb19f --- /dev/null +++ b/src/test/java/guru/springframework/sfgpetclinic/model/OwnerTest.java @@ -0,0 +1,29 @@ +package guru.springframework.sfgpetclinic.model; + +import org.junit.jupiter.api.Test; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.junit.jupiter.api.Assertions.*; + +class OwnerTest { + + @Test + void dependentAssertions() { + + Owner owner = new Owner(1l, "Joe", "Buck"); + owner.setCity("Key West"); + owner.setTelephone("1231231234"); + + assertAll("Properties Test", + () -> assertAll("Person Properties", + () -> assertEquals("Joe", owner.getFirstName(), "First Name Did not Match"), + () -> assertEquals("Buck", owner.getLastName())), + () -> assertAll("Owner Properties", + () -> assertEquals("Key West", owner.getCity(), "City Did Not Match"), + () -> assertEquals("1231231234", owner.getTelephone()) + )); + + assertThat(owner.getCity(), is("Key West")); + } +} \ No newline at end of file diff --git a/src/test/java/guru/springframework/sfgpetclinic/model/PersonTest.java b/src/test/java/guru/springframework/sfgpetclinic/model/PersonTest.java new file mode 100644 index 000000000..0ff00034c --- /dev/null +++ b/src/test/java/guru/springframework/sfgpetclinic/model/PersonTest.java @@ -0,0 +1,30 @@ +package guru.springframework.sfgpetclinic.model; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class PersonTest { + + @Test + void groupedAssertions() { + //given + Person person = new Person(1l, "Joe", "Buck"); + + //then + assertAll("Test Props Set", + () -> assertEquals(person.getFirstName(), "Joe"), + () -> assertEquals(person.getLastName(), "Buck")); + } + + @Test + void groupedAssertionMsgs() { + //given + Person person = new Person(1l, "Joe", "Buck"); + + //then + assertAll("Test Props Set", + () -> assertEquals(person.getFirstName(), "Joe", "First Name Failed"), + () -> assertEquals(person.getLastName(), "Buck", "Last Name Failed")); + } +} \ No newline at end of file diff --git a/src/test/java/guru/springframework/sfgpetclinic/services/springdatajpa/OwnerSDJpaServiceTest.java b/src/test/java/guru/springframework/sfgpetclinic/services/springdatajpa/OwnerSDJpaServiceTest.java new file mode 100644 index 000000000..63294f630 --- /dev/null +++ b/src/test/java/guru/springframework/sfgpetclinic/services/springdatajpa/OwnerSDJpaServiceTest.java @@ -0,0 +1,50 @@ +package guru.springframework.sfgpetclinic.services.springdatajpa; + +import guru.springframework.sfgpetclinic.model.Owner; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +@Disabled(value = "Disabled until we learn Mocking") +class OwnerSDJpaServiceTest { + + OwnerSDJpaService service; + + @BeforeEach + void setUp() { + service = new OwnerSDJpaService(null, null, null); + + } + + @Disabled + @Test + void findByLastName() { + Owner foundOwner = service.findByLastName("Buck"); + } + + @Test + void findAllByLastNameLike() { + } + + @Test + void findAll() { + } + + @Test + void findById() { + } + + @Test + void save() { + } + + @Test + void delete() { + } + + @Test + void deleteById() { + } +} \ No newline at end of file