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

OO-3271 : start assessment mode within lead time if in manual mode

parent 29726373
No related branches found
No related tags found
No related merge requests found
...@@ -163,7 +163,8 @@ public class AssessmentModeDAO { ...@@ -163,7 +163,8 @@ public class AssessmentModeDAO {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("select mode from courseassessmentmode mode where ") sb.append("select mode from courseassessmentmode mode where ")
.append(" (mode.beginWithLeadTime<=:now and mode.endWithFollowupTime>=:now and mode.manualBeginEnd=false)") .append(" (mode.beginWithLeadTime<=:now and mode.endWithFollowupTime>=:now")
.append(" and (mode.manualBeginEnd=false or (mode.manualBeginEnd=true and mode.leadTime>0)))")
.append(" or mode.statusString in ('").append(Status.leadtime.name()).append("','") .append(" or mode.statusString in ('").append(Status.leadtime.name()).append("','")
.append(Status.assessment.name()).append("','").append(Status.followup.name()).append("')"); .append(Status.assessment.name()).append("','").append(Status.followup.name()).append("')");
...@@ -182,7 +183,8 @@ public class AssessmentModeDAO { ...@@ -182,7 +183,8 @@ public class AssessmentModeDAO {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("select count(mode) from courseassessmentmode mode where ") sb.append("select count(mode) from courseassessmentmode mode where ")
.append(" mode.repositoryEntry.key=:repoKey and (") .append(" mode.repositoryEntry.key=:repoKey and (")
.append(" (mode.beginWithLeadTime<=:now and mode.endWithFollowupTime>=:now and mode.manualBeginEnd=false)") .append(" (mode.beginWithLeadTime<=:now and mode.endWithFollowupTime>=:now ")
.append(" and (mode.manualBeginEnd=false or (mode.manualBeginEnd=true and mode.leadTime>0)))")
.append(" or mode.statusString in ('").append(Status.leadtime.name()).append("','") .append(" or mode.statusString in ('").append(Status.leadtime.name()).append("','")
.append(Status.assessment.name()).append("','").append(Status.followup.name()).append("'))"); .append(Status.assessment.name()).append("','").append(Status.followup.name()).append("'))");
...@@ -203,7 +205,8 @@ public class AssessmentModeDAO { ...@@ -203,7 +205,8 @@ public class AssessmentModeDAO {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("select mode from courseassessmentmode mode where ") sb.append("select mode from courseassessmentmode mode where ")
.append(" mode.repositoryEntry.key=:repoKey and (") .append(" mode.repositoryEntry.key=:repoKey and (")
.append(" (mode.beginWithLeadTime<=:now and mode.endWithFollowupTime>=:now and mode.manualBeginEnd=false)") .append(" (mode.beginWithLeadTime<=:now and mode.endWithFollowupTime>=:now")
.append(" and (mode.manualBeginEnd=false or (mode.manualBeginEnd=true and mode.leadTime>0)))")
.append(" or mode.statusString in ('").append(Status.leadtime.name()).append("','") .append(" or mode.statusString in ('").append(Status.leadtime.name()).append("','")
.append(Status.assessment.name()).append("','").append(Status.followup.name()).append("'))"); .append(Status.assessment.name()).append("','").append(Status.followup.name()).append("'))");
......
...@@ -270,6 +270,142 @@ public class AssessmentModeManagerTest extends OlatTestCase { ...@@ -270,6 +270,142 @@ public class AssessmentModeManagerTest extends OlatTestCase {
Assert.assertTrue(currentModes.contains(mode)); Assert.assertTrue(currentModes.contains(mode));
} }
/**
* Manual without lead time -> not in the current list
*/
@Test
public void loadCurrentAssessmentModes_manualNow() {
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
//manual now
AssessmentMode mode = assessmentModeMgr.createAssessmentMode(entry);
mode.setName("Assessment to load");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.add(Calendar.HOUR_OF_DAY, -1);
mode.setBegin(cal.getTime());
cal.add(Calendar.HOUR_OF_DAY, 2);
mode.setEnd(cal.getTime());
mode.setTargetAudience(Target.course);
mode.setManualBeginEnd(true);
mode = assessmentModeMgr.persist(mode);
dbInstance.commitAndCloseSession();
//check
Date now = new Date();
List<AssessmentMode> currentModes = assessmentModeMgr.getAssessmentModes(now);
Assert.assertNotNull(currentModes);
Assert.assertFalse(currentModes.contains(mode));
}
/**
* Manual with lead time -> in the current list
*/
@Test
public void loadCurrentAssessmentModes_manualNowLeadingTime() {
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
//manual now
AssessmentMode mode = assessmentModeMgr.createAssessmentMode(entry);
mode.setName("Assessment to load");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.add(Calendar.HOUR_OF_DAY, 1);
mode.setBegin(cal.getTime());
cal.add(Calendar.HOUR_OF_DAY, 2);
mode.setEnd(cal.getTime());
mode.setTargetAudience(Target.course);
mode.setManualBeginEnd(true);
mode.setLeadTime(120);
mode = assessmentModeMgr.persist(mode);
dbInstance.commitAndCloseSession();
//check
Date now = new Date();
List<AssessmentMode> currentModes = assessmentModeMgr.getAssessmentModes(now);
Assert.assertNotNull(currentModes);
Assert.assertTrue(currentModes.contains(mode));
}
@Test
public void getCurrentAssessmentMode() {
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
AssessmentMode mode = createMinimalAssessmentmode(entry);
mode = assessmentModeMgr.persist(mode);
dbInstance.commitAndCloseSession();
Assert.assertNotNull(mode);
//check
Date now = new Date();
List<AssessmentMode> currentModes = assessmentModeMgr.getCurrentAssessmentMode(entry, now);
Assert.assertNotNull(currentModes);
Assert.assertEquals(1, currentModes.size());
Assert.assertTrue(currentModes.contains(mode));
}
/**
* Manual without lead time -> not in the current list
*/
@Test
public void getCurrentAssessmentMode_manualNow() {
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
//manual now
AssessmentMode mode = assessmentModeMgr.createAssessmentMode(entry);
mode.setName("Assessment to load");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.add(Calendar.HOUR_OF_DAY, -1);
mode.setBegin(cal.getTime());
cal.add(Calendar.HOUR_OF_DAY, 2);
mode.setEnd(cal.getTime());
mode.setTargetAudience(Target.course);
mode.setManualBeginEnd(true);
mode = assessmentModeMgr.persist(mode);
dbInstance.commitAndCloseSession();
//check
Date now = new Date();
List<AssessmentMode> currentModes = assessmentModeMgr.getCurrentAssessmentMode(entry, now);
Assert.assertNotNull(currentModes);
Assert.assertTrue(currentModes.isEmpty());
}
/**
* Manual with lead time -> in the current list
*/
@Test
public void getCurrentAssessmentMode_manualNowLeadingTime() {
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
//manual now
AssessmentMode mode = assessmentModeMgr.createAssessmentMode(entry);
mode.setName("Assessment to load");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.add(Calendar.HOUR_OF_DAY, 1);
mode.setBegin(cal.getTime());
cal.add(Calendar.HOUR_OF_DAY, 2);
mode.setEnd(cal.getTime());
mode.setTargetAudience(Target.course);
mode.setManualBeginEnd(true);
mode.setLeadTime(120);
mode = assessmentModeMgr.persist(mode);
dbInstance.commitAndCloseSession();
//check
Date now = new Date();
List<AssessmentMode> currentModes = assessmentModeMgr.getCurrentAssessmentMode(entry, now);
Assert.assertNotNull(currentModes);
Assert.assertEquals(1, currentModes.size());
Assert.assertTrue(currentModes.contains(mode));
}
@Test @Test
public void isInAssessmentMode() { public void isInAssessmentMode() {
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry(); RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
...@@ -297,6 +433,52 @@ public class AssessmentModeManagerTest extends OlatTestCase { ...@@ -297,6 +433,52 @@ public class AssessmentModeManagerTest extends OlatTestCase {
Assert.assertFalse(entryReferencePast); Assert.assertFalse(entryReferencePast);
} }
/**
* Manual without leading time -> not in assessment mode
*/
@Test
public void isInAssessmentMode_manual() {
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
AssessmentMode mode = createMinimalAssessmentmode(entry);
mode.setManualBeginEnd(true);
mode = assessmentModeMgr.persist(mode);
dbInstance.commitAndCloseSession();
Assert.assertNotNull(mode);
//check
Date now = new Date();
boolean entryNow = assessmentModeMgr.isInAssessmentMode(entry, now);
Assert.assertFalse(entryNow);
}
/**
* Manual with leading time -> in assessment mode
*/
@Test
public void isInAssessmentMode_manualLeadingTime() {
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
AssessmentMode mode = assessmentModeMgr.createAssessmentMode(entry);
mode.setName("Assessment to load");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.add(Calendar.HOUR_OF_DAY, 1);
mode.setBegin(cal.getTime());
cal.add(Calendar.HOUR_OF_DAY, 2);
mode.setEnd(cal.getTime());
mode.setTargetAudience(Target.course);
mode.setManualBeginEnd(true);
mode.setLeadTime(120);
mode = assessmentModeMgr.persist(mode);
dbInstance.commitAndCloseSession();
//check
Date now = new Date();
boolean entryNow = assessmentModeMgr.isInAssessmentMode(entry, now);
Assert.assertTrue(entryNow);
}
/** /**
* Check an assessment linked to a group with one participant * Check an assessment linked to a group with one participant
* *
......
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