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("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)
);
/**

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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"));
}
}