1 package dst.ass1.jpa.tests;
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;
11 import javax.persistence.EntityTransaction;
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;
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;
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.
50 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
51 public class Ass1_1_1_00Test {
54 public static ORMService orm = new ORMService();
57 public ErrorCollector err = new ErrorCollector();
60 public void test01_modelFactoryReturnsThings() {
61 IModelFactory modelFactory = orm.getModelFactory();
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));
78 public void test02_daoFactoryReturnsThings() {
79 IDAOFactory daoFactory = orm.getDaoFactory();
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));
93 public void test03_entityTypesManagedCorrectly() throws Exception {
94 List<Class<?>> types = orm.getDatabaseGateway().getManagedJavaTypes();
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)));
113 public void test04_canInsertTestFixture() throws Exception {
114 ITestData testData = new TestData();
116 EntityTransaction tx = orm.em().getTransaction();
119 testData.insert(orm.getModelFactory(), orm.em());
120 } catch (Exception e) {
121 throw new AssertionError("Exception while inserting test fixture.", e);