source: trunk/test/integration/TaskSearchServiceTests.groovy @ 644

Last change on this file since 644 was 640, checked in by gav, 14 years ago

Small adjustment to TaskSearchServiceTests and TaskServiceTests tearDown().

File size: 10.1 KB
RevLine 
[511]1import grails.test.*
2
3/**
4* Integration tests for TaskSearchService.
5*/
6class TaskSearchServiceTests extends GroovyTestCase {
7
8    // Data will be saved, not rolled back.
9    // Be sure to clean up in tearDown().
10    boolean transactional = false
11
12    def taskService
13    def dateUtilService
14    def taskSearchService
[514]15    def assignedGroupService
16    def assignedPersonService
[511]17
18    def taskA
19    def taskB
20    def taskCount = 0
21
22    // Setup is called before each test.
23    protected void setUp() {
24        super.setUp()
25
26        // Check environment state.
27        assert Task.count() == 0
28        assert Entry.count() == 0
29        assert TaskModification.count() == 0
30
31        def p = [:]
32        def result
33
34        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
35                taskPriority:TaskPriority.get(2),
36                taskType:TaskType.get(1),
37                leadPerson:Person.get(1),
38                description:"TestA",
39                comment:"Service test task.",
40                targetStartDate: dateUtilService.today,
41                targetCompletionDate: dateUtilService.today]
42
43        result = taskService.save(p)
44        assert result.error == null
45        taskCount++
46        taskA = result.taskInstance.refresh()
47
48        p.description = "TestB"
49        result = taskService.save(p)
50        assert result.error == null
51        taskCount++
52        taskB = result.taskInstance.refresh()
53    }
54
55    // Tear down is called after each test.
56    protected void tearDown() {
57
58        taskService.delete(taskA)
59        taskService.delete(taskB)
60
61        // Ensure that we leave environment clean.
62        assert Task.count() == 0
63        assert TaskModification.count() == 0
64        assert Entry.count() == 0
[640]65
66        super.tearDown()
[511]67    }
68
[514]69
70    /**
71    * Test GetTasks.
72    */
[511]73    void testGetTasks() {
[514]74        // Todays tasks should be returned.
[511]75        def tasks = taskSearchService.getTasks([:])
76        assert tasks.totalCount == taskCount
77
78        // Tasks in the trash should not be returned.
[512]79        taskA.trash = true
80        taskA.save(flush:true)
[511]81        assert taskSearchService.getTasks([:]).totalCount == taskCount - 1
[512]82        taskB.trash = true
83        taskB.save(flush:true)
[511]84        assert taskSearchService.getTasks([:]).totalCount == taskCount - 2
85
86        // Restored tasks should be returned.
[512]87        taskA.trash = false
88        taskA.save(flush:true)
[511]89        assert taskSearchService.getTasks([:]).totalCount == taskCount - 1
[512]90        taskB.trash = false
91        taskB.save(flush:true)
[511]92        assert taskSearchService.getTasks([:]).totalCount == taskCount
93
94        // Tomorrows tasks should not be returned.
[512]95        taskA.targetStartDate = dateUtilService.tomorrow
96        taskA.targetCompletionDate = dateUtilService.tomorrow
97        taskA.save(flush:true)
[511]98        assert taskSearchService.getTasks([:]).totalCount == taskCount - 1
99
[512]100        // Tomorrows tasks should be returned, if we ask for them.
101        assert taskSearchService.getTasks([:], dateUtilService.today, dateUtilService.tomorrow+1).totalCount == taskCount
102
[511]103        // Yesterdays tasks should not be returned.
[512]104        taskA.targetStartDate = dateUtilService.yesterday
105        taskA.targetCompletionDate = dateUtilService.yesterday
106        taskA.save(flush:true)
[511]107        assert taskSearchService.getTasks([:]).totalCount == taskCount - 1
108
[512]109        // Yesterdays tasks should be returned, if we ask for them.
110        assert taskSearchService.getTasks([:], dateUtilService.yesterday, dateUtilService.tomorrow).totalCount == taskCount
111
[511]112        // Tasks that span today should be returned.
[512]113        taskA.targetStartDate = dateUtilService.yesterday
114        taskA.targetCompletionDate = dateUtilService.tomorrow
115        taskA.save(flush:true)
[511]116        assert taskSearchService.getTasks([:]).totalCount == taskCount
117    } // testGetTasks()
118
[514]119    /**
120    * Test GetPersonsTasks.
121    */
122    void testGetPersonsTasks() {
123
124        def p = [:]
[529]125        def params = [:]
[514]126
127        // Todays tasks should be returned, since Person #1 is lead and created the tasks.
[529]128        def tasks = taskSearchService.getPersonsTasks(params)
[514]129        assert tasks.totalCount == taskCount
130
131        // Tasks in the trash should not be returned.
132        taskA.trash = true
133        taskA.save(flush:true)
[529]134        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 1
[514]135        taskB.trash = true
136        taskB.save(flush:true)
[529]137        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 2
[514]138
139        // Restored tasks should be returned.
140        taskA.trash = false
141        taskA.save(flush:true)
[529]142        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 1
[514]143        taskB.trash = false
144        taskB.save(flush:true)
[529]145        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount
[514]146
147        // Tomorrows tasks should not be returned.
148        taskA.targetStartDate = dateUtilService.tomorrow
149        taskA.targetCompletionDate = dateUtilService.tomorrow
150        taskA.save(flush:true)
[529]151        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 1
[514]152
153        // Tomorrows tasks should be returned, if we ask for them.
[529]154        assert taskSearchService.getPersonsTasks(params, null, dateUtilService.today, dateUtilService.tomorrow+1).totalCount == taskCount
[514]155
156        // Yesterdays tasks should not be returned.
157        taskA.targetStartDate = dateUtilService.yesterday
158        taskA.targetCompletionDate = dateUtilService.yesterday
159        taskA.save(flush:true)
[529]160        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 1
[514]161
162        // Yesterdays tasks should be returned, if we ask for them.
[529]163        assert taskSearchService.getPersonsTasks(params, null, dateUtilService.yesterday, dateUtilService.tomorrow).totalCount == taskCount
[514]164
165        // Tasks that span today should be returned.
166        taskA.targetStartDate = dateUtilService.yesterday
167        taskA.targetCompletionDate = dateUtilService.tomorrow
168        taskA.save(flush:true)
[529]169        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount
[514]170
171        // Tasks for a different person should not be returned.
172        taskA.leadPerson = Person.get(2)
173        taskA.save(flush:true)
[529]174        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 1
[514]175
176        // Tasks for a specified leadPerson should be returned.
177        // But only if approved since this person did not create the tasks.
178        taskA.leadPerson = Person.get(2)
179        taskA.save(flush:true)
[529]180        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 0
[514]181        taskA.approved = true
182        taskA.save(flush:true)
[529]183        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 1
[514]184        // Moving the task to the trash, stops it being returned.
185        taskA.trash = true
186        taskA.save(flush:true)
[529]187        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 0
[514]188
189        // Tasks assigned to a person should be returned.
190        // But only if approved.
191        p = [person: Person.get(2),
192                task: taskB,
193                estimatedHour: 1,
194                estimatedMinute: 20]
195        assert assignedPersonService.save(p).error == null
[529]196        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 0
[514]197        taskB.approved = true
198        taskB.save(flush:true)
[529]199        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 1
[514]200
201        // Tasks assigned to a person via a group should be returned.
202        // But only if approved.
203        Person.get(2).addToPersonGroups(PersonGroup.read(1)).save(flush:true)
204        taskA.trash = false
205        taskA.approved = false
206        taskA.save(flush:true)
207        p = [personGroup: PersonGroup.read(1),
208                task: taskA,
209                estimatedHour: 2,
210                estimatedMinute: 30]
211        assert assignedGroupService.save(p).error == null
[529]212        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 1 // Only taskB from above.
[514]213        taskA.approved = true
214        taskA.save(flush:true)
[529]215        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 2 // taskA and taskB.
[514]216
217    } // testGetTasks()
218
[529]219    void testGetBudgetTasks() {
220
221        def tasks
222        def params = [:]
223        def today = dateUtilService.today
224        def yesterday = dateUtilService.yesterday
225        def tomorrow = dateUtilService.tomorrow
226        def unplanned = TaskBudgetStatus.read(1)
227        def planned = TaskBudgetStatus.read(2)
228
229        assert planned != null
230        assert unplanned != null
231
232        // Default is to return planned.
233        // TaskA and taskB should be unplanned and therefore not returned.
234        tasks = taskSearchService.getBudgetTasks(params)
235        assert tasks.totalCount == 0
236        tasks = taskSearchService.getBudgetTasks(params, planned)
237        assert tasks.totalCount == 0
238
239        tasks = taskSearchService.getBudgetTasks(params, unplanned)
240        assert tasks.totalCount == taskCount
241        assert tasks.contains(taskA)
242        assert tasks.contains(taskB)
243
244        // Planned tasks are returned.
245        taskA.taskBudgetStatus = planned
246        taskA.save(flush:true)
247        tasks = taskSearchService.getBudgetTasks(params, planned)
248        assert tasks.totalCount == 1
249        assert tasks.contains(taskA)
250
251        // Tasks are returned when dates and budget status are specified.
252        tasks = taskSearchService.getBudgetTasks(params, planned, today, tomorrow)
253        assert tasks.totalCount == 1
254        assert tasks.contains(taskA)
255        tasks = taskSearchService.getBudgetTasks(params, unplanned, today, tomorrow)
256        assert tasks.totalCount == 1
257        assert tasks.contains(taskB)
258
259        // No tasks for yesterday
260        tasks = taskSearchService.getBudgetTasks(params, null, yesterday, today)
261        assert tasks.totalCount == 0
262
263        // Tasks that span today are returned.
264        taskA.targetStartDate = yesterday
265        taskA.targetCompletionDate = tomorrow+2
266        taskA.save(flush:true)
267        tasks = taskSearchService.getBudgetTasks(params, planned, today, tomorrow)
268        assert tasks.totalCount == 1
269        assert tasks.contains(taskA)
270
271    } // testGetBudgetTasks()
272
[511]273} // end class
Note: See TracBrowser for help on using the repository browser.