1 package dst.ass1.jpa.tests;
3 import static org.hamcrest.CoreMatchers.hasItems;
4 import static org.junit.Assert.assertEquals;
5 import static org.junit.Assert.assertThat;
6 import static org.junit.Assert.assertTrue;
9 import java.util.stream.Collectors;
11 import javax.persistence.EntityManager;
13 import org.junit.Before;
14 import org.junit.Test;
16 import dst.ass1.jpa.dao.ICourseDAO;
17 import dst.ass1.jpa.dao.IDAOFactory;
18 import dst.ass1.jpa.dao.ILecturerDAO;
19 import dst.ass1.jpa.dao.impl.DAOFactory;
20 import dst.ass1.jpa.model.ICourse;
21 import dst.ass1.jpa.model.ILecturer;
22 import dst.ass1.jpa.model.ILesson;
23 import dst.ass1.jpa.model.IMetadata;
24 import dst.ass1.jpa.util.Constants;
26 public class Ass1_2_2Test extends Ass1_TestBase {
28 private ILecturerDAO lecturerDAO;
29 private ICourseDAO courseDAO;
32 public void setUp() throws Exception {
33 // makes sure there's no cache from creating entities
34 EntityManager em = orm.createEntityManager();
35 IDAOFactory daoFactory = new DAOFactory(em);
37 lecturerDAO = daoFactory.createLecturerDAO();
38 courseDAO = daoFactory.createCourseDAO();
42 public void testUpcomingLessonsExists() {
43 em.createNamedQuery(Constants.Q_UPCOMING_LESSONS);
47 public void testUpcomingLessonsQuery() {
48 ICourse course = courseDAO.findById(testData.course1Id);
49 Map<ILecturer, ILesson> result = lecturerDAO.findUpcomingLessonForLecturersOfCourse(course);
51 assertEquals(3, result.size());
52 Map<Long, ILesson> resultIds = convertMapKeys(result);
53 System.out.println(resultIds);
54 assertThat(resultIds.keySet(), hasItems(testData.lecturer1Id, testData.lecturer2Id, testData.lecturer3Id));
56 assertEquals(testData.lesson4Id, resultIds.get(testData.lecturer1Id).getId());
57 assertEquals(testData.lesson2Id, resultIds.get(testData.lecturer2Id).getId());
58 assertEquals(testData.lesson3Id, resultIds.get(testData.lecturer3Id).getId());
62 public void testUpcomingLessonsQuery2() {
63 ICourse course = courseDAO.findById(testData.course2Id);
64 Map<ILecturer, ILesson> result = lecturerDAO.findUpcomingLessonForLecturersOfCourse(course);
66 assertEquals(1, result.size());
67 Map<Long, ILesson> resultIds = convertMapKeys(result);
68 System.out.println(resultIds);
69 assertThat(resultIds.keySet(), hasItems(testData.lecturer2Id));
71 assertEquals(testData.lesson5Id, resultIds.get(testData.lecturer2Id).getId());
75 public void testUpcomingLessonsQuery_onEmptyDatabase() {
78 ICourse course = modelFactory.createCourse();
79 IMetadata metadata = modelFactory.createMetadata();
80 course.setMetadata(metadata);
84 Map<ILecturer, ILesson> result = daoFactory.createLecturerDAO().findUpcomingLessonForLecturersOfCourse(course);
85 assertTrue(result.isEmpty());
88 private Map<Long, ILesson> convertMapKeys(Map<ILecturer, ILesson> result) {
89 return result.entrySet().stream().collect(Collectors.toMap(
90 kv -> kv.getKey().getId(),