From 545d260211e6a18ab11a01a359e88c552fd5fa07 Mon Sep 17 00:00:00 2001 From: Rhys Evans <EvansRM17@cardiff.ac.uk> Date: Thu, 7 Dec 2023 09:52:26 +0000 Subject: [PATCH] added test, DataAccessException issue --- .../java/Team5/SmartTowns/Data/Location.java | 5 +++ .../SmartTowns/Towns/TownController.java | 14 +++++-- .../userTrails/userTrailsTemplate.html | 22 +++++++++- .../SmartTownsApplicationTests.java | 42 ++++++++++++++----- 4 files changed, 68 insertions(+), 15 deletions(-) diff --git a/src/main/java/Team5/SmartTowns/Data/Location.java b/src/main/java/Team5/SmartTowns/Data/Location.java index 01ba2932..cf9e6964 100644 --- a/src/main/java/Team5/SmartTowns/Data/Location.java +++ b/src/main/java/Team5/SmartTowns/Data/Location.java @@ -3,8 +3,11 @@ package Team5.SmartTowns.Data; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; + @Data @AllArgsConstructor +@NoArgsConstructor public class Location { // private int locationID; private String locationName; @@ -13,6 +16,8 @@ public class Location { private String locationPlace; private int locationTrailID; + + @Override public String toString() { return "Location{" + diff --git a/src/main/java/Team5/SmartTowns/Towns/TownController.java b/src/main/java/Team5/SmartTowns/Towns/TownController.java index a09e012a..6029b5e7 100644 --- a/src/main/java/Team5/SmartTowns/Towns/TownController.java +++ b/src/main/java/Team5/SmartTowns/Towns/TownController.java @@ -10,7 +10,9 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.servlet.ModelAndView; +import java.util.ArrayList; import java.util.List; +import java.util.Objects; @Controller public class TownController { @@ -29,7 +31,7 @@ public class TownController { } - @GetMapping("/home/town") + @GetMapping("/home/town/Caerphilly") public ModelAndView getATownTrailsList(){ ModelAndView modelAndView = new ModelAndView("userTrails/userTrailsTemplate"); TownStorage townsCurrent= new TownStorage().getInstance(); @@ -37,15 +39,19 @@ public class TownController { List<Town> Towns = townRepository.getAllTowns(); modelAndView.addObject("towns", Towns); List<Location> Locations = locationRepository.getAllLocation(); + Locations= filterByLocationForTrails(Locations, "Caerphilly"); modelAndView.addObject("locations", Locations); return modelAndView; } public List<Location> filterByLocationForTrails(List<Location> locationList , String town){ - List<Location> filteredList; - for( location:locationList){ + List<Location> filteredList = new ArrayList<Location>();; + for( Location location:locationList){ + if (Objects.equals(location.getLocationPlace(), town)){ + filteredList.add(location); + } - } + }return filteredList; } diff --git a/src/main/resources/templates/userTrails/userTrailsTemplate.html b/src/main/resources/templates/userTrails/userTrailsTemplate.html index 65317b0e..97b99771 100644 --- a/src/main/resources/templates/userTrails/userTrailsTemplate.html +++ b/src/main/resources/templates/userTrails/userTrailsTemplate.html @@ -6,7 +6,27 @@ </head> <body> <main> - <div th:each="location:${locations}"></div> + <H1>Caerphilly</H1> + <div th:each="location:${locations}"> + + <H2></H2> + + <ul> + <li th:text="${location.getLocationPlace()}"></li> + </ul> + + + + + + + + + + + + + </div> diff --git a/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java b/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java index b506b4dd..68a585a4 100644 --- a/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java +++ b/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java @@ -1,22 +1,38 @@ package Team5.SmartTowns; import Team5.SmartTowns.Data.Location; +import Team5.SmartTowns.Data.Town; +import Team5.SmartTowns.Data.TownRepository; import Team5.SmartTowns.Towns.TownController; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import java.util.List; + import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertSame; @SpringBootTest class SmartTownsApplicationTests { + private static TownController townController; @Autowired private Team5.SmartTowns.Data.locationRepository locationRepository; private Team5.SmartTowns.Data.Location location; + + @Autowired + private Team5.SmartTowns.Data.TownRepository townRepository; + + private Team5.SmartTowns.Data.Location town; + + @BeforeAll + public static void before() { + locationRepositroy = new location.locationRepository(); + } // @BeforeAll // public static void before(){} // location = new Location(); @@ -26,14 +42,20 @@ class SmartTownsApplicationTests { void contextLoads() { } -// @Test -// public void whenFilteringTownsByLocationsReturnOneTown() { -// -// townController.filterByLocationForTrails() -// -// -// assertEquals(, townController.filterByLocationForTrails); -// } -// -// + @Test + public void whenFilteringTownsByLocationsReturnOneTown() { + List<Location> allLocations = locationRepository.getAllLocation(); + List<Town> allTowns = townRepository.getAllTowns(); + int allLocationNumber=allLocations.size(); + int allLocationNumberAfterFilter=0; + for (Town town : allTowns){ + allLocationNumberAfterFilter+=townController.filterByLocationForTrails(allLocations,town.getTownName()).size(); + } + assertSame(allLocationNumber,allLocationNumberAfterFilter); + /// list of all locations, +// filter by all three towns +// add together size should be same + } + + } -- GitLab