From 877dd6ebde13be3e1165d6a3e577c845eebcec3c Mon Sep 17 00:00:00 2001 From: Juan Tejada Date: Fri, 22 Jan 2016 14:52:19 -0800 Subject: [PATCH] Fix specs for destroy and syncback category tasks --- spec/tasks/destroy-category-task-spec.coffee | 12 ++++++++++++ spec/tasks/syncback-category-task-spec.coffee | 13 +++++++++++++ src/flux/tasks/syncback-category-task.coffee | 1 + 3 files changed, 26 insertions(+) diff --git a/spec/tasks/destroy-category-task-spec.coffee b/spec/tasks/destroy-category-task-spec.coffee index c2e08ada1..9dcc27840 100644 --- a/spec/tasks/destroy-category-task-spec.coffee +++ b/spec/tasks/destroy-category-task-spec.coffee @@ -1,6 +1,8 @@ {DestroyCategoryTask, NylasAPI, Task, + Category, + AccountStore, APIError, Category, DatabaseStore, @@ -19,6 +21,11 @@ describe "DestroyCategoryTask", -> nameOf = (fn) -> fn.calls[0].args[0].body.display_name + makeAccount = ({usesFolders, usesLabels} = {}) -> + spyOn(AccountStore, "accountForId").andReturn { + usesFolders: -> usesFolders + usesLabels: -> usesLabels + } makeTask = -> category = new Category displayName: "important emails" @@ -69,27 +76,32 @@ describe "DestroyCategoryTask", -> spyOn(NylasAPI, "makeRequest").andCallFake -> Promise.resolve("null") it "sends API req to /labels if user uses labels", -> + makeAccount(usesLabels: true) task = makeTask() task.performRemote() expect(pathOf(NylasAPI.makeRequest)).toBe "/labels/server-444" it "sends API req to /folders if user uses folders", -> + makeAccount(usesFolders: true) task = makeTask() task.performRemote() expect(pathOf(NylasAPI.makeRequest)).toBe "/folders/server-444" it "sends DELETE request", -> + makeAccount() task = makeTask() task.performRemote() expect(methodOf(NylasAPI.makeRequest)).toBe "DELETE" it "sends the account id", -> + makeAccount() task = makeTask() task.performRemote() expect(accountIdOf(NylasAPI.makeRequest)).toBe "account 123" describe "when request fails", -> beforeEach -> + makeAccount() spyOn(NylasEnv, 'emitError') spyOn(NylasAPI, 'makeRequest').andCallFake -> Promise.reject(new APIError({statusCode: 403})) diff --git a/spec/tasks/syncback-category-task-spec.coffee b/spec/tasks/syncback-category-task-spec.coffee index 4db4d8e60..36bb98c41 100644 --- a/spec/tasks/syncback-category-task-spec.coffee +++ b/spec/tasks/syncback-category-task-spec.coffee @@ -1,4 +1,6 @@ {NylasAPI, + Category, + AccountStore, DatabaseStore, SyncbackCategoryTask, DatabaseTransaction} = require "nylas-exports" @@ -14,6 +16,12 @@ describe "SyncbackCategoryTask", -> nameOf = (fn) -> fn.calls[0].args[0].body.display_name + makeAccount = ({usesFolders, usesLabels} = {}) -> + spyOn(AccountStore, "accountForId").andReturn { + usesFolders: -> usesFolders + usesLabels: -> usesLabels + } + makeTask = -> category = new Category displayName: "important emails" @@ -29,26 +37,31 @@ describe "SyncbackCategoryTask", -> spyOn(DatabaseTransaction.prototype, "persistModel") it "sends API req to /labels if the account uses labels", -> + makeAccount(usesLabels: true) task = makeTask() task.performRemote({}) expect(pathOf(NylasAPI.makeRequest)).toBe "/labels" it "sends API req to /folders if the account uses folders", -> + makeAccount(usesFolders: true) task = makeTask() task.performRemote({}) expect(pathOf(NylasAPI.makeRequest)).toBe "/folders" it "sends the account id", -> + makeAccount() task = makeTask() task.performRemote({}) expect(accountIdOf(NylasAPI.makeRequest)).toBe "account 123" it "sends the display name in the body", -> + makeAccount() task = makeTask() task.performRemote({}) expect(nameOf(NylasAPI.makeRequest)).toBe "important emails" it "adds server id to the category, then saves the category", -> + makeAccount() waitsForPromise -> task = makeTask() task.performRemote({}) diff --git a/src/flux/tasks/syncback-category-task.coffee b/src/flux/tasks/syncback-category-task.coffee index 47732e31a..b6cba34e4 100644 --- a/src/flux/tasks/syncback-category-task.coffee +++ b/src/flux/tasks/syncback-category-task.coffee @@ -1,5 +1,6 @@ CategoryStore = require '../stores/category-store' DatabaseStore = require '../stores/database-store' +AccountStore = require '../stores/account-store' {generateTempId} = require '../models/utils' Task = require './task' NylasAPI = require '../nylas-api'