Refactored tests to comply with the API in ApplicationPeriodFacade.

This commit is contained in:
Tom Vahlman 2012-02-15 15:51:15 +01:00
parent 752a584e04
commit ca851cbbcc
8 changed files with 71 additions and 67 deletions

@ -123,14 +123,14 @@ public class ApplicationPeriodFacade {
return appPeriod;
}
public static ApplicationPeriod createApplicationPeriod(final Set<ProjectClass> projectClassSet) {
public static ApplicationPeriod createApplicationPeriod(final Set<ProjectClass> projectClassSet, final Date startDate, final Date endDate) {
Calendar cal = Calendar.getInstance();cal.getTime();
final Date startDate = cal.getTime();
final Date startDate__ = (startDate != null ? startDate : cal.getTime());
cal.add(Calendar.MONTH, 1);
final Date endDate = cal.getTime();
final Date endDate__ = (endDate != null ? endDate : cal.getTime());
ApplicationPeriod appPeriod = new ApplicationPeriod();
appPeriod.setStartDate(startDate);
appPeriod.setEndDate(endDate);
appPeriod.setStartDate(startDate__);
appPeriod.setEndDate(endDate__);
appPeriod.setProjectClass(projectClassSet);
return appPeriod;
}

@ -100,8 +100,8 @@ public class TestGreedyMatchingAlgorithm {
private void createWeights() {
weights = new Weights();
weights.setKeywordPoints(3); // "Word"
weights.setResearchAreaPoints(10); // "Area" + "Unit"?? for unit
weights.setKeywordPoints(3); // "Word"
weights.setResearchAreaPoints(10); // "Area" + "Unit"?? for unit
weights.setPreferredSupervisorPoints(15); // ??
}
@ -130,7 +130,7 @@ public class TestGreedyMatchingAlgorithm {
Set<ProjectClass> projectClassSet = new HashSet<ProjectClass>();
projectClassSet.add(bachelorProjectClass);
projectClassSet.add(masterProjectClass);
ApplicationPeriod applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet));
ApplicationPeriod applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null));
bachelorProjectIdea = createProjectIdea(bachelorProjectClass, applicationPeriod);
masterSupervisor = createSupervisor("Birger", "Andersson");
masterProjectClass = createProjectClass(ProjectClass.MASTER, "Master", "Master project class");
@ -279,14 +279,12 @@ public class TestGreedyMatchingAlgorithm {
@Test
@Transactional
@Rollback
/* a keywords of 16 points should supersede a preferred supervisor of 15 points */
/* keywords of 16 points should supersede a preferred supervisor of 15 points */
public void keywordsShouldSupersedePreferredSupervisor() {
Employee bachelorSupervisor2 = createSupervisor("David", "Hallberg");
addKeyWords(bachelorSupervisor2, bachelorProjectIdea, createKeyword(keywordTypeArea, "test area")); // 10
addKeyWords(bachelorSupervisor2, bachelorProjectIdea, createKeyword(keywordTypeWord, "test unit")); // 3
addKeyWords(bachelorSupervisor2, bachelorProjectIdea, createKeyword(keywordTypeWord, "Java")); // 3
// addKeyWords(bachelorSupervisor2, bachelorProjectIdea, createKeyword(keywordTypeWord, "UML")); // 3
// addKeyWords(bachelorSupervisor2, bachelorProjectIdea, createKeyword(keywordTypeWord, "Design")); // 3
supervisorAvailability.add(new Availability(bachelorSupervisor2, 0L, 1, bachelorProjectClass));
supervisorAvailability.add(new Availability(bachelorSupervisor, 0L, 1, bachelorProjectClass));
bachelorProjectIdea.setPreferredSupervisor(bachelorSupervisor); // 15
@ -315,5 +313,25 @@ public class TestGreedyMatchingAlgorithm {
Assert.isTrue(result.matches.get(0).getSupervisor().equals(bachelorSupervisor));
}
@Test
@Transactional
@Rollback
/* keywords of 6 points should supersede keywords of 3 points */
public void moreKeywordsShouldSupersedeLessKeywords() {
Employee bachelorSupervisor2 = createSupervisor("David", "Hallberg");
addKeyWords(bachelorSupervisor, bachelorProjectIdea, createKeyword(keywordTypeWord, "test unit")); // 3
addKeyWords(bachelorSupervisor2, bachelorProjectIdea, createKeyword(keywordTypeWord, "UML")); // 3
addKeyWords(bachelorSupervisor2, bachelorProjectIdea, createKeyword(keywordTypeWord, "Design")); // 3
supervisorAvailability.add(new Availability(bachelorSupervisor2, 0L, 1, bachelorProjectClass));
supervisorAvailability.add(new Availability(bachelorSupervisor, 0L, 1, bachelorProjectClass));
//bachelorProjectIdea.setPreferredSupervisor(bachelorSupervisor); // 15
unmatchedProjectIdeas.add(bachelorProjectIdea);
Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
Assert.notEmpty(result.matches);
Assert.isTrue(result.matches.get(0).getProjectIdea().equals(bachelorProjectIdea));
Assert.isTrue(result.matches.get(0).getSupervisor().equals(bachelorSupervisor2));
}
}

@ -254,7 +254,7 @@ public class TestMatcher {
projectClassSet.add(bachelor);
projectClassSet.add(master);
applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet));
applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null));
projectIdea1 = new ProjectIdea();
projectIdea1.setTitle("Project idea 1");
projectIdea1.setApplicationPeriod(applicationPeriod);

@ -68,7 +68,7 @@ public class TestApplicationPeriodDao {
private Student student1Author;
SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
private SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
private ProjectClass master;
@ -78,6 +78,30 @@ public class TestApplicationPeriodDao {
private ApplicationPeriodDao target;
private ProjectIdea createProjectIdea(final ApplicationPeriod applicationPeriod1, final ProjectClass projectClass) {
ProjectIdea projectIdea = new ProjectIdea();
projectIdea.setProjectClass(projectClass);
projectIdea.setApplicationPeriod(applicationPeriod1);
return projectIdeaDao.save(projectIdea);
}
private ProjectClass createProjectClass(final String projectCode, final String name, final String desc) {
ProjectClass projectClass = new ProjectClass(projectCode, name, desc);
return projectClassDao.save(projectClass);
}
private Project createProject(final String title, final ProjectClass projectClass, final Role role) {
Project project = new Project();
project.setTitle(title);
project.setProjectClass(projectClass);
project.addProjectParticipant((Student) role);
return projectDao.save(project);
}
@Before
public void startTransaction() throws Exception {
User student1 = new User();
@ -86,64 +110,26 @@ public class TestApplicationPeriodDao {
Role student1Role = new Student();
student1Role.setUser(student1);
student1Role = roleDao.save(student1Role);
/*
* student1Author = new Author(); student1Author.setUser(student1);
* student1Author = authorDao.save(student1Author);
*/
bachelor =
new ProjectClass(ProjectClass.BACHELOR, "Bachelor",
"Bachelor degree thesis project");
bachelor = projectClassDao.save(bachelor);
master =
new ProjectClass(ProjectClass.MASTER, "Master",
"Master degree thesis project");
master = projectClassDao.save(master);
phd = new ProjectClass(ProjectClass.PHD, "PHD", "PHD thesis project");
phd = projectClassDao.save(phd);
project = new Project();
project.setTitle("SomeProject");
project.setProjectClass(bachelor);
project.addProjectParticipant((Student) student1Role);
project = projectDao.save(project);
bachelor = createProjectClass(ProjectClass.BACHELOR, "Bachelor", "Bachelor degree thesis project");
master = createProjectClass(ProjectClass.MASTER, "Master", "Master degree thesis project");
phd = createProjectClass(ProjectClass.PHD, "PHD", "PHD thesis project");
project = createProject("SomeProject", bachelor, student1Role);
Set<ProjectClass> projectClassSet = new HashSet<ProjectClass>();
projectClassSet.add(bachelor);
projectClassSet.add(master);
ApplicationPeriod applicationPeriod1 = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet));
projectIdea1 = new ProjectIdea();
projectIdea1.setProjectClass(bachelor);
projectIdea1.setApplicationPeriod(applicationPeriod1);
projectIdea1 = projectIdeaDao.save(projectIdea1);
ApplicationPeriod applicationPeriod1 = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null));
projectIdea1 = createProjectIdea(applicationPeriod1, bachelor);
projectIdea2 = createProjectIdea(applicationPeriod1, bachelor);
projectIdea3 = createProjectIdea(applicationPeriod1, bachelor);
projectIdea2 = new ProjectIdea();
projectIdea2.setApplicationPeriod(applicationPeriod1);
projectIdea2.setProjectClass(bachelor);
projectIdea2 = projectIdeaDao.save(projectIdea2);
projectIdea3 = new ProjectIdea();
projectIdea3.setApplicationPeriod(applicationPeriod1);
projectIdea3.setProjectClass(bachelor);
projectIdea3 = projectIdeaDao.save(projectIdea3);
applicationPeriod = new ApplicationPeriod("appl");
applicationPeriod.setEndDate(date("2011-07-01"));
applicationPeriod.setStartDate(date("2011-06-14"));
applicationPeriod.getProjectClass().add(bachelor);
applicationPeriod = applicationPeriodDao.save(applicationPeriod);
applicationPeriod2 = new ApplicationPeriod("app2");
applicationPeriod2.setEndDate(date("2011-08-01"));
applicationPeriod2.setStartDate(date("2011-07-15"));
applicationPeriod2.getProjectClass().add(bachelor);
applicationPeriod2 = applicationPeriodDao.save(applicationPeriod2);
projectClassSet.clear();
projectClassSet.add(bachelor);
applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet, date("2011-06-14"), date("2011-07-01")));
applicationPeriod2 =applicationPeriodDao.save( ApplicationPeriodFacade.createApplicationPeriod(projectClassSet, date("2011-07-15"), date("2011-08-01")));
target = applicationPeriodDao;
}
private Date date(String dateString) {

@ -134,7 +134,7 @@ public class TestMatchDao {
projectIdea1.setProjectClass(projectClass);
Set<ProjectClass> projectClassSet = new HashSet<ProjectClass>();
projectClassSet.add(projectClass);
final ApplicationPeriod applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet));
final ApplicationPeriod applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null));
projectIdea1.setApplicationPeriod(applicationPeriod);
projectIdea1 = projectIdeaDao.save(projectIdea1);

@ -186,7 +186,7 @@ public class TestProjectIdeaDao {
Set<ProjectClass> projectClassSet = new HashSet<ProjectClass>();
projectClassSet.add(bachelor);
projectClassSet.add(master);
ApplicationPeriod applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet));
ApplicationPeriod applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null));
projectIdea1 = new ProjectIdea();
projectIdea1.setTitle("Project idea 1");

@ -217,7 +217,7 @@ public class TestSupervisorDao {
projectClassSet.add(bachelor);
projectClassSet.add(master);
final ApplicationPeriod applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet));
final ApplicationPeriod applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null));
projectIdea1 = new ProjectIdea();
projectIdea1.setTitle("Project idea 1");

@ -107,7 +107,7 @@ public class TestProjectIdea {
Set<ProjectClass> projectClassSet = new HashSet<ProjectClass>();
projectClassSet.add(projectClass);
final ApplicationPeriod applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet));
final ApplicationPeriod applicationPeriod = applicationPeriodDao.save(ApplicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null));
target.setProjectClass(projectClass);
target.setApplicationPeriod(applicationPeriod);
key1 = new Keyword("key 1", standard);