]> git.somenet.org - pub/jan/dst18.git/blob - ass1-jpa/src/test/java/dst/ass1/jpa/tests/Ass1_1_1_00Test.java
Add template for assignment 1
[pub/jan/dst18.git] / ass1-jpa / src / test / java / dst / ass1 / jpa / tests / Ass1_1_1_00Test.java
1 package dst.ass1.jpa.tests;
2
3 import static org.hamcrest.CoreMatchers.hasItem;
4 import static org.hamcrest.CoreMatchers.is;
5 import static org.hamcrest.CoreMatchers.isA;
6 import static org.hamcrest.object.IsCompatibleType.typeCompatibleWith;
7 import static org.junit.Assert.assertThat;
8
9 import java.util.List;
10
11 import javax.persistence.EntityTransaction;
12
13 import org.junit.ClassRule;
14 import org.junit.FixMethodOrder;
15 import org.junit.Rule;
16 import org.junit.Test;
17 import org.junit.rules.ErrorCollector;
18 import org.junit.runners.MethodSorters;
19
20 import dst.ass1.jpa.ITestData;
21 import dst.ass1.jpa.ORMService;
22 import dst.ass1.jpa.dao.ICourseDAO;
23 import dst.ass1.jpa.dao.ICoursePlatformDAO;
24 import dst.ass1.jpa.dao.IDAOFactory;
25 import dst.ass1.jpa.dao.ILecturerDAO;
26 import dst.ass1.jpa.dao.ILessonDAO;
27 import dst.ass1.jpa.dao.IMaterialDAO;
28 import dst.ass1.jpa.dao.IMaterialServerDAO;
29 import dst.ass1.jpa.dao.IMembershipDAO;
30 import dst.ass1.jpa.dao.IMetadataDAO;
31 import dst.ass1.jpa.dao.IParticipantDAO;
32 import dst.ass1.jpa.model.IAddress;
33 import dst.ass1.jpa.model.ICourse;
34 import dst.ass1.jpa.model.ICoursePlatform;
35 import dst.ass1.jpa.model.IEnrollment;
36 import dst.ass1.jpa.model.IEnrollmentKey;
37 import dst.ass1.jpa.model.ILecturer;
38 import dst.ass1.jpa.model.ILesson;
39 import dst.ass1.jpa.model.IMaterial;
40 import dst.ass1.jpa.model.IMaterialServer;
41 import dst.ass1.jpa.model.IMembership;
42 import dst.ass1.jpa.model.IMetadata;
43 import dst.ass1.jpa.model.IModelFactory;
44 import dst.ass1.jpa.model.IParticipant;
45
46 /**
47  * Tests the basic setup of the model and dao factory (makes sure they don't return null), and also tests whether all
48  * relevant entities have been mapped at all and test data can be inserted.
49  */
50 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
51 public class Ass1_1_1_00Test {
52
53     @ClassRule
54     public static ORMService orm = new ORMService();
55
56     @Rule
57     public ErrorCollector err = new ErrorCollector();
58
59     @Test
60     public void test01_modelFactoryReturnsThings() {
61         IModelFactory modelFactory = orm.getModelFactory();
62
63         err.checkThat(modelFactory.createAddress(), isA(IAddress.class));
64         err.checkThat(modelFactory.createCourse(), isA(ICourse.class));
65         err.checkThat(modelFactory.createCoursePlatform(), isA(ICoursePlatform.class));
66         err.checkThat(modelFactory.createEnrollment(), isA(IEnrollment.class));
67         err.checkThat(modelFactory.createEnrollmentKey(), isA(IEnrollmentKey.class));
68         err.checkThat(modelFactory.createLecturer(), isA(ILecturer.class));
69         err.checkThat(modelFactory.createLesson(), isA(ILesson.class));
70         err.checkThat(modelFactory.createMaterial(), isA(IMaterial.class));
71         err.checkThat(modelFactory.createMaterialServer(), isA(IMaterialServer.class));
72         err.checkThat(modelFactory.createMembership(), isA(IMembership.class));
73         err.checkThat(modelFactory.createMetadata(), isA(IMetadata.class));
74         err.checkThat(modelFactory.createParticipant(), isA(IParticipant.class));
75     }
76
77     @Test
78     public void test02_daoFactoryReturnsThings() {
79         IDAOFactory daoFactory = orm.getDaoFactory();
80
81         err.checkThat(daoFactory.createMembershipDAO(), isA(IMembershipDAO.class));
82         err.checkThat(daoFactory.createParticipantDAO(), isA(IParticipantDAO.class));
83         err.checkThat(daoFactory.createLessonDAO(), isA(ILessonDAO.class));
84         err.checkThat(daoFactory.createLecturerDAO(), isA(ILecturerDAO.class));
85         err.checkThat(daoFactory.createCourseDAO(), isA(ICourseDAO.class));
86         err.checkThat(daoFactory.createMaterialDAO(), isA(IMaterialDAO.class));
87         err.checkThat(daoFactory.createMaterialServerDAO(), isA(IMaterialServerDAO.class));
88         err.checkThat(daoFactory.createMetadataDAO(), isA(IMetadataDAO.class));
89         err.checkThat(daoFactory.createCoursePlatformDAO(), isA(ICoursePlatformDAO.class));
90     }
91
92     @Test
93     public void test03_entityTypesManagedCorrectly() throws Exception {
94         List<Class<?>> types = orm.getDatabaseGateway().getManagedJavaTypes();
95
96         assertThat("No managed types found", types.isEmpty(), is(false));
97         System.out.println("Managed types: " + types);
98         err.checkThat(types, hasItem(typeCompatibleWith(ICourse.class)));
99         err.checkThat(types, hasItem(typeCompatibleWith(IAddress.class)));
100         err.checkThat(types, hasItem(typeCompatibleWith(ICoursePlatform.class)));
101         err.checkThat(types, hasItem(typeCompatibleWith(IEnrollment.class)));
102         err.checkThat(types, hasItem(typeCompatibleWith(IEnrollmentKey.class)));
103         err.checkThat(types, hasItem(typeCompatibleWith(ILecturer.class)));
104         err.checkThat(types, hasItem(typeCompatibleWith(ILesson.class)));
105         err.checkThat(types, hasItem(typeCompatibleWith(IMaterial.class)));
106         err.checkThat(types, hasItem(typeCompatibleWith(IMaterialServer.class)));
107         err.checkThat(types, hasItem(typeCompatibleWith(IMembership.class)));
108         err.checkThat(types, hasItem(typeCompatibleWith(IMetadata.class)));
109         err.checkThat(types, hasItem(typeCompatibleWith(IParticipant.class)));
110     }
111
112     @Test
113     public void test04_canInsertTestFixture() throws Exception {
114         ITestData testData = new TestData();
115
116         EntityTransaction tx = orm.em().getTransaction();
117         tx.begin();
118         try {
119             testData.insert(orm.getModelFactory(), orm.em());
120         } catch (Exception e) {
121             throw new AssertionError("Exception while inserting test fixture.", e);
122         } finally {
123             tx.rollback();
124         }
125     }
126
127 }