Bezugnehmend auf: https://www.java-forum.org/thema/repository-wird-null-im-test.199617/
und den hier befindlichen Beiträgen.
Meine Test sieht jetzt wie folgt aus:
Nachdem dieser Test ausgeführt wurde werden aber die erzeugten Datensätze nicht gelöscht? Soweit ich weis wird nach der Funktion ein commit, wenn keine Exception aufgetreten ist, ausgeführt, da @Transactional gekennzeichnet.
Bei einer Exception wird ein rollback ausgeführt. Da keine Exception geworfen wurde, müssten doch eigentlich die beiden letzten Zeilen auch ausgeführt werden?
und den hier befindlichen Beiträgen.
Meine Test sieht jetzt wie folgt aus:
Java:
@Test
@Transactional
void testUpdateUserWithValidData() throws ResourceNotFoundException, NullPointerException, DuplicateException {
// create user
String firstname = "firstname";
String lastname = "lastname";
String email = "email@email.com";
String password = "password";
User user = new User(
firstname, // password
lastname, // lastname
email, // email
password // password
);
User createdUser = userService.createUser(null, user);
Optional<User> foundUser = userService.findUserById(createdUser.getId());
assertTrue( foundUser.isPresent(), "testUpdateUserWithValidData(): User (" + user + ") not stored");
// create updater
String creator_firstname = "creator firstname";
String creator_lastname = "creator lastname";
String creator_email = "creator_email@email.com";
String creator_password = "creator password";
User creator = new User(
creator_firstname, // password
creator_lastname, // lastname
creator_email, // email
creator_password // password
);
User creatorUser = userService.createUser(null, creator);
Optional<User> foundCreator = userService.findUserById(creatorUser.getId());
assertTrue( foundCreator.isPresent(), "testUpdateUserWithValidData(): Creator (" + creator + ") not stored");
// update user
String updatedFirstname = "updated firstname";
String updatedLastname = "updated lastname";
String updatedEmail = "new_email@email.com";
String updatedPassword = "new password";
User updatedUserData = new User(
updatedFirstname, // password
updatedLastname, // lastname
updatedEmail, // email
updatedPassword // password
);
User updatedUser = userService.updateUser(foundCreator.get(), foundUser.get().getId(), updatedUserData);
Optional<User> foundUpdatedUser = userService.findUserById(updatedUser.getId());
assertTrue( foundUpdatedUser.isPresent(), "testUpdateUserWithValidData(): Updated User (" + updatedUser + ") not stored");
assertEquals(foundUser.get().getId(), foundUpdatedUser.get().getId(), "testCreateUserWithMinimalistValidData(): User (" + foundUpdatedUser.get() + ") ID not identical with " + foundUser.get().getId());
assertNull(foundUpdatedUser.get().getCreatedBy(), "testUpdateUserWithValidData(): Updated User (" + foundUpdatedUser.get() + ") creator was set to null");
assertNotNull(foundUpdatedUser.get().getCreatedAt(), "testUpdateUserWithValidData(): Updated User (" + foundUpdatedUser.get() + ") creator date was set to null");
assertEquals(foundCreator.get().getId(), foundUpdatedUser.get().getUpdatedBy().getId(), "testUpdateUserWithValidData(): Updated User (" + foundUpdatedUser.get().getUpdatedBy() + ") updater was not set to " + foundCreator.get().getId());
assertNotNull(foundUpdatedUser.get().getUpdatedAt(), "testUpdateUserWithValidData(): Updated User (" + foundUpdatedUser.get() + ") updater date was not set");
assertNull(foundUpdatedUser.get().getDeletedBy(), "testUpdateUserWithValidData(): updated User (" + foundUpdatedUser.get() + ") deleter was set");
assertNull(foundUpdatedUser.get().getDeletedAt(), "testUpdateUserWithValidData(): Updated User (" + foundUpdatedUser.get() + ") deleter date was set");
assertEquals(updatedFirstname, foundUpdatedUser.get().getFirstname(), "testCreateUserWithMinimalistValidData(): User (" + foundUpdatedUser.get() + ") Firstname not identical with " + updatedFirstname);
assertEquals(updatedLastname, foundUpdatedUser.get().getLastname(), "testCreateUserWithMinimalistValidData(): User (" + foundUpdatedUser.get() + ") Lastname not identical with " + updatedLastname);
assertEquals(updatedEmail, foundUpdatedUser.get().getEmail(), "testCreateUserWithMinimalistValidData(): User (" + foundUpdatedUser.get() + ") Email not identical with " + updatedEmail);
assertEquals(updatedPassword, foundUpdatedUser.get().getPassword(), "testCreateUserWithMinimalistValidData(): User (" + foundUpdatedUser.get() + ") Password not identical with " + updatedPassword);
// clean up
userService.removeUser(foundCreator.get().getId());
userService.removeUser(foundUser.get().getId());
}
Nachdem dieser Test ausgeführt wurde werden aber die erzeugten Datensätze nicht gelöscht? Soweit ich weis wird nach der Funktion ein commit, wenn keine Exception aufgetreten ist, ausgeführt, da @Transactional gekennzeichnet.
Bei einer Exception wird ein rollback ausgeführt. Da keine Exception geworfen wurde, müssten doch eigentlich die beiden letzten Zeilen auch ausgeführt werden?