package com.plannaplan.services; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.List; import com.plannaplan.entities.User; import com.plannaplan.exceptions.UserNotFoundException; import com.plannaplan.types.UserRoles; import org.junit.Test; import org.junit.jupiter.api.TestMethodOrder; import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; import org.junit.runner.RunWith; @RunWith(SpringRunner.class) @SpringBootTest @ContextConfiguration @TestMethodOrder(OrderAnnotation.class) public class UserServiceTest { private static String TEST_USER_MAIL = "noteexisitingmail@notexistingdomain.com"; private static String TEST_USER_NAME = "Tom"; private static String TEST_USER_SUERNAME = "Kovalsky"; @Autowired private UserService userService; @Test public void shouldReturnToken() { User testUser = this.userService .save(new User(TEST_USER_NAME, TEST_USER_SUERNAME, TEST_USER_MAIL, UserRoles.TEST_USER)); try { testUser = this.userService.login(testUser); System.out.println("Returned token: " + testUser.getToken()); assertTrue(testUser.getToken() != null); assertTrue(this.userService.getUserByEmail(TEST_USER_MAIL).getToken() != null); } catch (UserNotFoundException e) { e.printStackTrace(); assertTrue(false); } } @Test public void shouldFindStudents() { this.userService.save(new User("Nemo", "TheFish", "Nemo@shouldFindStudents.test", UserRoles.STUDENT)); final List response = this.userService.searchForStudents("Nemo"); assertTrue(response.size() >= 1); assertTrue(containsName(response, "Nemo")); } @Test public void shouldReturnAllStudents() { final User veryWantedUser = new User("Xavier", "123", "Xavier@shouldReturnAllStudents.test", UserRoles.STUDENT); final User littleLessWanted = new User("Ravier", "321", "Ravier@shouldReturnAllStudents.test", UserRoles.STUDENT); final User notWantadUser = new User("Fiona", "Raskolnikov", "Fiona@shouldReturnAllStudents.test", UserRoles.DEANERY); this.userService.save(veryWantedUser); this.userService.save(littleLessWanted); this.userService.save(notWantadUser); final List response = this.userService.searchForStudents(""); assertTrue(response.size() >= 2); assertTrue(!containsName(response, notWantadUser.getName())); assertTrue(containsName(response, littleLessWanted.getName())); assertTrue(containsName(response, veryWantedUser.getName())); } @Test public void shouldntFindStudents() { this.userService.save(new User("Nadia", "Ladia", "Nadia@shouldntFindStudents.test", UserRoles.STUDENT)); final List response = this.userService.searchForStudents( "THISisIMPOIBLEQUEryThatShouldntReturnAnyPersonAtAllfnjiasdfjivlsdfnjgklsomerandomcharsjustinCaseXD"); assertTrue(response.size() == 0); } private boolean containsName(final List list, final String name) { return list.stream().map(User::getName).filter(name::equals).findFirst().isPresent(); } @Test public void shouldCreateUser() { final User user = this.userService.checkForUser("shouldCreateUser@UserService.test", null); assertTrue(user.getId() != null); } @Test public void shouldReturnExistingUser() { final String email = "shouldReturnExistingUser@UserService.test"; this.userService.save(new User("Tom", "Smieszne", email, UserRoles.TEST_USER)); final User user = this.userService.checkForUser(email, null); assertTrue(user.getName() != "Tom"); } }