diff --git a/doc/reports/final-report/Final report - draft.pdf b/doc/reports/final-report/20190401_draft_final_report.pdf similarity index 100% rename from doc/reports/final-report/Final report - draft.pdf rename to doc/reports/final-report/20190401_draft_final_report.pdf diff --git a/src/Client/src/main/java/greenify/client/Hints.java b/src/Client/src/main/java/greenify/client/Hints.java new file mode 100644 index 0000000..34aa3fb --- /dev/null +++ b/src/Client/src/main/java/greenify/client/Hints.java @@ -0,0 +1,68 @@ +package greenify.client; + +import java.util.ArrayList; +import java.util.Random; + +public class Hints { + public ArrayList hints; + + public Hints() { + this.hints = new ArrayList(); + initHints(); + } + + /** + * This method adds all the Strings to the arraylist. + */ + private void initHints() { + hints.add("Buying local produce will not only decrease your carbon " + + "footprint, but also help your local economy: A win-win!"); + hints.add("Did you know that a gas oven only uses 6% of its energy " + + "to cook? And an electric oven is not much better at 12%."); + hints.add("70% of the deforestation of the Amazon is to provide land for cattle ranches."); + hints.add("Research shows that reducing meat consumption can increase" + + " your life span by 3.6 years"); + hints.add("Vegetarians have a lower risk of getting heart disease, high blood pressure, " + + "diabetes and cancer than meat eaters."); + hints.add("Did you know? The carbon footprint of a vegetarian diet is about half " + + "that of a meat-lover’s diet!"); + hints.add("Cycling is good for the environment AND for your body, " + + "so why not grab your bike instead of your car?"); + hints.add("If we could capture all of the sun’s energy shining on the Earth for just one " + + "hour, we could power the entire world for one year!"); + hints.add("27,000 trees are cut down each day so we can have toilet paper."); + hints.add("A glass bottle made in our time will take more than 4,000 years to decompose."); + hints.add("Don't forget to turn off the lights and heating in rooms" + + " you're not using at the moment!"); + hints.add("Did you know that about 4.5% of the Dutch population does not eat meat"); + hints.add("Reuse your bags when you go grocery shopping. You will save plastic bags."); + hints.add("An estimated 250 million trees can be save each year " + + "if every published newspaper is recycled."); + hints.add("About 88,000 jobs were created in 2015 through the wind power sector."); + hints.add("You can use LED lights in your home to safe energy!"); + hints.add("If you isolate your home well, it will be warmer " + + "and you'll save energy as well!"); + hints.add("Do you have leftovers? Donate them to food kitchens. This way you won't waste " + + "food and help people at the same time."); + hints.add("A lot of coffee places give you a discount if you bring your own cup. " + + "Get rid of those disposable cups!"); + hints.add("When shopping, look for products with minimal to no packaging, " + + "or at least packaging made from recycled items. "); + hints.add("If you order food, you can ask the restaurant to not include " + + "utensils and napkins, it saves plastic and paper."); + hints.add("It takes about 66 days to form a new habit, keep going!"); + hints.add("Get yourself a nice reusable water bottle! It's cheaper and better for " + + "the environment to refill than to buy a new one every time it's empty."); + } + + /** + * This method returns a random hint from the list of hints. + * @return the random hint. + */ + public String randomHint() { + Random rand = new Random(); + int index = rand.nextInt(hints.size()); + return hints.get(index); + } + +} diff --git a/src/Client/src/main/java/greenify/client/controller/DashBoardController.java b/src/Client/src/main/java/greenify/client/controller/DashBoardController.java index ea61adc..c3352b8 100644 --- a/src/Client/src/main/java/greenify/client/controller/DashBoardController.java +++ b/src/Client/src/main/java/greenify/client/controller/DashBoardController.java @@ -509,4 +509,5 @@ public class DashBoardController { } } + } \ No newline at end of file diff --git a/src/Client/src/main/java/greenify/client/rest/UserService.java b/src/Client/src/main/java/greenify/client/rest/UserService.java index 9252cc8..e0bd827 100644 --- a/src/Client/src/main/java/greenify/client/rest/UserService.java +++ b/src/Client/src/main/java/greenify/client/rest/UserService.java @@ -230,6 +230,24 @@ public class UserService { .encode().toUri(), String.class); } + /** + * Removes a friend from the friendslist of the user. + * @param name the username of the current user. + * @param friend the username of the friend you want to remove. + */ + @SuppressWarnings("Duplicates") + public void removeFriend(String name, String friend) { + HttpHeaders headers = new HttpHeaders(); + headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/removeFriend") + .queryParam("name", name) + .queryParam("friend",friend); + HttpEntity entity = new HttpEntity<>(headers); + System.out.println(builder.build().encode().toUri()); + ResponseEntity authenticateResponse = this.restTemplate.getForEntity(builder.build() + .encode().toUri(), String.class); + } + /** * Gets the footprint inputs of the user. * @param name the username of the current user. diff --git a/src/Client/src/test/java/HintsTest.java b/src/Client/src/test/java/HintsTest.java new file mode 100644 index 0000000..c0e2442 --- /dev/null +++ b/src/Client/src/test/java/HintsTest.java @@ -0,0 +1,29 @@ +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.assertFalse; + +import greenify.client.Hints; +import org.junit.Test; + +public class HintsTest { + @Test + public void initHintsTest() { + Hints test = new Hints(); + assertFalse(test.hints.isEmpty()); + } + + @Test + public void hintsContainsTest() { + Hints test = new Hints(); + assertTrue(test.hints.contains("27,000 trees are cut down " + + "each day so we can have toilet paper.")); + } + + @Test + public void randomHintTest() { + Hints test = new Hints(); + String random = test.randomHint(); + assertTrue(test.hints.contains(random)); + } +} + + diff --git a/src/Client/src/test/java/UserServiceTest.java b/src/Client/src/test/java/UserServiceTest.java index 812bc3e..b7d1fa6 100644 --- a/src/Client/src/test/java/UserServiceTest.java +++ b/src/Client/src/test/java/UserServiceTest.java @@ -147,6 +147,14 @@ public class UserServiceTest { userService.addFriend("Eric", "Ceren"); Mockito.verify(userService).addFriend("Eric", "Ceren"); } + + @Test + public void removeFriendTest() throws Exception { + userService.addFriend("Eric", "Ceren"); + Mockito.verify(userService).addFriend("Eric", "Ceren"); + userService.removeFriend("Eric", "Ceren"); + Mockito.verify(userService).removeFriend("Eric", "Ceren"); + } } diff --git a/src/Server/src/main/java/greenify/server/data/model/User.java b/src/Server/src/main/java/greenify/server/data/model/User.java index 9f1860b..9227fde 100644 --- a/src/Server/src/main/java/greenify/server/data/model/User.java +++ b/src/Server/src/main/java/greenify/server/data/model/User.java @@ -208,6 +208,19 @@ public class User { } } + /** + * Removes a friend from the friendslist of the user. + * @param user the friend you want to remove. + */ + public void removeFriend(User user) { + if (!friends.contains(user)) { + throw new ApplicationException("This user is not your friend!"); + } else { + friends.remove(user); + System.out.print("Friend removed"); + } + } + /** * This method gets a human readable (JSON) object. * @return the JSON form of the object. diff --git a/src/Server/src/main/java/greenify/server/rest/UserController.java b/src/Server/src/main/java/greenify/server/rest/UserController.java index e0e28e8..6d282e9 100644 --- a/src/Server/src/main/java/greenify/server/rest/UserController.java +++ b/src/Server/src/main/java/greenify/server/rest/UserController.java @@ -155,13 +155,25 @@ public class UserController { } /** - * This method adds friend for a user. + * This method adds a friend to a user. * @param name name of the user - * + * @param friend the name of the user you want to add as a friend. */ @RequestMapping("/addFriend") public void addFriend(@RequestParam(value = "name") String name, @RequestParam(value = "friend") String friend) { userService.addFriend(name, friend); } + + /** + * This method removes a friend from a user. + * @param name name of the user + * @param friend name of the friend you want to remove + */ + @RequestMapping("/removeFriend") + public void removeFriend(@RequestParam(value = "name") String name, + @RequestParam(value = "friend") String friend) { + userService.removeFriend(name, friend); + } } + diff --git a/src/Server/src/main/java/greenify/server/service/UserService.java b/src/Server/src/main/java/greenify/server/service/UserService.java index f4cea39..685d618 100644 --- a/src/Server/src/main/java/greenify/server/service/UserService.java +++ b/src/Server/src/main/java/greenify/server/service/UserService.java @@ -64,21 +64,37 @@ public class UserService { } /** -<<<<<<< HEAD * Adds a friend to the friendlist of the user. * @param name the username of the user * @param friend the name of the friend you want to add. + * @throws ApplicationException if the user is not in the database. */ public void addFriend(String name, String friend) { User user = userRepository.findByName(name); User add = userRepository.findByName(friend); - if (user == null || add == null ) { + if (add == null ) { throw new ApplicationException("User does not exist"); } user.addFriend(add); userRepository.save(user); } + /** + * Removes a friend from the friendlist of the user. + * @param name the username of the user + * @param friend the name of the friend you want to remove. + * @throws ApplicationException if the user is not in the database. + */ + public void removeFriend(String name, String friend) { + User user = userRepository.findByName(name); + User remove = userRepository.findByName(friend); + if (remove == null ) { + throw new ApplicationException("User does not exist"); + } + user.removeFriend(remove); + userRepository.save(user); + } + /** * This method sets input for a user. * @param name name of the user diff --git a/src/Server/src/test/java/greenify/server/data/model/UserTest.java b/src/Server/src/test/java/greenify/server/data/model/UserTest.java index f95b2c4..dcfd702 100644 --- a/src/Server/src/test/java/greenify/server/data/model/UserTest.java +++ b/src/Server/src/test/java/greenify/server/data/model/UserTest.java @@ -125,6 +125,27 @@ public class UserTest { }); } + @Test + public void removeFriendValidTest() { + User test = new User(1L, "greenify", "password"); + List friendList = new ArrayList<>(); + friendList.add(test); + User user = new User(1L, "green", "pass"); + user.setFriends(friendList); + assertEquals(user.getFriends(), friendList); + user.removeFriend(test); + assertEquals(user.getFriends(), new ArrayList()); + } + + @Test + public void removeFriendInvalidTest() { + User user = new User(1L, "greenify", "password"); + User test = new User(2L, "user", "pass"); + assertThrows(ApplicationException.class, () -> { + user.removeFriend(test); + }); + } + @Test public void setFriendTest() { List friends = new ArrayList(); diff --git a/src/Server/src/test/java/greenify/server/rest/UserControllerTest.java b/src/Server/src/test/java/greenify/server/rest/UserControllerTest.java index 1866605..2a16852 100644 --- a/src/Server/src/test/java/greenify/server/rest/UserControllerTest.java +++ b/src/Server/src/test/java/greenify/server/rest/UserControllerTest.java @@ -113,6 +113,23 @@ public class UserControllerTest { assertEquals("merel", arg2Captor.getValue()); } + @Test + public void removeFriendTest() throws Exception { + ArgumentCaptor arg1Captor = ArgumentCaptor.forClass(String.class); + ArgumentCaptor arg2Captor = ArgumentCaptor.forClass(String.class); + mvc.perform(get("/removeFriend") + .param("name", "ceren") + .param("friend", "merel") + .accept(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()); + verify(userService, times(1)). + removeFriend(arg1Captor.capture(), arg2Captor.capture()); + assertEquals("ceren", arg1Captor.getValue()); + assertEquals("merel", arg2Captor.getValue()); + + } + @Test public void getInputMapTest() throws Exception { ArgumentCaptor arg1Captor = ArgumentCaptor.forClass(String.class); diff --git a/src/Server/src/test/java/greenify/server/service/UserServiceTest.java b/src/Server/src/test/java/greenify/server/service/UserServiceTest.java index 80631e0..61dc5c5 100644 --- a/src/Server/src/test/java/greenify/server/service/UserServiceTest.java +++ b/src/Server/src/test/java/greenify/server/service/UserServiceTest.java @@ -266,12 +266,25 @@ public class UserServiceTest { } @Test - public void addFriendNullFriendTest() { - assertThrows(ApplicationException.class, () -> userService.addFriend("alex", null)); + public void removeFriendTest() { + User alex = userRepository.findByName("alex"); + User lola = userRepository.findByName("lola"); + assertEquals(lola.getFriends(), alex.getFriends()); + userService.addFriend("alex", "lola"); + ArrayList test = new ArrayList(); + test.add(lola); + assertEquals(alex.getFriends(), test); + userService.removeFriend("alex", "lola"); + assertEquals(lola.getFriends(), alex.getFriends()); } @Test - public void addFriendNullUserTest() { - assertThrows(ApplicationException.class, () -> userService.addFriend(null, "password")); + public void removeFriendNullTest() { + assertThrows(ApplicationException.class, () -> userService.removeFriend("alex", null)); + } + + @Test + public void addFriendNullFriendTest() { + assertThrows(ApplicationException.class, () -> userService.addFriend("alex", null)); } }