Skip to content
Snippets Groups Projects
Commit 61fb9073 authored by srosse's avatar srosse
Browse files

OO-1944: fix overlap method, add unit tests

parent 5fe0d3e1
No related branches found
No related tags found
No related merge requests found
...@@ -144,14 +144,14 @@ public class GoToMeetingDAO { ...@@ -144,14 +144,14 @@ public class GoToMeetingDAO {
return query.getResultList(); 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(); StringBuilder sb = new StringBuilder();
sb.append("select meeting from gotomeeting meeting") sb.append("select meeting from gotomeeting meeting")
.append(" inner join meeting.organizer organizer on organizer.key=:organizerKey") .append(" inner join meeting.organizer organizer on organizer.key=:organizerKey")
.append(" where meeting.type=:type") .append(" where meeting.type=:type")
.append(" and ((meeting.startDate<:start and meeting.endDate>:start)") .append(" and ((meeting.startDate<=:start and meeting.endDate>=:start)")
.append(" or (meeting.startDate<:end and meeting.endDate>:end)") .append(" or (meeting.startDate<=:end and meeting.endDate>=:end)")
.append(" or (meeting.startDate>:start and meeting.endDate<:end))"); .append(" or (meeting.startDate>=:start and meeting.endDate<=:end))");
List<GoToMeeting> meetings = dbInstance.getCurrentEntityManager() List<GoToMeeting> meetings = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), GoToMeeting.class) .createQuery(sb.toString(), GoToMeeting.class)
......
...@@ -125,7 +125,7 @@ public class GoToMeetingManagerImpl implements GoToMeetingManager { ...@@ -125,7 +125,7 @@ public class GoToMeetingManagerImpl implements GoToMeetingManager {
} }
public boolean checkOrganizerAvailability(GoToOrganizer organizer, Date start, Date end) { 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(); return meetings.isEmpty();
} }
......
...@@ -33,6 +33,12 @@ import org.junit.Test; ...@@ -33,6 +33,12 @@ import org.junit.Test;
*/ */
public class GoToTimezoneIDsTest { public class GoToTimezoneIDsTest {
/**
*
* This only test if all the time zone defined in GoToMeeting are avaliable in Java.
*
* @throws JSONException
*/
@Test @Test
public void timeZoneIds() throws JSONException { public void timeZoneIds() throws JSONException {
for(String id:GoToTimezoneIDs.TIMEZONE_IDS) { for(String id:GoToTimezoneIDs.TIMEZONE_IDS) {
......
...@@ -28,6 +28,8 @@ import org.junit.Test; ...@@ -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> * Initial date: 23.03.2016<br>
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
......
...@@ -103,9 +103,87 @@ public class GoToMeetingDAOTest extends OlatTestCase { ...@@ -103,9 +103,87 @@ public class GoToMeetingDAOTest extends OlatTestCase {
Assert.assertTrue(meetings.contains(training)); 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 @Test
public void getMeetingsOverlapp() { public void getMeetingsOverlap() {
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry(); RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
String username = UUID.randomUUID().toString(); String username = UUID.randomUUID().toString();
...@@ -118,6 +196,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { ...@@ -118,6 +196,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
cal.set(2016, 8, 12, 12, 0, 0); cal.set(2016, 8, 12, 12, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
Date start = cal.getTime(); Date start = cal.getTime();
cal.set(2016, 8, 12, 18, 0, 0); cal.set(2016, 8, 12, 18, 0, 0);
Date end = cal.getTime(); Date end = cal.getTime();
...@@ -128,7 +207,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { ...@@ -128,7 +207,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
Assert.assertNotNull(training); Assert.assertNotNull(training);
//check organizer availability (same date) //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.assertNotNull(overlaps);
Assert.assertEquals(1, overlaps.size()); Assert.assertEquals(1, overlaps.size());
...@@ -137,7 +216,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { ...@@ -137,7 +216,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
Date start_1 = cal.getTime(); Date start_1 = cal.getTime();
cal.set(2016, 8, 12, 14, 0, 0); cal.set(2016, 8, 12, 14, 0, 0);
Date end_1 = cal.getTime(); 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()); Assert.assertEquals(1, overlaps_1.size());
//check organizer availability (start overlap) //check organizer availability (start overlap)
...@@ -145,7 +224,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { ...@@ -145,7 +224,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
Date start_2 = cal.getTime(); Date start_2 = cal.getTime();
cal.set(2016, 8, 12, 20, 0, 0); cal.set(2016, 8, 12, 20, 0, 0);
Date end_2 = cal.getTime(); 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()); Assert.assertEquals(1, overlaps_2.size());
//check organizer availability (within) //check organizer availability (within)
...@@ -153,7 +232,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { ...@@ -153,7 +232,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
Date start_3 = cal.getTime(); Date start_3 = cal.getTime();
cal.set(2016, 8, 12, 15, 0, 0); cal.set(2016, 8, 12, 15, 0, 0);
Date end_3 = cal.getTime(); 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.assertNotNull(overlaps_3);
Assert.assertEquals(1, overlaps_3.size()); Assert.assertEquals(1, overlaps_3.size());
...@@ -162,7 +241,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { ...@@ -162,7 +241,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
Date start_4 = cal.getTime(); Date start_4 = cal.getTime();
cal.set(2016, 8, 12, 22, 0, 0); cal.set(2016, 8, 12, 22, 0, 0);
Date end_4 = cal.getTime(); 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.assertNotNull(overlaps_4);
Assert.assertEquals(1, overlaps_4.size()); Assert.assertEquals(1, overlaps_4.size());
...@@ -171,7 +250,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { ...@@ -171,7 +250,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
Date start_5 = cal.getTime(); Date start_5 = cal.getTime();
cal.set(2016, 8, 12, 11, 0, 0); cal.set(2016, 8, 12, 11, 0, 0);
Date end_5 = cal.getTime(); 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()); Assert.assertEquals(0, overlaps_5.size());
//check organizer availability (in future) //check organizer availability (in future)
...@@ -179,7 +258,7 @@ public class GoToMeetingDAOTest extends OlatTestCase { ...@@ -179,7 +258,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
Date start_6= cal.getTime(); Date start_6= cal.getTime();
cal.set(2016, 8, 12, 21, 0, 0); cal.set(2016, 8, 12, 21, 0, 0);
Date end_6 = cal.getTime(); 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()); Assert.assertEquals(0, overlaps_6.size());
} }
} }
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
package org.olat.modules.gotomeeting.manager; package org.olat.modules.gotomeeting.manager;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.UUID; import java.util.UUID;
import org.junit.Assert; import org.junit.Assert;
...@@ -79,7 +80,36 @@ public class GoToRegistrantDAOTest extends OlatTestCase { ...@@ -79,7 +80,36 @@ public class GoToRegistrantDAOTest extends OlatTestCase {
GoToRegistrant reloadRegistrant = registrantDao.getRegistrant(training, trainee); GoToRegistrant reloadRegistrant = registrantDao.getRegistrant(training, trainee);
Assert.assertNotNull(reloadRegistrant); Assert.assertNotNull(reloadRegistrant);
Assert.assertEquals(registrant, 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));
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment