From 2f78c5ebbfb3738e5c002740760b75d5258ba823 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6ckelmann?= Date: Tue, 7 Nov 2023 20:20:07 +0100 Subject: [PATCH] Tests for user-repository --- backend/src/main/java/core/entities/User.java | 4 +- .../java/core/users/UserRepositoryTests.java | 69 ++++++++++++++++++- 2 files changed, 69 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/core/entities/User.java b/backend/src/main/java/core/entities/User.java index 1f6c1f2..3b0849c 100644 --- a/backend/src/main/java/core/entities/User.java +++ b/backend/src/main/java/core/entities/User.java @@ -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); } } diff --git a/backend/src/test/java/core/users/UserRepositoryTests.java b/backend/src/test/java/core/users/UserRepositoryTests.java index 66e9ca4..65ce191 100644 --- a/backend/src/test/java/core/users/UserRepositoryTests.java +++ b/backend/src/test/java/core/users/UserRepositoryTests.java @@ -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 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()); + + } + }