From adb8406d4e99f234d788d95587593388988d857c Mon Sep 17 00:00:00 2001 From: Merel Steenbergen Date: Fri, 5 Apr 2019 19:59:57 +0200 Subject: [PATCH 1/5] ADD::Some tests to achievement class --- .../java/greenify/server/data/model/Achievement.java | 3 +++ .../java/greenify/server/service/UserService.java | 4 +++- .../greenify/server/data/model/AchievementTest.java | 12 ++++++++++++ .../server/service/AchievementServiceTest.java | 8 +++++--- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/Server/src/main/java/greenify/server/data/model/Achievement.java b/src/Server/src/main/java/greenify/server/data/model/Achievement.java index 35d7f99..c0aa2e9 100644 --- a/src/Server/src/main/java/greenify/server/data/model/Achievement.java +++ b/src/Server/src/main/java/greenify/server/data/model/Achievement.java @@ -86,6 +86,9 @@ public class Achievement { */ @Override public boolean equals(Object other) { + if(other == null){ + return false; + } if (other instanceof Achievement) { Achievement that = (Achievement) other; return achieved == that.achieved 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 5f41849..29a6b55 100644 --- a/src/Server/src/main/java/greenify/server/service/UserService.java +++ b/src/Server/src/main/java/greenify/server/service/UserService.java @@ -244,7 +244,9 @@ public class UserService { throw new ApplicationException("User does not exist"); } else { if (AllAchievements.isValidAchievement(achievement)) { - user.getAchievements().put(achievement, achieved); + Map temp = user.getAchievements(); + temp.put(achievement, achieved); + user.setAchievements(temp); userRepository.save(user); } else { throw new ApplicationException("Invalid achievement"); diff --git a/src/Server/src/test/java/greenify/server/data/model/AchievementTest.java b/src/Server/src/test/java/greenify/server/data/model/AchievementTest.java index 252421e..c6479b4 100644 --- a/src/Server/src/test/java/greenify/server/data/model/AchievementTest.java +++ b/src/Server/src/test/java/greenify/server/data/model/AchievementTest.java @@ -1,6 +1,7 @@ package greenify.server.data.model; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.jupiter.api.Test; @@ -38,6 +39,17 @@ class AchievementTest { assertEquals(achievement, other); } + @Test + void notEqualsTest() { + Achievement test = new Achievement("Starting off", + "You did your first green activity", false); + assertFalse(achievement.equals(test)); + } + + @Test + void equalsNullTest() { + assertFalse(achievement.equals(null)); + } @Test void hashCodeTest() { assertEquals(achievement, other); 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..5a8b9ec 100644 --- a/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java +++ b/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java @@ -3,6 +3,7 @@ package greenify.server.service; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; +import greenify.server.InputValidator; import greenify.server.data.model.User; import greenify.server.data.repository.UserRepository; import org.junit.Before; @@ -52,11 +53,12 @@ public class AchievementServiceTest { @Test public void updateAchievementsTest() { User alex = userRepository.findByName("alex"); - userService.setInput("alex", "input_size", "5"); + userService.setInput("alex","input_footprint_shopping_food_otherfood", "9.9"); achievementService.updateAchievements(alex); - userService.setAchievement(alex.getName(), "Starting off", true); +// 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")); + System.out.println("\n\n"+ alex.getAchievements() + "\n\n" + alex.getFootPrintInputs().equals(InputValidator.getDefaultValues())); +// assertEquals(true, userService.getAchievement("alex", "Starting off")); } @Test From ccbe5968da7542edbcd97791953a609aad1cf983 Mon Sep 17 00:00:00 2001 From: Merel Steenbergen Date: Fri, 5 Apr 2019 20:21:42 +0200 Subject: [PATCH 2/5] EDIT::Finding bugs in tests and try to fix them --- .../server/service/AchievementService.java | 10 ++++++---- .../greenify/server/service/UserService.java | 18 ++++++++---------- .../server/service/AchievementServiceTest.java | 4 +++- 3 files changed, 17 insertions(+), 15 deletions(-) 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 aee6918..a23618a 100644 --- a/src/Server/src/main/java/greenify/server/service/AchievementService.java +++ b/src/Server/src/main/java/greenify/server/service/AchievementService.java @@ -13,8 +13,8 @@ public class AchievementService { @Autowired UserService userService; - @Autowired - UserRepository userRepository; +// @Autowired +// UserRepository userRepository; private Logger logger = LoggerFactory.getLogger(UserService.class); @@ -24,7 +24,8 @@ public class AchievementService { */ public void updateAchievements(User user) { achieveGettingStarted(user); - userRepository.save(user); + System.out.println("\n\nI GOT HERE \n\n"); +// userRepository.save(user); } /** @@ -32,9 +33,10 @@ public class AchievementService { * @param user user for whom achiev1 changes */ public void achieveGettingStarted(User user) { +// System.out.print("\n\nUSERNAME:" + userRepository.findByName(user.getName()) ); if (!user.getFootPrintInputs().equals(InputValidator.getDefaultValues())) { userService.setAchievement(user.getName(), "Starting off", true); - userRepository.save(user); +// userRepository.save(user); } } 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 29a6b55..0f0394a 100644 --- a/src/Server/src/main/java/greenify/server/service/UserService.java +++ b/src/Server/src/main/java/greenify/server/service/UserService.java @@ -114,8 +114,8 @@ public class UserService { if (InputValidator.isValidItem(inputName) && InputValidator.isValidItemValue(inputName, value)) { user.getFootPrintInputs().put(inputName, value); - userRepository.save(user); achievementService.updateAchievements(user); + userRepository.save(user); } else { throw new ApplicationException("Invalid input"); } @@ -242,16 +242,14 @@ public class UserService { User user = userRepository.findByName(name); if (user == null) { throw new ApplicationException("User does not exist"); - } else { - if (AllAchievements.isValidAchievement(achievement)) { - Map temp = user.getAchievements(); - temp.put(achievement, achieved); - user.setAchievements(temp); - userRepository.save(user); - } else { - throw new ApplicationException("Invalid achievement"); - } } + if (!AllAchievements.isValidAchievement(achievement)) { + throw new ApplicationException("Invalid achievement"); + } + Map temp = user.getAchievements(); + temp.put(achievement, achieved); + user.setAchievements(temp); + userRepository.save(user); } /** 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 5a8b9ec..e9da1ce 100644 --- a/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java +++ b/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java @@ -6,6 +6,7 @@ import static org.mockito.Mockito.when; import greenify.server.InputValidator; import greenify.server.data.model.User; import greenify.server.data.repository.UserRepository; +import jdk.internal.util.xml.impl.Input; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -54,7 +55,8 @@ public class AchievementServiceTest { public void updateAchievementsTest() { User alex = userRepository.findByName("alex"); userService.setInput("alex","input_footprint_shopping_food_otherfood", "9.9"); - achievementService.updateAchievements(alex); +// achievementService.updateAchievements(alex); + //Shouldn't even have to call updateAchievements, since it's called in setInput. // userService.setAchievement(alex.getName(), "Starting off", true); // ^should not be here, does not work otherwise and I don't know why System.out.println("\n\n"+ alex.getAchievements() + "\n\n" + alex.getFootPrintInputs().equals(InputValidator.getDefaultValues())); From 82fd0165902afd5d9dc744a083a02909529cd3ae Mon Sep 17 00:00:00 2001 From: Merel Steenbergen Date: Fri, 5 Apr 2019 20:30:31 +0200 Subject: [PATCH 3/5] FIX::No longer use Mockito for AchievementService in AchievementServiceTest --- .../service/AchievementServiceTest.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) 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 e9da1ce..3126db1 100644 --- a/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java +++ b/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java @@ -26,6 +26,14 @@ public class AchievementServiceTest { } } + @TestConfiguration + static class AchievementServiceConfiguration { + @Bean + public AchievementService achievementService() { + return new AchievementService(); + } + } + @Autowired private UserService userService; @@ -35,7 +43,7 @@ public class AchievementServiceTest { @MockBean private CalculatorService calculatorService; - @MockBean + @Autowired private AchievementService achievementService; /** @@ -46,30 +54,20 @@ 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_footprint_shopping_food_otherfood", "9.9"); -// achievementService.updateAchievements(alex); - //Shouldn't even have to call updateAchievements, since it's called in setInput. -// userService.setAchievement(alex.getName(), "Starting off", true); - // ^should not be here, does not work otherwise and I don't know why - System.out.println("\n\n"+ alex.getAchievements() + "\n\n" + alex.getFootPrintInputs().equals(InputValidator.getDefaultValues())); -// assertEquals(true, userService.getAchievement("alex", "Starting off")); + achievementService.updateAchievements(alex); + assertEquals(true, userService.getAchievement("alex", "Starting off")); } @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")); } } From dcb8404ae73ce26c79cbdcc8845c36938316064d Mon Sep 17 00:00:00 2001 From: Merel Steenbergen Date: Fri, 5 Apr 2019 20:37:54 +0200 Subject: [PATCH 4/5] ADD::Method for achievement social butterfly --- .../server/service/AchievementService.java | 22 ++++++++++++------- .../service/AchievementServiceTest.java | 2 ++ 2 files changed, 16 insertions(+), 8 deletions(-) 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 a23618a..33824cc 100644 --- a/src/Server/src/main/java/greenify/server/service/AchievementService.java +++ b/src/Server/src/main/java/greenify/server/service/AchievementService.java @@ -13,9 +13,6 @@ public class AchievementService { @Autowired UserService userService; -// @Autowired -// UserRepository userRepository; - private Logger logger = LoggerFactory.getLogger(UserService.class); /** @@ -24,19 +21,28 @@ public class AchievementService { */ public void updateAchievements(User user) { achieveGettingStarted(user); - System.out.println("\n\nI GOT HERE \n\n"); -// userRepository.save(user); + achieveSocialButterfly(user); } /** - * This method changes achiev1 when this is the case. + * This method makes sure the user gets an achievement + * upon calculating their footprint for the first time. * @param user user for whom achiev1 changes */ public void achieveGettingStarted(User user) { -// System.out.print("\n\nUSERNAME:" + userRepository.findByName(user.getName()) ); if (!user.getFootPrintInputs().equals(InputValidator.getDefaultValues())) { userService.setAchievement(user.getName(), "Starting off", true); -// userRepository.save(user); + } + } + + /** + * This method makes sure the user gets an achievement + * when they have added three friends. + * @param user user for whom achiev2 changes + */ + public void achieveSocialButterfly(User user) { + if (user.getFriends().size() == 3) { + userService.setAchievement(user.getName(), "Social butterfly", 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 3126db1..cb89366 100644 --- a/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java +++ b/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java @@ -69,5 +69,7 @@ public class AchievementServiceTest { User alex = userRepository.findByName("alex"); achievementService.achieveGettingStarted(alex); assertEquals(true, userService.getAchievement("alex", "Starting off")); + assertEquals(false, userService.getAchievement("alex", "Social butterfly")); + } } From bce08eb6f294e5747f4d6e2924aeed04160fc3fb Mon Sep 17 00:00:00 2001 From: Merel Steenbergen Date: Fri, 5 Apr 2019 20:40:50 +0200 Subject: [PATCH 5/5] DELETE::Wrong import that gave an error --- .../java/greenify/server/service/AchievementServiceTest.java | 1 - 1 file changed, 1 deletion(-) 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 cb89366..88cc444 100644 --- a/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java +++ b/src/Server/src/test/java/greenify/server/service/AchievementServiceTest.java @@ -6,7 +6,6 @@ import static org.mockito.Mockito.when; import greenify.server.InputValidator; import greenify.server.data.model.User; import greenify.server.data.repository.UserRepository; -import jdk.internal.util.xml.impl.Input; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith;