FakeUser.java
package fr.avenirsesr.portfolio.api.infrastructure.adapter.seeder.fake;
import fr.avenirsesr.portfolio.api.domain.model.Student;
import fr.avenirsesr.portfolio.api.domain.model.Teacher;
import fr.avenirsesr.portfolio.api.domain.model.User;
import fr.avenirsesr.portfolio.api.domain.model.enums.EUserCategory;
import java.time.Instant;
import java.util.UUID;
import lombok.Getter;
public class FakeUser {
private static final FakerProvider faker = new FakerProvider();
private final User user;
@Getter private Student student;
@Getter private Teacher teacher;
private FakeUser(User user) {
this.user = user;
}
public static FakeUser create() {
return new FakeUser(
User.create(
UUID.fromString(faker.call().internet().uuid()),
faker.call().name().firstName(),
faker.call().name().lastName()));
}
public FakeUser withEmail() {
user.setEmail(faker.call().internet().emailAddress());
return this;
}
public FakeUser withStudent() {
var student = user.toStudent();
student.setBio(faker.call().lorem().characters(50, 255, true));
student.setProfilePicture(
faker.call().company().url()
+ "/"
+ getFakePictureFilename(user, EUserCategory.STUDENT, "profile"));
student.setCoverPicture(
faker.call().company().url()
+ "/"
+ getFakePictureFilename(user, EUserCategory.STUDENT, "cover"));
this.student = student;
user.setStudent(true);
return this;
}
public FakeUser withTeacher() {
var teacher = user.toTeacher();
teacher.setBio(faker.call().lorem().characters(50, 255, true));
teacher.setProfilePicture(
faker.call().company().url()
+ "/"
+ getFakePictureFilename(user, EUserCategory.TEACHER, "profile"));
teacher.setCoverPicture(
faker.call().company().url()
+ "/"
+ getFakePictureFilename(user, EUserCategory.TEACHER, "cover"));
this.teacher = teacher;
user.setTeacher(true);
return this;
}
public User toModel() {
return user;
}
private String getFakePictureFilename(
User user, EUserCategory userCategory, String prefixFileName) {
Instant instantNow = Instant.now();
return user.getId()
+ "_"
+ userCategory.name()
+ "_"
+ instantNow.toEpochMilli()
+ "_"
+ prefixFileName
+ "_picture.jpg";
}
}