source: ComponentRegistry/trunk/ComponentRegistry/src/test/java/clarin/cmdi/componentregistry/impl/database/AbstractDescriptionDaoTest.java @ 4098

Last change on this file since 4098 was 4098, checked in by George.Georgovassilis@mpi.nl, 10 years ago

#360, #431, #432: JPA and unified component entities

File size: 7.3 KB
Line 
1package clarin.cmdi.componentregistry.impl.database;
2
3import static org.junit.Assert.assertEquals;
4import static org.junit.Assert.assertFalse;
5import static org.junit.Assert.assertNotNull;
6import static org.junit.Assert.assertTrue;
7
8import java.util.Date;
9import java.util.List;
10
11import org.junit.Test;
12import org.springframework.beans.factory.annotation.Autowired;
13
14import clarin.cmdi.componentregistry.BaseUnitTest;
15import clarin.cmdi.componentregistry.model.BaseDescription;
16import clarin.cmdi.componentregistry.persistence.ComponentDao;
17import clarin.cmdi.componentregistry.persistence.jpa.UserDao;
18
19/**
20 * Base test class for concrete tests to profile and component DAOs
21 *
22 * @author Twan Goosen <twan.goosen@mpi.nl>
23 * @author George.Georgovassilis@mpi.nl
24 */
25public abstract class AbstractDescriptionDaoTest extends BaseUnitTest {
26
27    @Autowired
28    private UserDao userDao;
29
30    protected abstract ComponentDao getDao();
31
32    @Test
33    public void testInjection() {
34        assertNotNull(jdbcTemplate);
35        assertNotNull(getDao());
36    }
37
38    @Test
39    public void testInsertComponent() throws Exception {
40        Date regDate = new Date();
41
42        BaseDescription description = createNewDescription();
43        description.setName("MyComponent");
44        description.setDescription("MyDescription");
45        description.setCreatorName("Aap");
46        description.setGroupName("MyGroup");
47        description.setDomainName("MyDomain \u00CA");
48        description.setHref("http://MyHref");
49
50        description.setRegistrationDate(regDate);
51
52        String testComponent = getContentString();
53        Number newId = getDao().insertDescription(description, testComponent,
54                true, null);
55        assertNotNull(newId);
56        BaseDescription descr = getDao().getById(newId);
57        assertNotNull(descr);
58        assertEquals("MyComponent", descr.getName());
59        assertEquals("MyDescription", descr.getDescription());
60        assertEquals("Aap", descr.getCreatorName());
61        assertEquals("MyGroup", descr.getGroupName());
62        assertEquals("MyDomain \u00CA", descr.getDomainName());
63        assertEquals("http://MyHref", descr.getHref());
64        assertEquals(regDate, descr.getRegistrationDate());
65        assertEquals(testComponent,
66                getDao().getContent(false, description.getId()));
67    }
68
69    @Test
70    public void testGetDescriptionsOrdered() throws Exception {
71        insert("a", true, null);
72        insert("A", true, null);
73        insert("B", true, null);
74        insert("a", true, null);
75
76        List<BaseDescription> descs = getDao().getPublicDescriptions();
77        assertEquals(4, descs.size());
78        assertEquals("a", descs.get(0).getName()); // ordered by name case
79                                                   // insensitive then by cmdId
80        assertEquals("A", descs.get(1).getName());
81        assertEquals("a", descs.get(2).getName());
82        assertTrue(descs.get(1).getId().compareTo(descs.get(2).getId()) < 0);
83        assertEquals("B", descs.get(3).getName());
84
85    }
86
87    @Test
88    public void testGetPublicComponents() throws Exception {
89        List<BaseDescription> descriptions = getDao().getPublicDescriptions();
90        assertNotNull(descriptions);
91    }
92
93    @Test
94    public void testGetUserspaceDescriptions() throws Exception {
95        // TODO: test queries empty database and is happy that no results are
96        // returned. Should also test the case where there are userspace
97        // descriptions
98        List<BaseDescription> descriptions = getDao().getUserspaceComponents(-1);
99        assertEquals(0, descriptions.size());
100    }
101
102    @Test
103    public void testDeleteDescription() throws Exception {
104        BaseDescription description = createNewDescription();
105        description.setName("Aap");
106        description.setDescription("MyDescription");
107        String testComponent = getContentString();
108
109        int count = getDao().getPublicDescriptions().size();
110        // insert
111        getDao().insertDescription(description, testComponent, true, null);
112        assertEquals(count + 1, getDao().getPublicDescriptions().size());
113
114        List<BaseDescription> deletedDescriptions = getDao().getDeletedDescriptions(null);
115        assertEquals(0, deletedDescriptions.size());
116
117        // delete
118        getDao().setDeleted(description, true);
119        assertEquals(count, getDao().getPublicDescriptions().size());
120
121        deletedDescriptions = getDao().getDeletedDescriptions(null);
122        assertEquals(1, deletedDescriptions.size());
123    }
124
125    @Test
126    public void testUpdateDescription() {
127        BaseDescription description = createNewDescription();
128        description.setName("Aap");
129        description.setDescription("MyDescription");
130        description.setCreatorName("Aap");
131        description.setGroupName("MyGroup");
132        description.setDomainName("MyDomain");
133        description.setHref("http://MyHref");
134
135        String testComponent = getContentString();
136        Number newId = getDao().insertDescription(description, testComponent,
137                true, null);
138
139        // Change values
140        description.setName("Noot");
141        description.setDescription("AnotherDescription");
142        description.setCreatorName("AnotherAap");
143        description.setGroupName("AnotherGroup");
144        description.setDomainName("AnotherDomain\u00CA");
145        description.setHref("http://AnotherHref");
146        // Update in db
147        getDao().updateDescription(newId, description, null);
148        description = getDao().getById(newId);
149        // Test if new values are there
150        assertNotNull(description);
151        assertEquals("Noot", description.getName());
152        assertEquals("AnotherDescription", description.getDescription());
153        assertEquals("AnotherAap", description.getCreatorName());
154        assertEquals("AnotherGroup", description.getGroupName());
155        assertEquals("AnotherDomain\u00CA", description.getDomainName());
156        assertEquals("http://AnotherHref", description.getHref());
157
158        // Update content
159        String testContent2 = "<test>Test content</test>";
160        getDao().updateDescription(newId, null, testContent2);
161        // Test if new content is there
162        assertEquals(testContent2,
163                getDao().getContent(false, description.getId()));
164
165        // Update both
166        description.setName("Mies");
167        description.setDescription("YetAnotherDescription");
168        String testContent3 = "<test>More test \u00CA content</test>";
169
170        // Update in db
171        getDao().updateDescription(newId, description, testContent3);
172        description = getDao().getById(newId);
173        // Test if new values are there
174        assertNotNull(description);
175        assertEquals("Mies", description.getName());
176        assertEquals("YetAnotherDescription", description.getDescription());
177        // Test if new content is there
178        assertEquals(testContent3,
179                getDao().getContent(false, description.getId()));
180    }
181
182    @Test
183    public void testIsPublic() {
184        Number userId = userDao.save(UserDaoTest.createTestUser()).getId();
185        BaseDescription publicDesc = insert(true, null);
186        assertTrue(getDao().isPublic(publicDesc.getId()));
187        assertFalse(getDao().isInUserSpace(publicDesc.getId(), userId));
188
189        BaseDescription privateDesc = insert(false, userId);
190        assertFalse(getDao().isPublic(privateDesc.getId()));
191        assertTrue(getDao().isInUserSpace(privateDesc.getId(), userId));
192
193        getDao().setDeleted(publicDesc, true);
194        assertTrue(getDao().isPublic(publicDesc.getId()));
195        assertFalse(getDao().isInUserSpace(publicDesc.getId(), userId));
196
197        getDao().setDeleted(privateDesc, true);
198        assertFalse(getDao().isPublic(privateDesc.getId()));
199        assertTrue(getDao().isInUserSpace(privateDesc.getId(), userId));
200    }
201
202    private BaseDescription insert(boolean isPublic, Number userId) {
203        return insert("Aap", isPublic, userId);
204    }
205
206    private BaseDescription insert(String name, boolean isPublic, Number userId) {
207        BaseDescription desc = createNewDescription();
208        desc.setName(name);
209        desc.setDescription("MyDescription");
210        getDao().insertDescription(desc, getContentString(), isPublic, userId);
211        return desc;
212    }
213
214    protected abstract String getContentString();
215
216    protected abstract BaseDescription createNewDescription();
217}
Note: See TracBrowser for help on using the repository browser.