package de.dhbw.humbuch.test; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException; import java.util.Calendar; import java.util.Date; import de.dhbw.humbuch.model.entity.BorrowedMaterial; import de.dhbw.humbuch.model.entity.Category; import de.dhbw.humbuch.model.entity.Grade; import de.dhbw.humbuch.model.entity.SchoolYear; import de.dhbw.humbuch.model.entity.SettingsEntry; import de.dhbw.humbuch.model.entity.SchoolYear.Term; import de.dhbw.humbuch.model.entity.Student; import de.dhbw.humbuch.model.entity.TeachingMaterial; import de.dhbw.humbuch.model.entity.User; import de.dhbw.humbuch.util.PasswordHash; public class TestUtils { public static final String USERNAME = "USERNAME"; public static final String PASSWORD = "PASSWORD"; public static final String PASSWORD_HASH = "HASH"; public static int rInt() { return (int) (Math.random() * 10000); } public static String rStr() { return "" + rInt(); } public static Date todayPlusDays(int days) { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.DATE, days); return calendar.getTime(); } public static User user(String username, String password) { try { return new User.Builder(username, PasswordHash.createHash(password)) .email(rStr() + "@" + rStr() + "." + rStr()).build(); } catch (NoSuchAlgorithmException | InvalidKeySpecException e) { e.printStackTrace(); return new User.Builder(USERNAME, PASSWORD_HASH).email( rStr() + "@" + rStr() + "." + rStr()).build(); } } public static User randomUser() { return user(rStr(), rStr()); } public static User standardUser() { return user(USERNAME, PASSWORD); } public static Category category() { return new Category.Builder(rStr()).build(); } public static Grade grade(int grade) { Grade gradeEntity = new Grade.Builder(grade, "").build(); gradeEntity.setId(grade); return gradeEntity; } public static SettingsEntry settingsEntry() { return new SettingsEntry.Builder(rStr(), rStr(), rStr()).build(); } public static SchoolYear schoolYear(int fromDays, int endFirstTermDays, int beginSecondTermDays, int toDays) { SchoolYear schoolYear = new SchoolYear.Builder(rStr(), todayPlusDays(fromDays), todayPlusDays(toDays)) .endFirstTerm(todayPlusDays(endFirstTermDays)) .beginSecondTerm(todayPlusDays(beginSecondTermDays)).build(); return schoolYear; } public static SchoolYear schoolYearFirstTermNotStarted() { return schoolYear(1, 2, 3, 4); } public static SchoolYear schoolYearFirstTermStarted() { return schoolYear(-1, 1, 1, 2); } public static SchoolYear schoolYearFirstTermEnded() { return schoolYear(-2, -1, 1, 2); } public static SchoolYear schoolYearSecondTermStarted() { return schoolYear(-3, -2, -1, 1); } public static SchoolYear schoolYearSecondTermEnded() { return schoolYear(-9, -8, -7, -6); } public static SchoolYear schoolYearFirstTermEndedPlusDays(int days) { return schoolYear(-days - 1, -days, 1, 2); } public static SchoolYear schoolYearSecondTermStartedPlusDays(int days) { return schoolYear(-days - 2, -days - 1, -days, 1); } public static SchoolYear schoolYearSecondTermEndedPlusDays(int days) { return schoolYear(-days - 3, -days - 2, -days - 1, -days); } public static Student studentInGrade(int grade) { Grade gradeEntity = new Grade.Builder(grade, "").build(); gradeEntity.setId(grade); Student student = new Student.Builder(rInt(), rStr(), rStr(), null, gradeEntity).build(); return student; } public static TeachingMaterial teachingMaterialInBothTermsOfGrade(int grade) { TeachingMaterial teachingMaterial = new TeachingMaterial.Builder( category(), rStr(), null, todayPlusDays(-20)).fromGrade(grade) .fromTerm(Term.FIRST).toGrade(grade).toTerm(Term.SECOND) .build(); return teachingMaterial; } public static TeachingMaterial teachingMaterialInFirstTermOfGrade(int grade) { TeachingMaterial teachingMaterial = new TeachingMaterial.Builder( category(), rStr(), null, todayPlusDays(-20)).fromGrade(grade) .fromTerm(Term.FIRST).toGrade(grade).toTerm(Term.FIRST).build(); return teachingMaterial; } public static TeachingMaterial teachingMaterialInSecondTermOfGrade(int grade) { TeachingMaterial teachingMaterial = new TeachingMaterial.Builder( category(), rStr(), null, todayPlusDays(-20)).fromGrade(grade) .fromTerm(Term.SECOND).toGrade(grade).toTerm(Term.SECOND) .build(); return teachingMaterial; } public static TeachingMaterial teachingMaterialInNoTerm(int grade) { TeachingMaterial teachingMaterial = new TeachingMaterial.Builder( category(), rStr(), null, todayPlusDays(-20)).build(); return teachingMaterial; } public static BorrowedMaterial borrowedMaterialReceivedInPast( Student student, TeachingMaterial teachingMaterial) { BorrowedMaterial borrowedMaterial = new BorrowedMaterial.Builder( student, teachingMaterial, todayPlusDays(-25)).received(true) .build(); return borrowedMaterial; } public static BorrowedMaterial borrowedMaterialReceivedInPastBorrowUntil( Student student, TeachingMaterial teachingMaterial, Date borrowUntil) { BorrowedMaterial borrowedMaterial = new BorrowedMaterial.Builder( student, teachingMaterial, todayPlusDays(-25)) .borrowUntil(borrowUntil).received(true).build(); return borrowedMaterial; } }