001: package jfb.tst.tools.activitymgr.core;
002:
003: import java.util.GregorianCalendar;
004:
005: import jfb.tools.activitymgr.core.DbException;
006: import jfb.tools.activitymgr.core.ModelException;
007: import jfb.tools.activitymgr.core.ModelMgr;
008: import jfb.tools.activitymgr.core.beans.Collaborator;
009: import jfb.tools.activitymgr.core.beans.Contribution;
010: import jfb.tools.activitymgr.core.beans.Duration;
011: import jfb.tools.activitymgr.core.beans.Task;
012: import jfb.tst.tools.activitymgr.AbstractModelTestCase;
013:
014: public class DurationTest extends AbstractModelTestCase {
015:
016: public void testGetList() throws DbException {
017: Duration[] durations = ModelMgr.getDurations();
018: Duration previousDuration = null;
019: for (int i = 0; i < durations.length; i++) {
020: Duration duration = durations[i];
021: long durationId = duration.getId();
022: assertTrue("Durée nulle", durationId != 0);
023: if (previousDuration != null)
024: assertTrue("Durations are not correctly sorted",
025: durationId > previousDuration.getId());
026: previousDuration = duration;
027: }
028: }
029:
030: public void testNullCreation() throws DbException {
031: // Création de durée nulle
032: try {
033: Duration duration = new Duration();
034: duration.setId(0);
035: ModelMgr.createDuration(duration);
036: fail("Manage to create a null duration");
037: } catch (ModelException ignored) {
038: // success!
039: }
040: }
041:
042: public void testConflictingCreation() throws DbException,
043: ModelException {
044: // Création d'une durée
045: Duration newDuration = generateNewDuration();
046: newDuration = ModelMgr.createDuration(newDuration);
047: try {
048: // Tentative de recréation
049: ModelMgr.createDuration(newDuration);
050: fail(""
051: + newDuration
052: + " is supposed to exist in database, so it musn't be possible to create it");
053: } catch (ModelException ignored) {
054: // success!
055: // Suppression
056: ModelMgr.removeDuration(newDuration);
057: }
058: }
059:
060: public void testRemove() throws DbException, ModelException {
061: Duration duration = generateNewDuration();
062:
063: // Création
064: duration = ModelMgr.createDuration(duration);
065: assertTrue(ModelMgr.durationExists(duration));
066:
067: // Suppression
068: ModelMgr.removeDuration(duration);
069: assertFalse(ModelMgr.durationExists(duration));
070: }
071:
072: public void testUpdateWithAnExistingDuration() throws DbException,
073: ModelException {
074: // Création
075: Duration duration = generateNewDuration();
076: duration = ModelMgr.createDuration(duration);
077: assertTrue(ModelMgr.durationExists(duration));
078: Duration duration2 = generateNewDuration();
079: duration2 = ModelMgr.createDuration(duration2);
080: assertTrue(ModelMgr.durationExists(duration2));
081:
082: // Modif de la durée en une durée existante
083: try {
084: ModelMgr.updateDuration(duration, duration2);
085: fail("Manage to update a duration whith the value of an existing duration");
086: } catch (ModelException expected) {
087: // Success
088: }
089:
090: // Suppression des données
091: ModelMgr.removeDuration(duration);
092: ModelMgr.removeDuration(duration2);
093: }
094:
095: public void testUpdateWithAnUnusedDuration() throws DbException,
096: ModelException {
097: // Création
098: Duration duration = generateNewDuration();
099: duration = ModelMgr.createDuration(duration);
100: assertTrue(ModelMgr.durationExists(duration));
101:
102: // Modif de la durée en une autre durée
103: Duration oldDuration = duration;
104: duration = generateNewDuration();
105: ModelMgr.updateDuration(oldDuration, duration);
106:
107: // Suppression des données
108: ModelMgr.removeDuration(duration);
109: }
110:
111: public void testUpdateDurationUsedByAContribution()
112: throws DbException, ModelException {
113: // Création
114: Duration duration = generateNewDuration();
115: duration = ModelMgr.createDuration(duration);
116: assertTrue(ModelMgr.durationExists(duration));
117:
118: // Création d'une contribution
119: Collaborator collaborator = ModelMgr.createNewCollaborator();
120: Task task = ModelMgr.createNewTask(null);
121: Contribution ctb = new Contribution();
122: ctb.setContributorId(collaborator.getId());
123: ctb.setTaskId(task.getId());
124: ctb.setDate(new GregorianCalendar());
125: ctb.setDurationId(duration.getId());
126: ctb = ModelMgr.createContribution(ctb);
127:
128: // Tentative de modif d'une durée utilisée
129: try {
130: Duration duration2 = generateNewDuration();
131: duration2 = ModelMgr.updateDuration(duration, duration2);
132: fail("Manage to update a duration used by a contribution");
133: } catch (ModelException expected) {
134: // Success
135: }
136:
137: // Suppression des données
138: ModelMgr.removeContribution(ctb);
139: ModelMgr.removeTask(task);
140: ModelMgr.removeCollaborator(collaborator);
141: ModelMgr.removeDuration(duration);
142: }
143:
144: private Duration generateNewDuration() throws DbException {
145: Duration duration = new Duration();
146: duration.setId(1);
147: // Recherche d'une durée inexistante en base
148: while (ModelMgr.durationExists(duration)) {
149: duration.setId(duration.getId() + 1);
150: }
151: return duration;
152: }
153:
154: }
|