From b7d829bfa1da7053022c015bd9502f7d66783a3b Mon Sep 17 00:00:00 2001 From: Ben Gotow Date: Wed, 30 Sep 2015 14:09:06 -0700 Subject: [PATCH] fix(change-mail): Fix performRemote never resolving if no threads or messages to process --- spec-nylas/tasks/change-mail-task-spec.coffee | 9 +++++++++ src/flux/tasks/change-mail-task.coffee | 7 +++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/spec-nylas/tasks/change-mail-task-spec.coffee b/spec-nylas/tasks/change-mail-task-spec.coffee index a786cc1aa..d99d10397 100644 --- a/spec-nylas/tasks/change-mail-task-spec.coffee +++ b/spec-nylas/tasks/change-mail-task-spec.coffee @@ -198,6 +198,15 @@ describe "ChangeMailTask", -> expect(@task.performRequests).toHaveBeenCalledWith(Message, @task.messages) expect(@task.performRequests.callCount).toBe(1) + describe "if somehow there are no threads or messages", -> + it "should resolve", -> + @task = new ChangeMailTask() + @task.threads = [] + @task.messages = [] + waitsForPromise => + @task.performRemote().then (code) => + expect(code).toEqual(Task.Status.Finished) + describe "if performRequests resolves", -> it "should resolve with Task.Status.Finished", -> @task = new ChangeMailTask() diff --git a/src/flux/tasks/change-mail-task.coffee b/src/flux/tasks/change-mail-task.coffee index 6bcfbcc27..71bb317fb 100644 --- a/src/flux/tasks/change-mail-task.coffee +++ b/src/flux/tasks/change-mail-task.coffee @@ -38,8 +38,11 @@ mapLimit = (input, numberInParallel, fn) -> outputError = err reject(outputError) - numberInParallel = Math.min(numberInParallel, input.length) - startNext() for n in [0...numberInParallel] + if input.length > 0 + numberInParallel = Math.min(numberInParallel, input.length) + startNext() for n in [0...numberInParallel] + else + resolve([]) # The ChangeMailTask is a base class for all tasks that modify sets of threads or # messages. Subclasses implement `_changesToModel` and `_requestBodyForModel` to