Tests for user-repository

This commit is contained in:
Sebastian Böckelmann 2023-11-07 20:20:07 +01:00
parent 5ba2fb6509
commit 2f78c5ebbf
2 changed files with 69 additions and 4 deletions

View File

@ -103,11 +103,11 @@ public class User {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(id, user.id) && Objects.equals(username, user.username) && Objects.equals(email, user.email) && Objects.equals(password, user.password) && Objects.equals(roles, user.roles);
return Objects.equals(username, user.username) && Objects.equals(email, user.email) && Objects.equals(password, user.password) && Objects.equals(roles, user.roles);
}
@Override
public int hashCode() {
return Objects.hash(id, username, email, password, roles);
return Objects.hash(username, email, password, roles);
}
}

View File

@ -12,6 +12,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
import java.util.Optional;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.junit.jupiter.api.Assertions.*;
@DataJpaTest
@ -27,11 +28,75 @@ public class UserRepositoryTests {
@Test
void test_findByUsername() {
//Situation 1: No user is present in the database, so no user should be found by a given username
assertTrue(userRepository.findByUsername("FawKes100").isEmpty());
userRepository.save(new User(1L,"FawKes100", "mail@fawkes100.de", "123456"));
//persist a user to the database, so a user is present
testEntityManager.persist(new User("FawKes100", "mail@fawkes100.de", "123456"));
//Situation 2: User with name "FawKes100" is present
Optional<User> findResult = userRepository.findByUsername("FawKes100");
assertTrue(findResult.isPresent());
assertEquals(new User(1L, "FawKes100", "mail@fawkes100.de", "123456"),findResult.get());
assertEquals(new User("FawKes100", "mail@fawkes100.de", "123456"),findResult.get());
//Situation 3: No user with the required name is present
findResult = userRepository.findByUsername("fawkes1001");
assertFalse(findResult.isPresent());
}
@Test
void test_existsByMail() {
//Situation 1: invalid email format should not matter
assertFalse(userRepository.existsByEmail("FawKes100"));
//Situation 2: No user exists with such a mail
assertFalse(userRepository.existsByEmail("mail@fawkes100.de"));
//persist a user to the database, so a user is present
testEntityManager.persist(new User("FawKes100", "mail@fawkes100.de", "123456"));
//Situation 3: User with this mail exists
assertTrue(userRepository.existsByEmail("mail@fawkes100.de"));
//Situation 4: No user exists with such a mail (non-empty db)
assertFalse(userRepository.existsByEmail("mail2@fawkes100.de"));
}
@Test
void test_existsByUsername() {
//Situation 1: Empty database
assertFalse(userRepository.existsByUsername("FawKes100"));
//persist a user to the database, so a user is present
testEntityManager.persist(new User("FawKes100", "mail@fawkes100.de", "123456"));
//Situation 3: User with this name exists
assertTrue(userRepository.existsByUsername("FawKes100"));
//Situation 4: No user exists with such a mail (non-empty db)
assertFalse(userRepository.existsByUsername("FawKes101"));
}
@Test
void test_deleteUserByName() {
//persist a user to the database, so a user is present
User user = testEntityManager.persist(new User("FawKes100", "mail@fawkes100.de", "123456"));
User user1 = testEntityManager.persist(new User("FawKes101", "mail@fawkes101.de", "123456"));
userRepository.deleteByUsername("FawKes100");
assertThat(testEntityManager.find(User.class, user.getId())).isNull();
assertThat(testEntityManager.find(User.class, user1.getId())).isNotNull();
}
@Test
void test_countUsers() {
assertEquals(0, userRepository.countUsers());
testEntityManager.persist(new User("FawKes100", "mail@fawkes100.de", "123456"));
assertEquals(1, userRepository.countUsers());
}
}