Source code: org/acs/damsel/srvr/collection/TestCollection.java
1 package org.acs.damsel.srvr.collection;
2
3 import junit.framework.*;
4 import org.acs.damsel.srvr.asset.*;
5 import org.acs.damsel.srvr.schema.*;
6 import org.acs.damsel.srvr.db.*;
7 import org.acs.damsel.srvr.user.*;
8 import java.sql.*;
9 import java.util.Iterator;
10
11 public class TestCollection
12 extends TestCase {
13 private Collection collection = null;
14 private Asset one, two, three, four; //Assets for testing purposes
15
16 public TestCollection(String name) {
17 super(name);
18 }
19
20 protected void setUp() throws Exception {
21 super.setUp();
22 collection = new Collection();
23 }
24
25 /* Test constructor */
26 public void testConstructor() {
27 this.assertNotNull(collection);
28 this.assertNull(collection.collectionName);
29 this.assertNull(collection.schemaName);
30 this.assertNull(collection.ownerName);
31 this.assertNull(collection.description);
32 this.assertNull(collection.repositoryName);
33 this.assertNull(collection.permissionID);
34 this.assertNull(collection.groupName);
35 }
36
37 /*Private helper method to populate the specified collection */
38 private void populateCollection(String collectionName) {
39 collection = new Collection(collectionName);
40 one = new Asset();
41 one.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("FileName",
42 collectionName + "One.jpg"));
43 one.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Author",
44 collectionName + "Author"));
45 one.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Title",
46 collectionName + "TitleOne"));
47 two = new Asset();
48 two.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("FileName",
49 collectionName + "Two.jpg"));
50 two.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Author",
51 collectionName + "Author"));
52 two.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Title",
53 collectionName + "TitleTwo"));
54 three = new Asset();
55 three.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor(
56 "FileName", collectionName + "Three.jpg"));
57 three.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Author",
58 collectionName + "Author"));
59 three.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Title",
60 collectionName + "TitleThree"));
61 four = new Asset();
62 four.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor(
63 "FileName", collectionName + "Four.jpg"));
64 four.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Author",
65 collectionName + "Author"));
66 four.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Title",
67 collectionName + "TitleFour"));
68
69 /*Populate the collection */
70 collection.addAsset(one);
71 collection.addAsset(two);
72 collection.addAsset(three);
73 collection.addAsset(four);
74 }
75
76 /*Removes the assests in the specified collection and the collection from the database */
77 private void removeAssetsAndCollection() {
78 /* Remove the Assets from the database */
79 try {
80 AssetDB assetDB = AssetDB.instance();
81 assetDB.deleteAsset(one);
82 assetDB.deleteAsset(two);
83 assetDB.deleteAsset(three);
84 assetDB.deleteAsset(four);
85 assetDB.deleteCollection(collection);
86 assetDB.removeAssetFromAllCollections(one);
87 assetDB.removeAssetFromAllCollections(two);
88 assetDB.removeAssetFromAllCollections(three);
89 assetDB.removeAssetFromAllCollections(four);
90
91 }
92 catch (SQLException ex) {
93 this.fail("Unexpected SQL Exception caught in testContains : " + ex.getMessage());
94 }
95 catch (SchemaException ex2) {
96 this.fail("Unexpected SchemaException caught in testContains : " + ex2.getMessage());
97 }
98 }
99
100 /* Test if asset is in collection! */
101 public void testContains() {
102 this.populateCollection("TestContainsCollection");
103 /* Checking to see if our collection contains Asset one */
104 this.assertTrue(collection.contains(one));
105
106 Collection newCollection = new Collection("Not the collection you were thinking of");
107 Asset five = new Asset();
108 five.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("FileName", "five.jpg"));
109 five.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Author", "Mike"));
110 five.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Title", "TestTwo"));
111 newCollection.addAsset(five);
112 /* Checking to see if the asset just inserted into a different collection
113 is not in the collection */
114 this.assertFalse(collection.contains(five));
115 this.removeAssetsAndCollection();
116 /* Remove the Assets from the database */
117 try {
118 AssetDB assetDB = AssetDB.instance();
119 assetDB.deleteAsset(five);
120 assetDB.removeAssetFromAllCollections(five);
121 }
122 catch (SQLException ex) {
123 this.fail("Unexpected SQL Exception caught in testSize : " +
124 ex.getMessage());
125 }
126
127 }
128
129 /* Test if asset was getted */
130 public void testGetAsset () {
131 Asset newAsset = null;
132 try {
133 this.populateCollection("TestGetAssetCollection");
134 AssetDB assetDB = AssetDB.instance();
135 assetDB.addCollection(collection);
136 newAsset = collection.getAsset("TestGetAssetCollectionOne.jpg");
137 this.assertNotNull(newAsset);
138 /* Testing if asset gotten was null */
139 /* Testing if asset's descriptors were valid */
140 this.assertTrue(newAsset.getAssetDescriptors().getValue("Title").equals(
141 "TestGetAssetCollectionTitleOne"));
142 this.assertTrue(newAsset.getAssetDescriptors().getValue("Author").equals(
143 "TestGetAssetCollectionAuthor"));
144 this.assertTrue(newAsset.getAssetDescriptors().getValue("FileName").
145 equals("TestGetAssetCollectionOne.jpg"));
146 }
147 catch (SQLException ex1) {
148 this.fail("Caught unexpected SQL exception in testGetAsset.");
149 ex1.printStackTrace();
150 }
151 /* Creating a second asset to insert into a Different Collection */
152 Collection newCollection = new Collection("Not the collection you were thinking of");
153 Asset five = new Asset();
154 five.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("FileName", "five.jpg"));
155 five.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Author", "Mike"));
156 five.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Title", "TestTwo"));
157 newCollection.addAsset(five);
158 try {
159 Schema s = AssetDB.instance().getSchema("Default");
160 AssetDB.instance().setSchemaOfCollection(collection, s);
161 AssetDB.instance().setSchemaOfCollection(newCollection, s);
162 }
163 catch (SchemaException ex2) {
164 this.fail();
165 }
166 catch (SQLException ex2) {
167 this.fail();
168 }
169 newAsset = collection.getAsset("five.jpg");
170 /* Checking if asset that was not in the collection returned a null Asset */
171 this.assertNull(newAsset);
172 this.removeAssetsAndCollection();
173 /* Remove the Assets and Collections from the database */
174 try {
175 AssetDB assetDB = AssetDB.instance();
176 assetDB.deleteAsset(five);
177 assetDB.deleteCollection(collection);
178 assetDB.deleteCollection(newCollection);
179 assetDB.removeAssetFromAllCollections(five);
180 }
181 catch (SQLException ex) {
182 this.fail("Unexpected SQL Exception caught in testSize : " +
183 ex.getMessage());
184 }
185 catch (SchemaException ex2) {
186 this.fail("Unexpected SchemaException caught in testContains : " + ex2.getMessage());
187 }
188 }
189
190 /* Test isPublic */
191 public void testIsPublic() {
192 try {
193 AssetDB assetDB = AssetDB.instance();
194 Collection coll1 = new Collection();
195 Collection coll2 = new Collection();
196 coll1.setCollectionName("testIsPublicColl1");
197 coll2.setCollectionName("testIsPublicColl2");
198 coll1.setPermissionID("15");
199 coll2.setPermissionID("127");
200 assetDB.addCollection(coll1);
201 assetDB.addCollection(coll2);
202 this.assertFalse(coll1.isPublic());
203 this.assertTrue(coll2.isPublic());
204 assetDB.deleteCollection(coll1);
205 assetDB.deleteCollection(coll2);
206 }
207 catch (SQLException ex) {
208 this.fail("Unexpected SQLException caught in testIsPublic " + ex.getMessage());
209 }
210 catch (SchemaException ex2) {
211 this.fail("Unexpected SchemaException caught in testContains : " + ex2.getMessage());
212 }
213 }
214
215 /* Test if asset was added to collection */
216 public void testAddAsset() {
217 this.populateCollection("TestAddAssetCollection");
218 this.assertEquals(4, collection.size());
219
220 this.assertTrue(collection.contains(one));
221 this.assertTrue(collection.contains(two));
222 this.assertTrue(collection.contains(three));
223 this.assertTrue(collection.contains(four));
224 this.removeAssetsAndCollection();
225 }
226
227 /*Test getsAllAssets */
228 public void testGetAllAssets() {
229 this.populateCollection("TestGetAllAssetsCollection");
230
231 CollectionView results = collection.getAllAssets();
232 this.assertEquals(4, results.size());
233 Iterator i = results.iterator();
234 Asset tempAss;
235 /*Check that our set of results are not null and exist in the collection */
236 while(i.hasNext()) {
237 tempAss = (Asset) i.next();
238 this.assertNotNull(tempAss);
239 this.assertTrue(collection.contains(tempAss));
240 }
241 this.removeAssetsAndCollection();
242 }
243
244 /* Test if asset was removed from collection */
245 public void testRemoveAsset() {
246 this.populateCollection("TestRemoveAssetCollection");
247 int size = collection.size();
248
249 this.assertTrue(collection.removeAsset(one));
250 this.assertEquals(size - 1, collection.size());
251 this.assertTrue(collection.removeAsset(two));
252 this.assertEquals(size - 2, collection.size());
253 this.assertTrue(collection.removeAsset(three));
254 this.assertEquals(size - 3, collection.size());
255 this.assertTrue(collection.removeAsset(four));
256 this.assertEquals(size - 4, collection.size());
257
258 this.removeAssetsAndCollection();
259 }
260
261 /* Test getter and setter for schema */
262 public void testSchema() {
263 assertNull(collection.getSchemaName());
264 String schema = new String("SchemaTest");
265 collection.setSchemaName(schema);
266 assertEquals("SchemaTest", collection.getSchemaName());
267 }
268
269 /* Test getter and setter for name */
270 public void testName() {
271 this.assertNull(collection.getCollectionName());
272 collection.setCollectionName("TestNameCollection");
273 this.assertEquals("TestNameCollection", collection.getCollectionName());
274 }
275
276 /* Test size */
277 public void testSize() {
278 collection.setCollectionName("TestSizeCollection");
279 int size = collection.size();
280 Asset one = new Asset();
281 one.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("FileName", "one.jpg"));
282 one.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Author", "Mike"));
283 one.getAssetDescriptors().addAssetDescriptor(new AssetDescriptor("Title",
284 "TestOne"));
285 collection.addAsset(one);
286 this.assertEquals(size + 1, collection.size());
287 /* Remove the Assets from the database */
288 try {
289 AssetDB assetDB = AssetDB.instance();
290 assetDB.deleteAsset(one);
291 assetDB.removeAssetFromAllCollections(one);
292 this.assertEquals(size, collection.size());
293 assetDB.removeAssetFromAllCollections(one);
294 }
295 catch (SQLException ex) {
296 this.fail("Unexpected SQL Exception caught in testSize : " +
297 ex.getMessage());
298 }
299 }
300
301 protected void tearDown() throws Exception {
302 collection = null;
303 super.tearDown();
304 }
305 }