func TestMarkAsDispatched(t *testing.T) { var ( taskId string hostId string buildId string task *Task myHost *host.Host b *build.Build ) Convey("With a task", t, func() { taskId = "t1" hostId = "h1" buildId = "b1" task = &Task{ Id: taskId, BuildId: buildId, } myHost = &host.Host{ Id: hostId, } b = &build.Build{ Id: buildId, Tasks: []build.TaskCache{ {Id: taskId}, }, } testutil.HandleTestingErr( db.ClearCollections(TasksCollection, build.Collection, host.Collection), t, "Error clearing test collections") So(task.Insert(), ShouldBeNil) So(myHost.Insert(), ShouldBeNil) So(b.Insert(), ShouldBeNil) Convey("when marking the task as dispatched, the fields for"+ " the task, the host it is on, and the build it is a part of"+ " should be set to reflect this", func() { // mark the task as dispatched So(task.MarkAsDispatched(myHost, time.Now()), ShouldBeNil) // make sure the task's fields were updated, both in memory and // in the db So(task.DispatchTime, ShouldNotResemble, time.Unix(0, 0)) So(task.Status, ShouldEqual, evergreen.TaskDispatched) So(task.HostId, ShouldEqual, myHost.Id) So(task.LastHeartbeat, ShouldResemble, task.DispatchTime) task, err := FindTask(taskId) So(err, ShouldBeNil) So(task.DispatchTime, ShouldNotResemble, time.Unix(0, 0)) So(task.Status, ShouldEqual, evergreen.TaskDispatched) So(task.HostId, ShouldEqual, myHost.Id) So(task.LastHeartbeat, ShouldResemble, task.DispatchTime) // make sure the build's fields were updated in the db b, err = build.FindOne(build.ById(buildId)) So(err, ShouldBeNil) So(b.Tasks[0].Status, ShouldEqual, evergreen.TaskDispatched) }) }) }