diff --git a/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAO.java b/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAO.java index 2ae03bc376633aa8f15c0a006da46953b40bdf81..d42e298a88a3fb59ccff28edf243953383ff7944 100644 --- a/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAO.java +++ b/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAO.java @@ -144,14 +144,14 @@ public class GoToMeetingDAO { return query.getResultList(); } - public List<GoToMeeting> getMeetingsOverlapp(GoToType type, GoToOrganizer organizer, Date start, Date end) { + public List<GoToMeeting> getMeetingsOverlap(GoToType type, GoToOrganizer organizer, Date start, Date end) { StringBuilder sb = new StringBuilder(); sb.append("select meeting from gotomeeting meeting") .append(" inner join meeting.organizer organizer on organizer.key=:organizerKey") .append(" where meeting.type=:type") - .append(" and ((meeting.startDate<:start and meeting.endDate>:start)") - .append(" or (meeting.startDate<:end and meeting.endDate>:end)") - .append(" or (meeting.startDate>:start and meeting.endDate<:end))"); + .append(" and ((meeting.startDate<=:start and meeting.endDate>=:start)") + .append(" or (meeting.startDate<=:end and meeting.endDate>=:end)") + .append(" or (meeting.startDate>=:start and meeting.endDate<=:end))"); List<GoToMeeting> meetings = dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), GoToMeeting.class) diff --git a/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingManagerImpl.java b/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingManagerImpl.java index 923339b7811e3536d699a1bf09de48341eb65c92..656a87012e539aa7efdbe0e6947a07f38448c173 100644 --- a/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingManagerImpl.java +++ b/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingManagerImpl.java @@ -125,7 +125,7 @@ public class GoToMeetingManagerImpl implements GoToMeetingManager { } public boolean checkOrganizerAvailability(GoToOrganizer organizer, Date start, Date end) { - List<GoToMeeting> meetings = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start, end); + List<GoToMeeting> meetings = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start, end); return meetings.isEmpty(); } diff --git a/src/test/java/org/olat/modules/gotomeeting/GoToTimezoneIDsTest.java b/src/test/java/org/olat/modules/gotomeeting/GoToTimezoneIDsTest.java index fa6e954709a97668ab9e1c8a498b0791c20f21a7..f8b15728db73dcde3e8ae33b368442cbf8751f6d 100644 --- a/src/test/java/org/olat/modules/gotomeeting/GoToTimezoneIDsTest.java +++ b/src/test/java/org/olat/modules/gotomeeting/GoToTimezoneIDsTest.java @@ -33,6 +33,12 @@ import org.junit.Test; */ public class GoToTimezoneIDsTest { + /** + * + * This only test if all the time zone defined in GoToMeeting are avaliable in Java. + * + * @throws JSONException + */ @Test public void timeZoneIds() throws JSONException { for(String id:GoToTimezoneIDs.TIMEZONE_IDS) { diff --git a/src/test/java/org/olat/modules/gotomeeting/manager/GoToJsonUtilTest.java b/src/test/java/org/olat/modules/gotomeeting/manager/GoToJsonUtilTest.java index 0980e4e4b93a45bfc2399dfd646c53e3a6987618..5f8a4bed9317924d15d77b020a05d4c24662c8be 100644 --- a/src/test/java/org/olat/modules/gotomeeting/manager/GoToJsonUtilTest.java +++ b/src/test/java/org/olat/modules/gotomeeting/manager/GoToJsonUtilTest.java @@ -28,6 +28,8 @@ import org.junit.Test; /** + * + * This mostly test that the date returned by the GoTo server are parseable. * * Initial date: 23.03.2016<br> * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com diff --git a/src/test/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAOTest.java b/src/test/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAOTest.java index 9a51ad5a0e58198c0dcc45094cd924dc3deaf000..4434925fcaa03d66a2f97557b733f446bbb71a21 100644 --- a/src/test/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAOTest.java +++ b/src/test/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAOTest.java @@ -103,9 +103,87 @@ public class GoToMeetingDAOTest extends OlatTestCase { Assert.assertTrue(meetings.contains(training)); } + @Test + public void loadMeetingByKey() { + RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry(); + + String username = UUID.randomUUID().toString(); + String accessToken = UUID.randomUUID().toString(); + String organizerKey = UUID.randomUUID().toString(); + + GoToOrganizer organizer = organizerDao + .createOrganizer(null, username, accessToken, organizerKey, "Levinus", "Memminger", null, null, 10l, null); + Assert.assertNotNull(organizer); + + Date start = new Date(); + Date end = new Date(); + String trainingKey = Long.toString(CodeHelper.getForeverUniqueID()); + GoToMeeting training = meetingDao.createTraining("Training by key", null, "Load training by key", trainingKey, start, end, + organizer, entry, "d9915", null); + dbInstance.commitAndCloseSession(); + Assert.assertNotNull(training); + + GoToMeeting reloadedTraining = meetingDao.loadMeetingByKey(training.getKey()); + Assert.assertNotNull(reloadedTraining); + Assert.assertEquals(training, reloadedTraining); + } + + @Test + public void loadMeetingByExternalId() { + RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry(); + + String username = UUID.randomUUID().toString(); + String accessToken = UUID.randomUUID().toString(); + String organizerKey = UUID.randomUUID().toString(); + String externalId = UUID.randomUUID().toString(); + + GoToOrganizer organizer = organizerDao + .createOrganizer(null, username, accessToken, organizerKey, "Levinus", "Memminger", null, null, 10l, null); + Assert.assertNotNull(organizer); + + Date start = new Date(); + Date end = new Date(); + String trainingKey = Long.toString(CodeHelper.getForeverUniqueID()); + GoToMeeting training = meetingDao.createTraining("Training by key", externalId, "Load training by external key", trainingKey, start, end, + organizer, entry, "d9916", null); + dbInstance.commitAndCloseSession(); + Assert.assertNotNull(training); + + GoToMeeting reloadedTraining = meetingDao.loadMeetingByExternalId(externalId); + Assert.assertNotNull(reloadedTraining); + Assert.assertEquals(training, reloadedTraining); + } + + @Test + public void countMeetingsOrganizedBy() { + RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry(); + + String username = UUID.randomUUID().toString(); + String accessToken = UUID.randomUUID().toString(); + String organizerKey = UUID.randomUUID().toString(); + String externalId = UUID.randomUUID().toString(); + + GoToOrganizer organizer = organizerDao + .createOrganizer(null, username, accessToken, organizerKey, "Hans", "Pleydenwurff", null, null, 10l, null); + Assert.assertNotNull(organizer); + + Date start = new Date(); + Date end = new Date(); + String trainingKey = Long.toString(CodeHelper.getForeverUniqueID()); + GoToMeeting training = meetingDao.createTraining("Training by key", externalId, "Count the meetings organized by this organizer", + trainingKey, start, end, organizer, entry, "d9916", null); + dbInstance.commitAndCloseSession(); + Assert.assertNotNull(training); + + int countOrganizersMeetings = meetingDao.countMeetingsOrganizedBy(organizer); + Assert.assertEquals(1, countOrganizersMeetings); + } + /** + * Check different overlap scenario + */ @Test - public void getMeetingsOverlapp() { + public void getMeetingsOverlap() { RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry(); String username = UUID.randomUUID().toString(); @@ -118,6 +196,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { Calendar cal = Calendar.getInstance(); cal.set(2016, 8, 12, 12, 0, 0); + cal.set(Calendar.MILLISECOND, 0); Date start = cal.getTime(); cal.set(2016, 8, 12, 18, 0, 0); Date end = cal.getTime(); @@ -128,7 +207,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { Assert.assertNotNull(training); //check organizer availability (same date) - List<GoToMeeting> overlaps = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start, end); + List<GoToMeeting> overlaps = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start, end); Assert.assertNotNull(overlaps); Assert.assertEquals(1, overlaps.size()); @@ -137,7 +216,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { Date start_1 = cal.getTime(); cal.set(2016, 8, 12, 14, 0, 0); Date end_1 = cal.getTime(); - List<GoToMeeting> overlaps_1 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_1, end_1); + List<GoToMeeting> overlaps_1 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_1, end_1); Assert.assertEquals(1, overlaps_1.size()); //check organizer availability (start overlap) @@ -145,7 +224,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { Date start_2 = cal.getTime(); cal.set(2016, 8, 12, 20, 0, 0); Date end_2 = cal.getTime(); - List<GoToMeeting> overlaps_2 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_2, end_2); + List<GoToMeeting> overlaps_2 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_2, end_2); Assert.assertEquals(1, overlaps_2.size()); //check organizer availability (within) @@ -153,7 +232,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { Date start_3 = cal.getTime(); cal.set(2016, 8, 12, 15, 0, 0); Date end_3 = cal.getTime(); - List<GoToMeeting> overlaps_3 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_3, end_3); + List<GoToMeeting> overlaps_3 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_3, end_3); Assert.assertNotNull(overlaps_3); Assert.assertEquals(1, overlaps_3.size()); @@ -162,7 +241,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { Date start_4 = cal.getTime(); cal.set(2016, 8, 12, 22, 0, 0); Date end_4 = cal.getTime(); - List<GoToMeeting> overlaps_4 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_4, end_4); + List<GoToMeeting> overlaps_4 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_4, end_4); Assert.assertNotNull(overlaps_4); Assert.assertEquals(1, overlaps_4.size()); @@ -171,7 +250,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { Date start_5 = cal.getTime(); cal.set(2016, 8, 12, 11, 0, 0); Date end_5 = cal.getTime(); - List<GoToMeeting> overlaps_5 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_5, end_5); + List<GoToMeeting> overlaps_5 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_5, end_5); Assert.assertEquals(0, overlaps_5.size()); //check organizer availability (in future) @@ -179,7 +258,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { Date start_6= cal.getTime(); cal.set(2016, 8, 12, 21, 0, 0); Date end_6 = cal.getTime(); - List<GoToMeeting> overlaps_6 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_6, end_6); + List<GoToMeeting> overlaps_6 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_6, end_6); Assert.assertEquals(0, overlaps_6.size()); } } diff --git a/src/test/java/org/olat/modules/gotomeeting/manager/GoToRegistrantDAOTest.java b/src/test/java/org/olat/modules/gotomeeting/manager/GoToRegistrantDAOTest.java index 412fb867d658243f8e448012f2eae8134fb70b75..88b7ec85091e7ad5b913fce9698a3fc86c96a289 100644 --- a/src/test/java/org/olat/modules/gotomeeting/manager/GoToRegistrantDAOTest.java +++ b/src/test/java/org/olat/modules/gotomeeting/manager/GoToRegistrantDAOTest.java @@ -20,6 +20,7 @@ package org.olat.modules.gotomeeting.manager; import java.util.Date; +import java.util.List; import java.util.UUID; import org.junit.Assert; @@ -79,7 +80,36 @@ public class GoToRegistrantDAOTest extends OlatTestCase { GoToRegistrant reloadRegistrant = registrantDao.getRegistrant(training, trainee); Assert.assertNotNull(reloadRegistrant); Assert.assertEquals(registrant, reloadRegistrant); + } + + @Test + public void getRegistrants() { + String token = UUID.randomUUID().toString(); + Identity trainee = JunitTestHelper.createAndPersistIdentityAsRndUser("trainee-3"); + GoToOrganizer organizer = organizerDao + .createOrganizer(null, token, token, token, null, null, null, null, 10l, null); + Assert.assertNotNull(organizer); + + Date start = new Date(); + Date end = new Date(); + String trainingKey = Long.toString(CodeHelper.getForeverUniqueID()); + GoToMeeting training = meetingDao + .createTraining("New training", null, "Very interessant", trainingKey, start, end, organizer, null, null, null); + dbInstance.commit(); + + //create registrant + String registrantKey = Long.toString(CodeHelper.getForeverUniqueID()); + String joinUrl = "http://openolat.com/join/" + registrantKey; + String confirmUrl = "http://openolat.com/confirm/" + registrantKey; + GoToRegistrant registrant = registrantDao.createRegistrant(training, trainee, registrantKey, joinUrl, confirmUrl); + Assert.assertNotNull(registrant); + dbInstance.commit(); + + //load + List<GoToRegistrant> reloadRegistrants = registrantDao.getRegistrants(trainee, null, null, null); + Assert.assertNotNull(reloadRegistrants); + Assert.assertEquals(1, reloadRegistrants.size()); + Assert.assertEquals(registrant, reloadRegistrants.get(0)); } - }