ADD:: extra achievements and tests

This commit is contained in:
mlwauben
2019-04-06 15:36:44 +02:00
parent 238c00ff46
commit eeb0fd9d57
4 changed files with 62 additions and 29 deletions

View File

@@ -14,8 +14,7 @@ public class AllAchievements {
new Achievement("Green saver", "You saved * of CO2", false), new Achievement("Green saver", "You saved * of CO2", false),
new Achievement("Animal friend", "You have eaten 10 vegetarian meals", false), new Achievement("Animal friend", "You have eaten 10 vegetarian meals", false),
new Achievement("Tom Dumoulin", "You have biked * km", 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("Let it shine", "You installed solar panels", false)
new Achievement("", "", false)
); );
/** /**

View File

@@ -191,6 +191,8 @@ public class InputValidator {
map.put("bike", false); map.put("bike", false);
map.put("temperature", false); map.put("temperature", false);
map.put("solar_panels", false); map.put("solar_panels", false);
map.put("vegetarian", false);
map.put("public_transport", false);
return map; return map;
} }
} }

View File

@@ -2,7 +2,6 @@ package greenify.server.service;
import greenify.server.InputValidator; import greenify.server.InputValidator;
import greenify.server.data.model.User; import greenify.server.data.model.User;
import greenify.server.data.repository.UserRepository;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -13,9 +12,6 @@ public class AchievementService {
@Autowired @Autowired
UserService userService; UserService userService;
@Autowired
UserRepository userRepository;
private Logger logger = LoggerFactory.getLogger(UserService.class); private Logger logger = LoggerFactory.getLogger(UserService.class);
/** /**
@@ -28,8 +24,7 @@ public class AchievementService {
achieveGreenSaver(user); achieveGreenSaver(user);
achieveAnimalFriend(user); achieveAnimalFriend(user);
achieveTomDumoulin(user); achieveTomDumoulin(user);
achieveBelowAverage(user); achieveLetItShine(user);
userRepository.save(user);
} }
/** /**
@@ -39,7 +34,6 @@ public class AchievementService {
public void achieveGettingStarted(User user) { public void achieveGettingStarted(User user) {
if (!user.getFootPrintInputs().equals(InputValidator.getDefaultValues())) { if (!user.getFootPrintInputs().equals(InputValidator.getDefaultValues())) {
userService.setAchievement(user.getName(), "Starting off", true); userService.setAchievement(user.getName(), "Starting off", true);
userRepository.save(user);
} }
} }
@@ -50,7 +44,6 @@ public class AchievementService {
public void achieveSocialButterfly(User user) { public void achieveSocialButterfly(User user) {
if (user.getFriends().size() >= 3) { if (user.getFriends().size() >= 3) {
userService.setAchievement(user.getName(), "Social butterfly", true); userService.setAchievement(user.getName(), "Social butterfly", true);
userRepository.save(user);
} }
} }
@@ -61,7 +54,6 @@ public class AchievementService {
public void achieveGreenSaver(User user) { public void achieveGreenSaver(User user) {
if (43-user.getFootPrint() > 38) { if (43-user.getFootPrint() > 38) {
userService.setAchievement(user.getName(), "Green saver", true); userService.setAchievement(user.getName(), "Green saver", true);
userRepository.save(user);
} }
} }
@@ -70,9 +62,8 @@ public class AchievementService {
* @param user user for whom achiev4 changes * @param user user for whom achiev4 changes
*/ */
public void achieveAnimalFriend(User user) { public void achieveAnimalFriend(User user) {
if (user.getExtraInputs().get("Vegetarian meal")) { if (user.getExtraInputs().get("vegetarian")) {
userService.setAchievement(user.getName(), "Animal friend", true); userService.setAchievement(user.getName(), "Animal friend", true);
userRepository.save(user);
} }
} }
@@ -81,9 +72,8 @@ public class AchievementService {
* @param user user for whom achiev5 changes * @param user user for whom achiev5 changes
*/ */
public void achieveTomDumoulin(User user) { public void achieveTomDumoulin(User user) {
if (user.getExtraInputs().get("Bike used")) { if (user.getExtraInputs().get("bike")) {
userService.setAchievement(user.getName(), "Tom Dumoulin", true); 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. * This method changes achiev6 when this is the case.
* @param user user for whom achiev6 changes * @param user user for whom achiev6 changes
*/ */
public void achieveBelowAverage(User user) { public void achieveLetItShine(User user) {
if (Integer.parseInt(user.getFootPrintInputs().get("input_footprint_shopping_food_meatfisheggs_default")) < Integer.parseInt("2.4")) { if (user.getExtraInputs().get("solar_panels")) {
userService.setAchievement(user.getName(), "Below average", true); userService.setAchievement(user.getName(), "Let it shine", true);
userRepository.save(user);
} }
} }

View File

@@ -3,8 +3,11 @@ package greenify.server.service;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import greenify.server.data.model.User; import greenify.server.data.model.User;
import greenify.server.data.repository.UserRepository; import greenify.server.data.repository.UserRepository;
import greenify.server.InputValidator;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -24,6 +27,14 @@ public class AchievementServiceTest {
} }
} }
@TestConfiguration
static class AchievementServiceConfiguration {
@Bean
public AchievementService achievementService() {
return new AchievementService();
}
}
@Autowired @Autowired
private UserService userService; private UserService userService;
@@ -33,7 +44,7 @@ public class AchievementServiceTest {
@MockBean @MockBean
private CalculatorService calculatorService; private CalculatorService calculatorService;
@MockBean @Autowired
private AchievementService achievementService; private AchievementService achievementService;
/** /**
@@ -44,28 +55,60 @@ public class AchievementServiceTest {
User alex = new User(1L, "alex", "password"); User alex = new User(1L, "alex", "password");
when(userRepository.findByName(alex.getName())) when(userRepository.findByName(alex.getName()))
.thenReturn(alex); .thenReturn(alex);
User lola = new User(2L, "lola", "password"); userService.setInput("alex","input_footprint_shopping_food_otherfood", "9.9");
when(userRepository.findByName(lola.getName()))
.thenReturn(lola);
} }
@Test @Test
public void updateAchievementsTest() { public void updateAchievementsTest() {
User alex = userRepository.findByName("alex"); User alex = userRepository.findByName("alex");
userService.setInput("alex", "input_size", "5");
achievementService.updateAchievements(alex); 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(true, userService.getAchievement("alex", "Starting off"));
assertEquals(false, userService.getAchievement("alex", "Social butterfly"));
} }
@Test @Test
public void achieveGettingStartedTest() { public void achieveGettingStartedTest() {
User alex = userRepository.findByName("alex"); User alex = userRepository.findByName("alex");
userService.setInput("alex", "input_size", "5");
achievementService.achieveGettingStarted(alex); 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")); 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"));
}
} }