@Test public void submitTask_relativeLifecycle() { // prepare a course with a volatile task Identity participant1 = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-1"); Identity participant2 = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-2"); RepositoryEntry re = JunitTestHelper.createAndPersistRepositoryEntry("", false); repositoryEntryRelationDao.addRole(participant1, re, GroupRoles.participant.name()); repositoryEntryRelationDao.addRole(participant2, re, GroupRoles.participant.name()); dbInstance.commit(); String label = "Life cycle for relative date"; String softKey = UUID.randomUUID().toString(); Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); cal.add(Calendar.DATE, -5); Date from = cal.getTime(); cal.add(Calendar.DATE, 20); Date to = cal.getTime(); RepositoryEntryLifecycle lifecycle = reLifeCycleDao.create(label, softKey, true, from, to); re.setLifecycle(lifecycle); re = dbInstance.getCurrentEntityManager().merge(re); dbInstance.commit(); // create a fake node with a relative submit deadline 15 days after the start of the course GTACourseNode node = new GTACourseNode(); node.getModuleConfiguration() .setStringValue(GTACourseNode.GTASK_TYPE, GTAType.individual.name()); node.getModuleConfiguration().setBooleanEntry(GTACourseNode.GTASK_RELATIVE_DATES, true); node.getModuleConfiguration().setIntValue(GTACourseNode.GTASK_SUBMIT_DEADLINE_RELATIVE, 15); node.getModuleConfiguration() .setStringValue( GTACourseNode.GTASK_SUBMIT_DEADLINE_RELATIVE_TO, GTARelativeToDates.courseStart.name()); TaskList tasks = gtaManager.createIfNotExists(re, node); Assert.assertNotNull(tasks); dbInstance.commitAndCloseSession(); // the course has start 5 days before, deadline is 15 days after it // conclusion the deadline is 10 days from now { // check before 5 days ReminderRuleImpl rule = getSubmitTaskRules(5, LaunchUnit.day); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(0, all.size()); } { // check before 1 week ReminderRuleImpl rule = getSubmitTaskRules(1, LaunchUnit.week); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(0, all.size()); } { // check before 10 days ReminderRuleImpl rule = getSubmitTaskRules(10, LaunchUnit.day); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(2, all.size()); Assert.assertTrue(all.contains(participant1)); Assert.assertTrue(all.contains(participant2)); } { // check before 2 days ReminderRuleImpl rule = getSubmitTaskRules(10, LaunchUnit.week); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(2, all.size()); Assert.assertTrue(all.contains(participant1)); Assert.assertTrue(all.contains(participant2)); } { // check before 30 days ReminderRuleImpl rule = getSubmitTaskRules(30, LaunchUnit.day); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(2, all.size()); Assert.assertTrue(all.contains(participant1)); Assert.assertTrue(all.contains(participant2)); } { // check before 1 months ReminderRuleImpl rule = getSubmitTaskRules(1, LaunchUnit.month); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(2, all.size()); Assert.assertTrue(all.contains(participant1)); Assert.assertTrue(all.contains(participant2)); } { // check before 5 months ReminderRuleImpl rule = getSubmitTaskRules(5, LaunchUnit.month); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(2, all.size()); Assert.assertTrue(all.contains(participant1)); Assert.assertTrue(all.contains(participant2)); } { // check before 1 year ReminderRuleImpl rule = getSubmitTaskRules(1, LaunchUnit.year); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(2, all.size()); Assert.assertTrue(all.contains(participant1)); Assert.assertTrue(all.contains(participant2)); } }
@Test public void submitTask_individual() { // prepare a course with a volatile task Identity participant1 = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-1"); Identity participant2 = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-2"); RepositoryEntry re = JunitTestHelper.createAndPersistRepositoryEntry("", false); repositoryEntryRelationDao.addRole(participant1, re, GroupRoles.participant.name()); repositoryEntryRelationDao.addRole(participant2, re, GroupRoles.participant.name()); dbInstance.commit(); GTACourseNode node = new GTACourseNode(); node.getModuleConfiguration() .setStringValue(GTACourseNode.GTASK_TYPE, GTAType.individual.name()); Calendar cal = Calendar.getInstance(); cal.add(2, Calendar.MONTH); node.getModuleConfiguration().setDateValue(GTACourseNode.GTASK_SUBMIT_DEADLINE, cal.getTime()); TaskList tasks = gtaManager.createIfNotExists(re, node); File taskFile = new File("solo.txt"); Assert.assertNotNull(tasks); dbInstance.commit(); // select a task AssignmentResponse response = gtaManager.selectTask(participant1, tasks, node, taskFile); dbInstance.commitAndCloseSession(); Assert.assertEquals(AssignmentResponse.Status.ok, response.getStatus()); // only remind participant 2 List<Identity> toRemind = submissionTaskRuleSPI.getPeopleToRemind(re, node); Assert.assertEquals(1, toRemind.size()); Assert.assertTrue(toRemind.contains(participant2)); { // check before 30 days ReminderRuleImpl rule = getSubmitTaskRules(30, LaunchUnit.day); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(0, all.size()); } { // check before 5 weeks ReminderRuleImpl rule = getSubmitTaskRules(5, LaunchUnit.week); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(0, all.size()); } { // check before 1 month ReminderRuleImpl rule = getSubmitTaskRules(1, LaunchUnit.month); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(0, all.size()); } { // check before 90 days ReminderRuleImpl rule = getSubmitTaskRules(90, LaunchUnit.day); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(1, all.size()); Assert.assertTrue(toRemind.contains(participant2)); } { // check before 12 weeks ReminderRuleImpl rule = getSubmitTaskRules(12, LaunchUnit.week); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(1, all.size()); Assert.assertTrue(toRemind.contains(participant2)); } { // check before 3 month ReminderRuleImpl rule = getSubmitTaskRules(3, LaunchUnit.month); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(1, all.size()); Assert.assertTrue(toRemind.contains(participant2)); } { // check before 1 year ReminderRuleImpl rule = getSubmitTaskRules(1, LaunchUnit.year); List<Identity> all = submissionTaskRuleSPI.evaluateRule(re, node, rule); Assert.assertEquals(1, all.size()); Assert.assertTrue(toRemind.contains(participant2)); } }