]> git.somenet.org - pub/jan/dst18.git/blob - ass1-jpa/src/test/java/dst/ass1/jpa/tests/Ass1_2_2Test.java
Add template for assignment 1
[pub/jan/dst18.git] / ass1-jpa / src / test / java / dst / ass1 / jpa / tests / Ass1_2_2Test.java
1 package dst.ass1.jpa.tests;
2
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;
7
8 import java.util.Map;
9 import java.util.stream.Collectors;
10
11 import javax.persistence.EntityManager;
12
13 import org.junit.Before;
14 import org.junit.Test;
15
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;
25
26 public class Ass1_2_2Test extends Ass1_TestBase {
27
28     private ILecturerDAO lecturerDAO;
29     private ICourseDAO courseDAO;
30
31     @Before
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);
36
37         lecturerDAO = daoFactory.createLecturerDAO();
38         courseDAO = daoFactory.createCourseDAO();
39     }
40
41     @Test
42     public void testUpcomingLessonsExists() {
43         em.createNamedQuery(Constants.Q_UPCOMING_LESSONS);
44     }
45
46     @Test
47     public void testUpcomingLessonsQuery() {
48         ICourse course = courseDAO.findById(testData.course1Id);
49         Map<ILecturer, ILesson> result = lecturerDAO.findUpcomingLessonForLecturersOfCourse(course);
50
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));
55
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());
59     }
60
61     @Test
62     public void testUpcomingLessonsQuery2() {
63         ICourse course = courseDAO.findById(testData.course2Id);
64         Map<ILecturer, ILesson> result = lecturerDAO.findUpcomingLessonForLecturersOfCourse(course);
65
66         assertEquals(1, result.size());
67         Map<Long, ILesson> resultIds = convertMapKeys(result);
68         System.out.println(resultIds);
69         assertThat(resultIds.keySet(), hasItems(testData.lecturer2Id));
70
71         assertEquals(testData.lesson5Id, resultIds.get(testData.lecturer2Id).getId());
72     }
73
74     @Test
75     public void testUpcomingLessonsQuery_onEmptyDatabase() {
76         db.truncateTables();
77
78         ICourse course = modelFactory.createCourse();
79         IMetadata metadata = modelFactory.createMetadata();
80         course.setMetadata(metadata);
81         em.persist(metadata);
82         em.persist(course);
83
84         Map<ILecturer, ILesson> result = daoFactory.createLecturerDAO().findUpcomingLessonForLecturersOfCourse(course);
85         assertTrue(result.isEmpty());
86     }
87
88     private Map<Long, ILesson> convertMapKeys(Map<ILecturer, ILesson> result) {
89         return result.entrySet().stream().collect(Collectors.toMap(
90                 kv -> kv.getKey().getId(),
91                 kv -> kv.getValue()
92         ));
93     }
94
95 }