TSK-1964: added UserBuilder to test-api

This commit is contained in:
Mustapha Zorgati 2022-10-11 09:06:16 +02:00
parent 2dbdd874d5
commit 50915ef4e1
2 changed files with 169 additions and 0 deletions

View File

@ -0,0 +1,90 @@
package pro.taskana.testapi.builder;
import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.common.api.exceptions.NotAuthorizedException;
import pro.taskana.user.api.UserService;
import pro.taskana.user.api.exceptions.UserAlreadyExistException;
import pro.taskana.user.api.models.User;
import pro.taskana.user.internal.models.UserImpl;
public class UserBuilder implements EntityBuilder<User, UserService> {
private final UserImpl testUser = new UserImpl();
private UserBuilder() {}
public static UserBuilder newUser() {
return new UserBuilder();
}
public UserBuilder id(String id) {
testUser.setId(id);
return this;
}
public UserBuilder firstName(String firstName) {
testUser.setFirstName(firstName);
return this;
}
public UserBuilder lastName(String lastName) {
testUser.setLastName(lastName);
return this;
}
public UserBuilder fullName(String fullName) {
testUser.setFullName(fullName);
return this;
}
public UserBuilder longName(String longName) {
testUser.setLongName(longName);
return this;
}
public UserBuilder email(String email) {
testUser.setEmail(email);
return this;
}
public UserBuilder phone(String phone) {
testUser.setPhone(phone);
return this;
}
public UserBuilder mobilePhone(String mobilePhone) {
testUser.setMobilePhone(mobilePhone);
return this;
}
public UserBuilder orgLevel1(String orgLevel1) {
testUser.setOrgLevel1(orgLevel1);
return this;
}
public UserBuilder orgLevel2(String orgLevel2) {
testUser.setOrgLevel2(orgLevel2);
return this;
}
public UserBuilder orgLevel3(String orgLevel3) {
testUser.setOrgLevel3(orgLevel3);
return this;
}
public UserBuilder orgLevel4(String orgLevel4) {
testUser.setOrgLevel4(orgLevel4);
return this;
}
public UserBuilder data(String data) {
testUser.setData(data);
return this;
}
@Override
public User buildAndStore(UserService userService)
throws UserAlreadyExistException, InvalidArgumentException, NotAuthorizedException {
return userService.createUser(testUser);
}
}

View File

@ -0,0 +1,79 @@
package pro.taskana.testapi.builder;
import static org.assertj.core.api.Assertions.assertThat;
import static pro.taskana.testapi.builder.UserBuilder.newUser;
import org.junit.jupiter.api.Test;
import pro.taskana.testapi.TaskanaInject;
import pro.taskana.testapi.TaskanaIntegrationTest;
import pro.taskana.testapi.security.WithAccessId;
import pro.taskana.user.api.UserService;
import pro.taskana.user.api.models.User;
@TaskanaIntegrationTest
class UserBuilderTest {
@TaskanaInject UserService userService;
@WithAccessId(user = "businessadmin")
@Test
void should_PersistUser_When_UsingUserBuilder() throws Exception {
User user =
newUser().id("user-1").firstName("Max").lastName("Mustermann").buildAndStore(userService);
User userInDatabase = userService.getUser("user-1");
assertThat(userInDatabase).isNotSameAs(user).isEqualTo(user);
}
@Test
void should_PersistUserEntityAsUser_When_UsingUserBuilder() throws Exception {
User user =
newUser()
.id("user-2")
.firstName("Max")
.lastName("Mustermann")
.buildAndStore(userService, "businessadmin");
User userInDatabase = userService.getUser("user-2");
assertThat(userInDatabase).isNotSameAs(user).isEqualTo(user);
}
@WithAccessId(user = "businessadmin")
@Test
void should_PopulateUserEntity_When_UsingEveryBuilderFunction() throws Exception {
final User user =
newUser()
.id("max-mustermann")
.firstName("Max")
.lastName("Mustermann")
.fullName("Max Mustermann")
.longName("Mustermann, Max")
.email("max@mustermann.de")
.phone("123456798")
.mobilePhone("987654321")
.orgLevel1("org1")
.orgLevel2("org2")
.orgLevel3("org3")
.orgLevel4("org4")
.data("this is some extra data about max")
.buildAndStore(userService);
User expectedUser = userService.newUser();
expectedUser.setId("max-mustermann");
expectedUser.setFirstName("Max");
expectedUser.setLastName("Mustermann");
expectedUser.setFullName("Max Mustermann");
expectedUser.setLongName("Mustermann, Max");
expectedUser.setEmail("max@mustermann.de");
expectedUser.setPhone("123456798");
expectedUser.setMobilePhone("987654321");
expectedUser.setOrgLevel1("org1");
expectedUser.setOrgLevel2("org2");
expectedUser.setOrgLevel3("org3");
expectedUser.setOrgLevel4("org4");
expectedUser.setData("this is some extra data about max");
assertThat(user).hasNoNullFieldsOrProperties().isEqualTo(expectedUser);
}
}