001: package jfb.tst.tools.activitymgr.core;
002:
003: import java.util.Calendar;
004: import java.util.GregorianCalendar;
005:
006: import jfb.tools.activitymgr.core.DbException;
007: import jfb.tools.activitymgr.core.ModelException;
008: import jfb.tools.activitymgr.core.ModelMgr;
009: import jfb.tools.activitymgr.core.beans.Collaborator;
010: import jfb.tools.activitymgr.core.beans.Contribution;
011: import jfb.tools.activitymgr.core.beans.Duration;
012: import jfb.tools.activitymgr.core.beans.Task;
013: import jfb.tst.tools.activitymgr.AbstractModelTestCase;
014:
015: public class ContributionTest extends AbstractModelTestCase {
016:
017: /** Taches de test */
018: private Task rootTask;
019: private Task task1;
020: private Task task11;
021: private Task task111;
022: private Task task112;
023: private Task task2;
024:
025: /** Collaborateurs de test */
026: private Collaborator col1;
027: private Collaborator col2;
028: private Duration duration;
029:
030: /** Contributions */
031: private Contribution c1;
032: private Contribution c2;
033: private Contribution c3;
034:
035: private void createSampleObjects(boolean createContributions)
036: throws DbException, ModelException {
037: // Création des tâches de test
038: rootTask = ModelMgr.createNewTask(null);
039: rootTask.setName("Root task");
040: rootTask = ModelMgr.updateTask(rootTask);
041:
042: task1 = new Task();
043: task1.setCode("T1");
044: task1.setName("Task 1");
045: task1 = ModelMgr.createTask(rootTask, task1);
046:
047: task11 = new Task();
048: task11.setCode("T11");
049: task11.setName("Task 11");
050: task11 = ModelMgr.createTask(task1, task11);
051:
052: task111 = new Task();
053: task111.setCode("T111");
054: task111.setName("Task 111");
055: task111.setBudget(30);
056: task111.setInitiallyConsumed(5);
057: task111.setTodo(25);
058: task111 = ModelMgr.createTask(task11, task111);
059:
060: task112 = new Task();
061: task112.setCode("T112");
062: task112.setName("Task 112");
063: task112.setBudget(30);
064: task112.setInitiallyConsumed(5);
065: task112.setTodo(25);
066: task112 = ModelMgr.createTask(task11, task112);
067:
068: task2 = new Task();
069: task2.setCode("T2");
070: task2.setName("Task 2");
071: task2.setBudget(60);
072: task2.setInitiallyConsumed(10);
073: task2.setTodo(50);
074: task2 = ModelMgr.createTask(rootTask, task2);
075:
076: // Rechargement des taches pour mise à jour
077: // des nombres de sous-taches
078: rootTask = ModelMgr.getTask(rootTask.getId());
079: task1 = ModelMgr.getTask(task1.getId());
080: task11 = ModelMgr.getTask(task11.getId());
081: task111 = ModelMgr.getTask(task111.getId());
082: task112 = ModelMgr.getTask(task112.getId());
083: task2 = ModelMgr.getTask(task2.getId());
084:
085: // Création de 2 collaborateurs
086: col1 = ModelMgr.createNewCollaborator();
087: col1.setFirstName("ColFN1");
088: col1.setLastName("ColLN1");
089: col1 = ModelMgr.updateCollaborator(col1);
090:
091: col2 = ModelMgr.createNewCollaborator();
092: col2.setFirstName("ColFN2");
093: col2.setLastName("ColLN2");
094: col2 = ModelMgr.updateCollaborator(col2);
095:
096: // Récupération des durées
097: duration = new Duration();
098: duration.setId(100);
099: duration = ModelMgr.createDuration(duration);
100:
101: // Création de contributions
102: if (createContributions) {
103: Calendar date = new GregorianCalendar();
104:
105: c1 = new Contribution();
106: c1.setDate(date);
107: c1.setContributorId(col1.getId());
108: c1.setDurationId(duration.getId());
109: c1.setTaskId(task111.getId());
110: ModelMgr.createContribution(c1);
111:
112: date.add(Calendar.DATE, 1);
113: c2 = new Contribution();
114: c2.setDate(date);
115: c2.setContributorId(col2.getId());
116: c2.setDurationId(duration.getId());
117: c2.setTaskId(task112.getId());
118: ModelMgr.createContribution(c2);
119:
120: date.add(Calendar.MONTH, 1);
121: c3 = new Contribution();
122: c3.setDate(date);
123: c3.setContributorId(col2.getId());
124: c3.setDurationId(duration.getId());
125: c3.setTaskId(task111.getId());
126: ModelMgr.createContribution(c3);
127: }
128:
129: }
130:
131: public void removeSampleObjects() throws DbException,
132: ModelException {
133: if (c1 != null)
134: ModelMgr.removeContribution(c1);
135: if (c2 != null)
136: ModelMgr.removeContribution(c2);
137: if (c2 != null)
138: ModelMgr.removeContribution(c3);
139: removeRecursively(rootTask);
140: ModelMgr.removeCollaborator(col1);
141: ModelMgr.removeCollaborator(col2);
142: ModelMgr.removeDuration(duration);
143: }
144:
145: private static void removeRecursively(Task task)
146: throws DbException, ModelException {
147: // Récupération des taches filles
148: Task[] subTasks = ModelMgr.getSubtasks(task);
149: for (int i = subTasks.length - 1; i >= 0; i--) {
150: Task subTask = subTasks[i];
151: // Suppression des taches filles
152: removeRecursively(subTask);
153: }
154: // Suppression de la tache
155: ModelMgr.removeTask(task);
156: }
157:
158: public void testCreate() throws DbException, ModelException {
159: // Création des taches de test
160: createSampleObjects(false);
161:
162: int year = 2005;
163: int month = 6;
164: int day = 13;
165: Calendar cal = new GregorianCalendar(year, month - 1, day);
166:
167: // Test...
168: Contribution c = new Contribution();
169: c.setContributorId(col1.getId());
170: c.setDurationId(duration.getId());
171: c.setDate(cal);
172:
173: // Vérification du calendrier
174: assertEquals(year, c.getYear());
175: assertEquals(month, c.getMonth());
176: assertEquals(day, c.getDay());
177:
178: // Création de la contribution ur une tache avec de sous taches
179: try {
180: c.setTaskId(rootTask.getId());
181: c = ModelMgr.createContribution(c);
182: fail("A tasks that admit sub tasks must not accept a contribution");
183: } catch (ModelException expected) {
184: }
185:
186: // Création de la contribution sur une tache sans sous taches
187: c.setTaskId(task111.getId());
188: c = ModelMgr.createContribution(c);
189:
190: // Recherche de cette contribution
191: Contribution[] cs = ModelMgr.getDaysContributions(col1,
192: task111, cal, cal);
193: assertNotNull(cs);
194: assertEquals(1, cs.length);
195: assertEquals(cs[0], c);
196:
197: // Suppression
198: ModelMgr.removeContribution(c);
199:
200: // Nouvelle recherche => à présent, la recherche ne doit rien ramener
201: cs = ModelMgr.getDaysContributions(col1, task111, cal, cal);
202: assertNotNull(cs);
203: assertEquals(1, cs.length);
204: assertNull(cs[0]);
205:
206: // Suppression des taches de test
207: removeSampleObjects();
208: }
209:
210: public void testGetContributions() throws DbException,
211: ModelException {
212: // Création des taches de test
213: createSampleObjects(true);
214:
215: Contribution[] cs = null;
216:
217: // Test requête avec tache racine
218: cs = ModelMgr
219: .getContributions(rootTask, null, null, null, null);
220: assertNotNull(cs);
221: assertEquals(3, cs.length);
222: assertEquals(c1, cs[0]);
223: assertEquals(c2, cs[1]);
224: assertEquals(c3, cs[2]);
225:
226: // Test requête avec une tache
227: cs = ModelMgr.getContributions(task111, null, null, null, null);
228: assertNotNull(cs);
229: assertEquals(2, cs.length);
230: assertEquals(c1, cs[0]);
231: assertEquals(c3, cs[1]);
232:
233: // Test requête avec une tache et un collaborateur
234: cs = ModelMgr.getContributions(task111, col1, null, null, null);
235: assertNotNull(cs);
236: assertEquals(1, cs.length);
237: assertEquals(c1, cs[0]);
238:
239: // Test requête avec une tache et un collaborateur et un mois
240: cs = ModelMgr.getContributions(task111, col1, new Integer(c1
241: .getYear()), new Integer(c1.getMonth()), new Integer(c1
242: .getDay()));
243: assertNotNull(cs);
244: assertEquals(1, cs.length);
245: assertEquals(c1, cs[0]);
246:
247: // Test requête avec le jour et la tache racine
248: cs = ModelMgr.getContributions(rootTask, null, new Integer(c1
249: .getYear()), new Integer(c1.getMonth()), new Integer(c1
250: .getDay()));
251: assertNotNull(cs);
252: assertEquals(1, cs.length);
253: assertEquals(c1, cs[0]);
254:
255: // Suppression des taches de test
256: removeSampleObjects();
257: }
258:
259: public void testChangeContributionsTask() throws DbException,
260: ModelException {
261: // Création des taches de test
262: createSampleObjects(true);
263:
264: // Vérification avant mise à jour
265: assertEquals(c1.getTaskId(), task111.getId());
266: assertEquals(c2.getTaskId(), task112.getId());
267: assertEquals(c3.getTaskId(), task111.getId());
268:
269: // Changement des contributions
270: Contribution[] cs = new Contribution[] { c1, c2, c3 };
271: ModelMgr.changeContributionTask(cs, task112);
272:
273: // Vérification après mise à jour
274: assertEquals(c1.getTaskId(), task112.getId());
275: assertEquals(c2.getTaskId(), task112.getId());
276: assertEquals(c3.getTaskId(), task112.getId());
277:
278: // Suppression des taches de test
279: removeSampleObjects();
280: }
281: }
|