From eeb0fd9d57d65df1235de8b20af34e58081b4649 Mon Sep 17 00:00:00 2001 From: mlwauben Date: Sat, 6 Apr 2019 15:36:44 +0200 Subject: [PATCH] ADD:: extra achievements and tests --- .../java/greenify/server/AllAchievements.java | 3 +- .../java/greenify/server/InputValidator.java | 2 + .../server/service/AchievementService.java | 23 ++----- .../service/AchievementServiceTest.java | 63 ++++++++++++++++--- 4 files changed, 62 insertions(+), 29 deletions(-) diff --git a/src/Server/src/main/java/greenify/server/AllAchievements.java b/src/Server/src/main/java/greenify/server/AllAchievements.java index eaa4efc..eed0744 100644 --- a/src/Server/src/main/java/greenify/server/AllAchievements.java +++ b/src/Server/src/main/java/greenify/server/AllAchievements.java @@ -14,8 +14,7 @@ public class AllAchievements { new Achievement("Green saver", "You saved * of CO2", false), new Achievement("Animal friend", "You have eaten 10 vegetarian meals", false), new Achievement("Tom Dumoulin", "You have biked * km", false), - new Achievement("Below average!", "You spend less CO2 than average on everything", false), - new Achievement("", "", false) + new Achievement("Let it shine", "You installed solar panels", false) ); /** diff --git a/src/Server/src/main/java/greenify/server/InputValidator.java b/src/Server/src/main/java/greenify/server/InputValidator.java index eeb5dc6..839151a 100644 --- a/src/Server/src/main/java/greenify/server/InputValidator.java +++ b/src/Server/src/main/java/greenify/server/InputValidator.java @@ -191,6 +191,8 @@ public class InputValidator { map.put("bike", false); map.put("temperature", false); map.put("solar_panels", false); + map.put("vegetarian", false); + map.put("public_transport", false); return map; } } \ No newline at end of file diff --git a/src/Server/src/main/java/greenify/server/service/AchievementService.java b/src/Server/src/main/java/greenify/server/service/AchievementService.java index 4ecbe2b..c335195 100644 --- a/src/Server/src/main/java/greenify/server/service/AchievementService.java +++ b/src/Server/src/main/java/greenify/server/service/AchievementService.java @@ -2,7 +2,6 @@ package greenify.server.service; import greenify.server.InputValidator; import greenify.server.data.model.User; -import greenify.server.data.repository.UserRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -13,9 +12,6 @@ public class AchievementService { @Autowired UserService userService; - @Autowired - UserRepository userRepository; - private Logger logger = LoggerFactory.getLogger(UserService.class); /** @@ -28,8 +24,7 @@ public class AchievementService { achieveGreenSaver(user); achieveAnimalFriend(user); achieveTomDumoulin(user); - achieveBelowAverage(user); - userRepository.save(user); + achieveLetItShine(user); } /** @@ -39,7 +34,6 @@ public class AchievementService { public void achieveGettingStarted(User user) { if (!user.getFootPrintInputs().equals(InputValidator.getDefaultValues())) { userService.setAchievement(user.getName(), "Starting off", true); - userRepository.save(user); } } @@ -50,7 +44,6 @@ public class AchievementService { public void achieveSocialButterfly(User user) { if (user.getFriends().size() >= 3) { userService.setAchievement(user.getName(), "Social butterfly", true); - userRepository.save(user); } } @@ -61,7 +54,6 @@ public class AchievementService { public void achieveGreenSaver(User user) { if (43-user.getFootPrint() > 38) { userService.setAchievement(user.getName(), "Green saver", true); - userRepository.save(user); } } @@ -70,9 +62,8 @@ public class AchievementService { * @param user user for whom achiev4 changes */ public void achieveAnimalFriend(User user) { - if (user.getExtraInputs().get("Vegetarian meal")) { + if (user.getExtraInputs().get("vegetarian")) { userService.setAchievement(user.getName(), "Animal friend", true); - userRepository.save(user); } } @@ -81,9 +72,8 @@ public class AchievementService { * @param user user for whom achiev5 changes */ public void achieveTomDumoulin(User user) { - if (user.getExtraInputs().get("Bike used")) { + if (user.getExtraInputs().get("bike")) { userService.setAchievement(user.getName(), "Tom Dumoulin", true); - userRepository.save(user); } } @@ -91,10 +81,9 @@ public class AchievementService { * This method changes achiev6 when this is the case. * @param user user for whom achiev6 changes */ - public void achieveBelowAverage(User user) { - if (Integer.parseInt(user.getFootPrintInputs().get("input_footprint_shopping_food_meatfisheggs_default")) < Integer.parseInt("2.4")) { - userService.setAchievement(user.getName(), "Below average", true); - userRepository.save(user); + public void achieveLetItShine(User user) { + if (user.getExtraInputs().get("solar_panels")) { + userService.setAchievement(user.getName(), "Let it shine", true); } } diff --git a/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java b/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java index 280799b..d796fc1 100644 --- a/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java +++ b/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java @@ -3,8 +3,11 @@ package greenify.server.service; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; + import greenify.server.data.model.User; import greenify.server.data.repository.UserRepository; +import greenify.server.InputValidator; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -24,6 +27,14 @@ public class AchievementServiceTest { } } + @TestConfiguration + static class AchievementServiceConfiguration { + @Bean + public AchievementService achievementService() { + return new AchievementService(); + } + } + @Autowired private UserService userService; @@ -33,7 +44,7 @@ public class AchievementServiceTest { @MockBean private CalculatorService calculatorService; - @MockBean + @Autowired private AchievementService achievementService; /** @@ -44,28 +55,60 @@ public class AchievementServiceTest { User alex = new User(1L, "alex", "password"); when(userRepository.findByName(alex.getName())) .thenReturn(alex); - User lola = new User(2L, "lola", "password"); - when(userRepository.findByName(lola.getName())) - .thenReturn(lola); + userService.setInput("alex","input_footprint_shopping_food_otherfood", "9.9"); } @Test public void updateAchievementsTest() { User alex = userRepository.findByName("alex"); - userService.setInput("alex", "input_size", "5"); achievementService.updateAchievements(alex); - userService.setAchievement(alex.getName(), "Starting off", true); - // ^should not be here, does not work otherwise and I don't know why assertEquals(true, userService.getAchievement("alex", "Starting off")); + assertEquals(false, userService.getAchievement("alex", "Social butterfly")); } @Test public void achieveGettingStartedTest() { User alex = userRepository.findByName("alex"); - userService.setInput("alex", "input_size", "5"); achievementService.achieveGettingStarted(alex); - userService.setAchievement(alex.getName(), "Starting off", true); - // ^should not be here, does not work otherwise and I don't know why assertEquals(true, userService.getAchievement("alex", "Starting off")); } + + @Test + public void achieveSocialButterflyTest() { + User alex = userRepository.findByName("alex"); + alex.addFriend(new User(2L, "Bubbles", "Bubbles")); + alex.addFriend(new User(3L, "Cheese", "crackers")); + alex.addFriend(new User(4L, "Perry", "Doofenshmirtz")); + achievementService.achieveSocialButterfly(alex); + assertEquals(true, userService.getAchievement("alex", "Social butterfly")); + } + + @Test + public void achieveGreenSaverTest() { + User alex = userRepository.findByName("alex"); + achievementService.achieveGreenSaver(alex); + assertEquals(true, userService.getAchievement("alex", "Green saver")); + } + + @Test + public void achieveAnimalFriendTest() { + User alex = userRepository.findByName("alex"); + achievementService.achieveAnimalFriend(alex); + assertEquals(false, userService.getAchievement("alex", "Animal friend")); + } + + @Test + public void achieveTomDumoulinTest() { + User alex = userRepository.findByName("alex"); + achievementService.achieveTomDumoulin(alex); + assertEquals(false, userService.getAchievement("alex", "Tom Dumoulin")); + } + + @Test + public void achieveLetItShineTest() { + User alex = userRepository.findByName("alex"); + achievementService.achieveLetItShine(alex); + assertEquals(false, userService.getAchievement("alex", "Let it shine")); + } + }