From 681ebaac4e54f6c02d02211e9fd9851f78fcf877 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Mon, 2 Sep 2019 08:46:07 +0200 Subject: [PATCH] OO-4150: absence category are not mandatory --- .../lecture/manager/AbsenceNoticeDAO.java | 2 +- .../lecture/manager/AbsenceNoticeDAOTest.java | 48 +++++++++++++++++-- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/olat/modules/lecture/manager/AbsenceNoticeDAO.java b/src/main/java/org/olat/modules/lecture/manager/AbsenceNoticeDAO.java index 7ef01982dea..14fb26c8632 100644 --- a/src/main/java/org/olat/modules/lecture/manager/AbsenceNoticeDAO.java +++ b/src/main/java/org/olat/modules/lecture/manager/AbsenceNoticeDAO.java @@ -208,7 +208,7 @@ public class AbsenceNoticeDAO { public List<AbsenceNoticeInfos> search(AbsenceNoticeSearchParameters searchParams, boolean absenceDefaultAuthorized) { QueryBuilder sb = new QueryBuilder(512); sb.append("select notice from absencenotice as notice") - .append(" inner join fetch notice.absenceCategory as category") + .append(" left join fetch notice.absenceCategory as category") .append(" inner join fetch notice.identity as aIdent") .append(" inner join fetch aIdent.user as aUser"); if(!searchParams.getTypes().isEmpty()) { diff --git a/src/test/java/org/olat/modules/lecture/manager/AbsenceNoticeDAOTest.java b/src/test/java/org/olat/modules/lecture/manager/AbsenceNoticeDAOTest.java index 02bc9b8c2cc..9c085c4c6c7 100644 --- a/src/test/java/org/olat/modules/lecture/manager/AbsenceNoticeDAOTest.java +++ b/src/test/java/org/olat/modules/lecture/manager/AbsenceNoticeDAOTest.java @@ -211,17 +211,59 @@ public class AbsenceNoticeDAOTest extends OlatTestCase { Assert.assertTrue(collisions.isEmpty()); } + /** + * Search absences + */ @Test public void searchAbsenceNotice() { + Date now = new Date(); Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("absent-3"); - - Date start = CalendarUtils.startOfDay(new Date()); - Date end = CalendarUtils.endOfDay(new Date()); + Date start = CalendarUtils.startOfDay(now); + Date end = CalendarUtils.endOfDay(now); AbsenceNotice notice = absenceNoticeDao.createAbsenceNotice(identity, AbsenceNoticeType.absence, AbsenceNoticeTarget.allentries, start, end, null, null, null, null, null); dbInstance.commitAndCloseSession(); + + AbsenceNoticeSearchParameters searchParams = new AbsenceNoticeSearchParameters(); + List<AbsenceNoticeInfos> foundNotices = absenceNoticeDao.search(searchParams, true); + Assert.assertNotNull(foundNotices); + Assert.assertFalse(foundNotices.isEmpty()); + long count = foundNotices.stream() + .filter(n -> notice.equals(n.getAbsenceNotice())).count(); + Assert.assertEquals(1, count); + } + + /** + * Search the absence of a participant + */ + @Test + public void searchAbsenceNotice_allentries() { + Date now = new Date(); + Calendar cal = Calendar.getInstance(); + cal.setTime(now); + cal.set(Calendar.HOUR_OF_DAY, 10); + Date startLecture = cal.getTime(); + cal.set(Calendar.HOUR_OF_DAY, 14); + Date endLecture = cal.getTime(); + + Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("absent-3"); + RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry(); + LectureBlock lectureBlock = createMinimalLectureBlock(entry, startLecture, endLecture); + // create the participant's relation (lecture block use repo entry group, participant is participant in this group) + repositoryEntryRelationDao.addRole(identity, entry, GroupRoles.participant.name()); + Group defGroup = repositoryEntryRelationDao.getDefaultGroup(lectureBlock.getEntry()); + lectureBlockDao.addGroupToLectureBlock(lectureBlock, defGroup); + dbInstance.commit(); + + Date start = CalendarUtils.startOfDay(now); + Date end = CalendarUtils.endOfDay(now); + AbsenceNotice notice = absenceNoticeDao.createAbsenceNotice(identity, AbsenceNoticeType.absence, AbsenceNoticeTarget.allentries, + start, end, null, null, null, null, null); + dbInstance.commitAndCloseSession(); + AbsenceNoticeSearchParameters searchParams = new AbsenceNoticeSearchParameters(); + searchParams.setParticipant(identity); List<AbsenceNoticeInfos> foundNotices = absenceNoticeDao.search(searchParams, true); Assert.assertNotNull(foundNotices); Assert.assertFalse(foundNotices.isEmpty()); -- GitLab