From d115f2571bde4e6dec290144151a136c18c2a81b Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 11 Oct 2018 18:28:05 -0400 Subject: [PATCH 01/12] adding assertions demo --- .../controllers/IndexController.java | 1 - .../controllers/IndexControllerTest.java | 32 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java diff --git a/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java b/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java index 731a21196..154faf311 100644 --- a/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java +++ b/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java @@ -3,7 +3,6 @@ public class IndexController { public String index(){ - return "index"; } 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..759f3e3c7 --- /dev/null +++ b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java @@ -0,0 +1,32 @@ +package guru.springframework.sfgpetclinic.controllers; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class IndexControllerTest { + + IndexController controller; + + @BeforeEach + void setUp() { + controller = new IndexController(); + } + + @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"); + } + + @Test + void oupsHandler() { + assertTrue("notimplemented".equals(controller.oupsHandler()), () -> "This is some expensive " + + "Message to build" + + "for my test"); + } +} \ No newline at end of file From 7b3a36b44997141c56715dee7fa9d197b050fef2 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 11 Oct 2018 19:38:31 -0400 Subject: [PATCH 02/12] adding grouped assertions --- .../sfgpetclinic/model/PersonTest.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/test/java/guru/springframework/sfgpetclinic/model/PersonTest.java 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 From d0e40f8a6c215288f93b75e193b15b6740cb16b5 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 11 Oct 2018 20:14:52 -0400 Subject: [PATCH 03/12] adding dependent assertions --- .../sfgpetclinic/model/OwnerTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/test/java/guru/springframework/sfgpetclinic/model/OwnerTest.java 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..f7cffb2d7 --- /dev/null +++ b/src/test/java/guru/springframework/sfgpetclinic/model/OwnerTest.java @@ -0,0 +1,25 @@ +package guru.springframework.sfgpetclinic.model; + +import org.junit.jupiter.api.Test; + +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()) + )); + } +} \ No newline at end of file From e9d9e3de5c3c5f50165231edd7aa1a0f878b39b5 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 11 Oct 2018 20:24:53 -0400 Subject: [PATCH 04/12] skipping tests --- .../springdatajpa/OwnerSDJpaServiceTest.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/test/java/guru/springframework/sfgpetclinic/services/springdatajpa/OwnerSDJpaServiceTest.java 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 From 6c95403f392ae555611d4b62fd6e4a226c7cc3d0 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Mon, 22 Oct 2018 19:42:41 -0400 Subject: [PATCH 05/12] display name example --- .../sfgpetclinic/controllers/IndexControllerTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java index 759f3e3c7..71d14b0c6 100644 --- a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java +++ b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java @@ -1,6 +1,7 @@ package guru.springframework.sfgpetclinic.controllers; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -14,6 +15,7 @@ void setUp() { controller = new IndexController(); } + @DisplayName("Test Proper View name is returned for index page") @Test void index() { assertEquals("index", controller.index()); @@ -24,6 +26,7 @@ void index() { } @Test + @DisplayName("Test exception") void oupsHandler() { assertTrue("notimplemented".equals(controller.oupsHandler()), () -> "This is some expensive " + "Message to build" + From ec469febb9dc7141d9e9f770a51a7b5ed4ad696a Mon Sep 17 00:00:00 2001 From: John Thompson Date: Mon, 22 Oct 2018 20:02:19 -0400 Subject: [PATCH 06/12] expected exception --- .../sfgpetclinic/controllers/IndexController.java | 4 ++-- .../sfgpetclinic/controllers/ValueNotFoundException.java | 7 +++++++ .../sfgpetclinic/controllers/IndexControllerTest.java | 6 +++--- 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 src/main/java/guru/springframework/sfgpetclinic/controllers/ValueNotFoundException.java diff --git a/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java b/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java index 154faf311..766601a2f 100644 --- a/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java +++ b/src/main/java/guru/springframework/sfgpetclinic/controllers/IndexController.java @@ -6,7 +6,7 @@ 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/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/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java index 71d14b0c6..bfb9fb2e2 100644 --- a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java +++ b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java @@ -28,8 +28,8 @@ void index() { @Test @DisplayName("Test exception") void oupsHandler() { - assertTrue("notimplemented".equals(controller.oupsHandler()), () -> "This is some expensive " + - "Message to build" + - "for my test"); + assertThrows(ValueNotFoundException.class, () -> { + controller.oopsHandler(); + }); } } \ No newline at end of file From a73fcd7892dd6e9d5b72d9c7cbdd2bdba650ae1e Mon Sep 17 00:00:00 2001 From: John Thompson Date: Mon, 22 Oct 2018 20:17:58 -0400 Subject: [PATCH 07/12] timeout demo --- .../controllers/IndexControllerTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java index bfb9fb2e2..fe8577985 100644 --- a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java +++ b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java @@ -1,9 +1,12 @@ 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 java.time.Duration; + import static org.junit.jupiter.api.Assertions.*; class IndexControllerTest { @@ -32,4 +35,26 @@ void oupsHandler() { 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"); + }); + } } \ No newline at end of file From 163bdcc2f21d60769bcd44de4286ab3ae2f4862d Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 25 Oct 2018 16:39:18 -0400 Subject: [PATCH 08/12] adding assumptions demo --- .../controllers/IndexControllerTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java index fe8577985..26711128a 100644 --- a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java +++ b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java @@ -8,6 +8,7 @@ import java.time.Duration; import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assumptions.assumeTrue; class IndexControllerTest { @@ -57,4 +58,16 @@ void testTimeOutPrempt() { System.out.println("I got here 2342342342342"); }); } + + @Test + void testAssumptionTrue() { + + assumeTrue("GURU".equalsIgnoreCase(System.getenv("GURU_RUNTIME"))); + } + + @Test + void testAssumptionTrueAssumptionIsTrue() { + + assumeTrue("GURU".equalsIgnoreCase("GURU")); + } } \ No newline at end of file From ca50442c11ce592e8cf3d62cb716be59ecc20696 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 25 Oct 2018 17:18:33 -0400 Subject: [PATCH 09/12] adding conditional testing examples --- .../controllers/IndexControllerTest.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java index 26711128a..65624b6c0 100644 --- a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java +++ b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java @@ -4,6 +4,7 @@ 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; @@ -70,4 +71,34 @@ 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 From 95520fbd4a5f02ca0d1a92f03700313e57362948 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 25 Oct 2018 17:39:52 -0400 Subject: [PATCH 10/12] adding assertj --- pom.xml | 7 +++++++ .../sfgpetclinic/controllers/IndexControllerTest.java | 3 +++ 2 files changed, 10 insertions(+) diff --git a/pom.xml b/pom.xml index 9bd5d015e..b72bf7bfa 100644 --- a/pom.xml +++ b/pom.xml @@ -65,6 +65,13 @@ ${junit-platform.version} test + + + org.assertj + assertj-core + 3.11.1 + test + diff --git a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java index 65624b6c0..6bd803db6 100644 --- a/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java +++ b/src/test/java/guru/springframework/sfgpetclinic/controllers/IndexControllerTest.java @@ -8,6 +8,7 @@ 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; @@ -28,6 +29,8 @@ void index() { assertEquals("index", controller.index(), () -> "Another Expensive Message " + "Make me only if you have to"); + + assertThat(controller.index()).isEqualTo("index"); } @Test From 6fc3cb7f2659b4720568d3ff12ef16ea3843aff0 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 25 Oct 2018 17:55:52 -0400 Subject: [PATCH 11/12] adding hamcrest --- pom.xml | 7 +++++++ .../guru/springframework/sfgpetclinic/model/OwnerTest.java | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/pom.xml b/pom.xml index b72bf7bfa..802e51cd7 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,13 @@ 3.11.1 test + + + org.hamcrest + hamcrest-library + 1.3 + test + diff --git a/src/test/java/guru/springframework/sfgpetclinic/model/OwnerTest.java b/src/test/java/guru/springframework/sfgpetclinic/model/OwnerTest.java index f7cffb2d7..94ebcb19f 100644 --- a/src/test/java/guru/springframework/sfgpetclinic/model/OwnerTest.java +++ b/src/test/java/guru/springframework/sfgpetclinic/model/OwnerTest.java @@ -2,6 +2,8 @@ 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 { @@ -21,5 +23,7 @@ void dependentAssertions() { () -> 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 From 1d905b34c74b1f209bdfa12e0be445ed4ceea02f Mon Sep 17 00:00:00 2001 From: Maciej Kempinski Date: Tue, 30 Jan 2024 18:21:13 +0100 Subject: [PATCH 12/12] my final changes --- pom.xml | 22 ++++----- .../sfgpetclinic/controllers/ModelImpl.java | 28 +++++++++++ .../services/map/VetMapService.java | 2 +- .../controllers/VetControllerTest.java | 49 +++++++++++++++++++ 4 files changed, 89 insertions(+), 12 deletions(-) create mode 100644 src/main/java/guru/springframework/sfgpetclinic/controllers/ModelImpl.java create mode 100644 src/test/java/guru/springframework/sfgpetclinic/controllers/VetControllerTest.java diff --git a/pom.xml b/pom.xml index 802e51cd7..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 @@ -92,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/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/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/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