An NPE occurred during the tests because the test objects were not correctly constructed (the return value from dao.save should be used instead of the argument).
This commit is contained in:
parent
1a7f831858
commit
018f721045
src/test/java/se/su/dsv/scipro/match
@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
|
||||
default-autowire="byName">
|
||||
|
||||
<bean id="entityManagerFactory"
|
||||
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
|
||||
<property name="persistenceUnitName" value="testPersistenceUnit" />
|
||||
<meta key="class" value="se.su.dsv.scipro.match.dataobject.KeyWordable"/>
|
||||
</bean>
|
||||
|
||||
<!--
|
||||
enable the configuration of transactional behavior based on
|
||||
annotations
|
||||
-->
|
||||
<tx:annotation-driven transaction-manager="transactionManager" />
|
||||
|
||||
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="projectScheduleDao" class="se.su.dsv.scipro.data.dao.jpa.ProjectScheduleDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="userDao" class="se.su.dsv.scipro.data.dao.jpa.UserDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="userNameDao" class="se.su.dsv.scipro.data.dao.jpa.UserNameDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="projectScheduleEventDao" class="se.su.dsv.scipro.data.dao.jpa.ProjectScheduleEventDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="scheduleTemplateDao" class="se.su.dsv.scipro.data.dao.jpa.ScheduleTemplateDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="checklistTemplateDao" class="se.su.dsv.scipro.data.dao.jpa.CheckListTemplateDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="projectDao" class="se.su.dsv.scipro.data.dao.jpa.ProjectDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="roleDao" class="se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="projectClassDao" class="se.su.dsv.scipro.data.dao.jpa.ProjectClassDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="CheckListDao" class="se.su.dsv.scipro.data.dao.jpa.CheckListDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="FileDescriptionDao" class="se.su.dsv.scipro.data.dao.jpa.FileDescriptionDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="FileRepository" class="se.su.dsv.scipro.repository.FileRepositoryImpl">
|
||||
</bean>
|
||||
|
||||
<bean id="projectScheduleFacade" class="se.su.dsv.scipro.activityplan.facade.ProjectScheduleFacade">
|
||||
</bean>
|
||||
|
||||
<bean id="projectIdeaDao" class="se.su.dsv.scipro.match.dao.jpa.ProjectIdeaDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="applicationPeriodDao" class="se.su.dsv.scipro.match.dao.jpa.ApplicationPeriodDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="matchDao" class="se.su.dsv.scipro.match.dao.jpa.MatchDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="authorDao" class="se.su.dsv.scipro.match.dao.jpa.AuthorDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="supervisorDao" class="se.su.dsv.scipro.match.dao.jpa.SupervisorDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="keywordDao" class="se.su.dsv.scipro.match.dao.jpa.KeywordDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="keywordTypeDao" class="se.su.dsv.scipro.match.dao.jpa.KeywordTypeDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="languageDao" class="se.su.dsv.scipro.data.dao.jpa.LanguageDaoJPAImp">
|
||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="checkListQuestionDao" class="se.su.dsv.scipro.data.dao.jpa.CheckListQuestionDaoJPAImp">
|
||||
</bean>
|
||||
|
||||
<bean id="matchingStrategy" class="se.su.dsv.scipro.match.MatchAllDummyMatchingAlgorithm">
|
||||
</bean>
|
||||
|
||||
|
||||
</beans>
|
@ -7,46 +7,58 @@ import java.util.Set;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.LanguageDao;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.data.dataobjects.Language;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.match.Matcher.Result;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.MatchDao;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.ProjectIdeaDao;
|
||||
import se.su.dsv.scipro.match.dataobject.Availability;
|
||||
import se.su.dsv.scipro.match.dataobject.Match.Status;
|
||||
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
|
||||
import se.su.dsv.scipro.match.facade.MatchFacade;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration
|
||||
public class TestGreedyMatchingAlgorithm {
|
||||
|
||||
@Autowired
|
||||
MatchFacade matchFacade;
|
||||
|
||||
@Autowired
|
||||
MatchDao matchDao;
|
||||
|
||||
List<ProjectIdea> unmatchedProjectIdeas;
|
||||
List<Availability> supervisorAvailability;
|
||||
Weights weights;
|
||||
ProjectIdea bachelorProjectIdea;
|
||||
ProjectIdea masterProjectIdea;
|
||||
Employee bachelorSupervisor;
|
||||
Employee masterSupervisor;
|
||||
ProjectClass bachelorProjectClass;
|
||||
ProjectClass masterProjectClass;
|
||||
Set<Language> languages;
|
||||
|
||||
|
||||
@Autowired
|
||||
private ProjectIdeaDao projectIdeaDao;
|
||||
|
||||
@Autowired
|
||||
private ProjectClassDao projectClassDao;
|
||||
|
||||
@Autowired
|
||||
private LanguageDao languageDao;
|
||||
|
||||
private List<ProjectIdea> unmatchedProjectIdeas;
|
||||
private List<Availability> supervisorAvailability;
|
||||
private Weights weights;
|
||||
private ProjectIdea bachelorProjectIdea;
|
||||
private ProjectIdea masterProjectIdea;
|
||||
private Employee bachelorSupervisor;
|
||||
private Employee masterSupervisor;
|
||||
private ProjectClass bachelorProjectClass;
|
||||
private ProjectClass masterProjectClass;
|
||||
private Set<Language> languages;
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
public void startTransaction() throws Exception {
|
||||
unmatchedProjectIdeas = new ArrayList<ProjectIdea>();
|
||||
supervisorAvailability = new ArrayList<Availability>();
|
||||
languages = new HashSet<Language>();
|
||||
Language language = new Language();
|
||||
language.setName("Swedish");
|
||||
language = languageDao.save(language);
|
||||
languages.add(language);
|
||||
|
||||
bachelorSupervisor = new Employee();
|
||||
@ -56,25 +68,33 @@ public class TestGreedyMatchingAlgorithm {
|
||||
masterSupervisor.getCapabilities().setLanguages(languages);
|
||||
|
||||
bachelorProjectClass = new ProjectClass(ProjectClass.BACHELOR, "Bachelor", "Bachelor project class");
|
||||
masterProjectClass = new ProjectClass(ProjectClass.MASTER, "Master", "Master project class");
|
||||
|
||||
bachelorProjectIdea = new ProjectIdea();
|
||||
bachelorProjectIdea.setProjectClass(bachelorProjectClass);
|
||||
bachelorProjectIdea.setLanguages(languages);
|
||||
|
||||
masterProjectIdea = new ProjectIdea();
|
||||
bachelorProjectClass = projectClassDao.save(bachelorProjectClass);
|
||||
|
||||
masterProjectClass = new ProjectClass(ProjectClass.MASTER, "Master", "Master project class");
|
||||
masterProjectClass = projectClassDao.save(masterProjectClass);
|
||||
|
||||
bachelorProjectIdea = new ProjectIdea();
|
||||
bachelorProjectIdea.setProjectClass(bachelorProjectClass);
|
||||
bachelorProjectIdea.setLanguages(languages);
|
||||
bachelorProjectIdea = projectIdeaDao.save(bachelorProjectIdea);
|
||||
|
||||
masterProjectIdea = new ProjectIdea();
|
||||
masterProjectIdea.setProjectClass(masterProjectClass);
|
||||
masterProjectIdea.setLanguages(languages);
|
||||
|
||||
weights = new Weights();
|
||||
masterProjectIdea = projectIdeaDao.save(masterProjectIdea);
|
||||
|
||||
weights = new Weights();
|
||||
weights.setKeywordPoints(3);
|
||||
weights.setResearchAreaPoints(5);
|
||||
weights.setPreferredSupervisorPoints(10);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@Test
|
||||
@Transactional
|
||||
@Rollback
|
||||
public void testMatchMasterThesisAndMasterSupervisor() {
|
||||
Availability availability = new Availability(masterSupervisor, 0L, 1, masterProjectClass);
|
||||
|
||||
supervisorAvailability.add(availability);
|
||||
unmatchedProjectIdeas.add(masterProjectIdea);
|
||||
|
||||
@ -82,12 +102,15 @@ public class TestGreedyMatchingAlgorithm {
|
||||
Result result = matchAlgorithm.match(supervisorAvailability, unmatchedProjectIdeas, weights);
|
||||
|
||||
Assert.isTrue(result.matches.get(0).getProjectIdea() == masterProjectIdea);
|
||||
Assert.isTrue(result.matches.get(0).getSupervisor() == masterSupervisor);
|
||||
Assert.isTrue(result.matches.get(0).getProjectIdea().equals(masterProjectIdea));
|
||||
Assert.isTrue(result.matches.get(0).getSupervisor() == masterSupervisor);
|
||||
Assert.notEmpty(result.matches);
|
||||
Assert.isTrue(result.unmatched.size() == 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Transactional
|
||||
@Rollback
|
||||
public void testMatchBachelorThesisAndMasterSupervisor() {
|
||||
Availability availability = new Availability(masterSupervisor, 0L, 1, masterProjectClass);
|
||||
supervisorAvailability.add(availability);
|
||||
@ -97,12 +120,14 @@ public class TestGreedyMatchingAlgorithm {
|
||||
Result result = matchAlgorithm.match(supervisorAvailability, unmatchedProjectIdeas, weights);
|
||||
|
||||
Assert.isTrue(result.matches.get(0).getProjectIdea() == bachelorProjectIdea);
|
||||
Assert.isTrue(result.matches.get(0).getSupervisor() == masterSupervisor);
|
||||
Assert.notEmpty(result.matches);
|
||||
Assert.isTrue(result.matches.get(0).getSupervisor() == masterSupervisor);
|
||||
Assert.notEmpty(result.matches);
|
||||
Assert.isTrue(result.unmatched.size() == 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Transactional
|
||||
@Rollback
|
||||
public void testMatchBachelorThesisAndBachelorSupervisor() {
|
||||
Availability availability = new Availability(bachelorSupervisor, 0L, 1, bachelorProjectClass);
|
||||
supervisorAvailability.add(availability);
|
||||
@ -118,6 +143,8 @@ public class TestGreedyMatchingAlgorithm {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Transactional
|
||||
@Rollback
|
||||
public void testMatchMasterThesisAndBachelorSupervisor() {
|
||||
Availability availability = new Availability(bachelorSupervisor, 0L, 1, bachelorProjectClass);
|
||||
supervisorAvailability.add(availability);
|
||||
@ -131,6 +158,8 @@ public class TestGreedyMatchingAlgorithm {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Transactional
|
||||
@Rollback
|
||||
public void testMatchRightSupervisor() {
|
||||
Employee bachelorSupervisor2 = new Employee();
|
||||
bachelorSupervisor2.getCapabilities().setLanguages(languages);
|
||||
|
Loading…
x
Reference in New Issue
Block a user