Index: trunk/test/integration/TaskSearchServiceTests.groovy
===================================================================
--- trunk/test/integration/TaskSearchServiceTests.groovy	(revision 514)
+++ trunk/test/integration/TaskSearchServiceTests.groovy	(revision 529)
@@ -121,9 +121,9 @@
     void testGetPersonsTasks() {
 
-        def result
         def p = [:]
+        def params = [:]
 
         // Todays tasks should be returned, since Person #1 is lead and created the tasks.
-        def tasks = taskSearchService.getPersonsTasks([:])
+        def tasks = taskSearchService.getPersonsTasks(params)
         assert tasks.totalCount == taskCount
 
@@ -131,16 +131,16 @@
         taskA.trash = true
         taskA.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:]).totalCount == taskCount - 1
+        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 1
         taskB.trash = true
         taskB.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:]).totalCount == taskCount - 2
+        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 2
 
         // Restored tasks should be returned.
         taskA.trash = false
         taskA.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:]).totalCount == taskCount - 1
+        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 1
         taskB.trash = false
         taskB.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:]).totalCount == taskCount
+        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount
 
         // Tomorrows tasks should not be returned.
@@ -148,8 +148,8 @@
         taskA.targetCompletionDate = dateUtilService.tomorrow
         taskA.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:]).totalCount == taskCount - 1
+        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 1
 
         // Tomorrows tasks should be returned, if we ask for them.
-        assert taskSearchService.getPersonsTasks([:], null, dateUtilService.today, dateUtilService.tomorrow+1).totalCount == taskCount
+        assert taskSearchService.getPersonsTasks(params, null, dateUtilService.today, dateUtilService.tomorrow+1).totalCount == taskCount
 
         // Yesterdays tasks should not be returned.
@@ -157,8 +157,8 @@
         taskA.targetCompletionDate = dateUtilService.yesterday
         taskA.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:]).totalCount == taskCount - 1
+        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 1
 
         // Yesterdays tasks should be returned, if we ask for them.
-        assert taskSearchService.getPersonsTasks([:], null, dateUtilService.yesterday, dateUtilService.tomorrow).totalCount == taskCount
+        assert taskSearchService.getPersonsTasks(params, null, dateUtilService.yesterday, dateUtilService.tomorrow).totalCount == taskCount
 
         // Tasks that span today should be returned.
@@ -166,10 +166,10 @@
         taskA.targetCompletionDate = dateUtilService.tomorrow
         taskA.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:]).totalCount == taskCount
+        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount
 
         // Tasks for a different person should not be returned.
         taskA.leadPerson = Person.get(2)
         taskA.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:]).totalCount == taskCount - 1
+        assert taskSearchService.getPersonsTasks(params).totalCount == taskCount - 1
 
         // Tasks for a specified leadPerson should be returned.
@@ -177,12 +177,12 @@
         taskA.leadPerson = Person.get(2)
         taskA.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:], Person.get(2)).totalCount == 0
+        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 0
         taskA.approved = true
         taskA.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:], Person.get(2)).totalCount == 1
+        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 1
         // Moving the task to the trash, stops it being returned.
         taskA.trash = true
         taskA.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:], Person.get(2)).totalCount == 0
+        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 0
 
         // Tasks assigned to a person should be returned.
@@ -193,8 +193,8 @@
                 estimatedMinute: 20]
         assert assignedPersonService.save(p).error == null
-        assert taskSearchService.getPersonsTasks([:], Person.get(2)).totalCount == 0
+        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 0
         taskB.approved = true
         taskB.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:], Person.get(2)).totalCount == 1
+        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 1
 
         // Tasks assigned to a person via a group should be returned.
@@ -209,10 +209,64 @@
                 estimatedMinute: 30]
         assert assignedGroupService.save(p).error == null
-        assert taskSearchService.getPersonsTasks([:], Person.get(2)).totalCount == 1 // Only taskB from above.
+        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 1 // Only taskB from above.
         taskA.approved = true
         taskA.save(flush:true)
-        assert taskSearchService.getPersonsTasks([:], Person.get(2)).totalCount == 2 // taskA and taskB.
+        assert taskSearchService.getPersonsTasks(params, Person.get(2)).totalCount == 2 // taskA and taskB.
 
     } // testGetTasks()
 
+    void testGetBudgetTasks() {
+
+        def tasks
+        def params = [:]
+        def today = dateUtilService.today
+        def yesterday = dateUtilService.yesterday
+        def tomorrow = dateUtilService.tomorrow
+        def unplanned = TaskBudgetStatus.read(1)
+        def planned = TaskBudgetStatus.read(2)
+
+        assert planned != null
+        assert unplanned != null
+
+        // Default is to return planned.
+        // TaskA and taskB should be unplanned and therefore not returned.
+        tasks = taskSearchService.getBudgetTasks(params)
+        assert tasks.totalCount == 0
+        tasks = taskSearchService.getBudgetTasks(params, planned)
+        assert tasks.totalCount == 0
+
+        tasks = taskSearchService.getBudgetTasks(params, unplanned)
+        assert tasks.totalCount == taskCount
+        assert tasks.contains(taskA)
+        assert tasks.contains(taskB)
+
+        // Planned tasks are returned.
+        taskA.taskBudgetStatus = planned
+        taskA.save(flush:true)
+        tasks = taskSearchService.getBudgetTasks(params, planned)
+        assert tasks.totalCount == 1
+        assert tasks.contains(taskA)
+
+        // Tasks are returned when dates and budget status are specified.
+        tasks = taskSearchService.getBudgetTasks(params, planned, today, tomorrow)
+        assert tasks.totalCount == 1
+        assert tasks.contains(taskA)
+        tasks = taskSearchService.getBudgetTasks(params, unplanned, today, tomorrow)
+        assert tasks.totalCount == 1
+        assert tasks.contains(taskB)
+
+        // No tasks for yesterday
+        tasks = taskSearchService.getBudgetTasks(params, null, yesterday, today)
+        assert tasks.totalCount == 0
+
+        // Tasks that span today are returned.
+        taskA.targetStartDate = yesterday
+        taskA.targetCompletionDate = tomorrow+2
+        taskA.save(flush:true)
+        tasks = taskSearchService.getBudgetTasks(params, planned, today, tomorrow)
+        assert tasks.totalCount == 1
+        assert tasks.contains(taskA)
+
+    } // testGetBudgetTasks()
+
 } // end class
