Mailspring/spec/tasks/task-factory-spec.coffee
Juan Tejada a5383d492f fix(remove-from-view): Update remove from view (shortcut) behavior
Summary:
- Now behaves exactly like in Gmail:
  - If viewing inbox, it will archive or trash, depending on setting
  - If viewing starred, will unstar
  - If viewing trash, will move to inbox
  - If viewing label, will remove label (no folder support)
  - No op otherwise
- Updates TaskFactory helpers and adds some helper methods
- Updates specs

Test Plan: - Manual

Reviewers: evan, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2492
2016-02-01 17:40:42 -08:00

90 lines
3.9 KiB
CoffeeScript

# TODO
# Account = require '../../src/flux/models/account'
# CategoryStore = require '../../src/flux/stores/category-store'
# RemoveThreadHelper = require '../../src/services/remove-thread-helper'
#
# ChangeFolderTask = require '../../src/flux/tasks/change-folder-task'
# ChangeLabelsTask = require '../../src/flux/tasks/change-labels-task'
#
# describe "RemoveThreadHelper", ->
# describe "removeType", ->
# it "returns null if there's no current account", ->
# spyOn(RemoveThreadHelper, "_currentAccount").andReturn null
# expect(RemoveThreadHelper.removeType()).toBe null
#
# it "returns the type if it's saved", ->
# spyOn(NylasEnv.config, "get").andReturn "trash"
# expect(RemoveThreadHelper.removeType()).toBe "trash"
#
# it "returns the archive category if it exists", ->
# spyOn(CategoryStore, "getStandardCategory").andReturn {name: "archive"}
# expect(RemoveThreadHelper.removeType()).toBe "archive"
#
# it "defaults to archive for Gmail", ->
# spyOn(RemoveThreadHelper, "_currentAccount").andReturn provider: "gmail"
# expect(RemoveThreadHelper.removeType()).toBe "archive"
#
# it "defaults to trash for everything else", ->
# spyOn(RemoveThreadHelper, "_currentAccount").andReturn provider: "eas"
# expect(RemoveThreadHelper.removeType()).toBe "trash"
#
# describe "getRemovalTask", ->
# beforeEach ->
# spyOn(CategoryStore, "byId").andReturn({id: "inbox-id", name: "inbox"})
# @mailboxPerspectiveStub = categoryId: -> "inbox-id"
# @categories = []
#
# spyOn(CategoryStore, "getStandardCategory").andCallFake (cat) =>
# if cat in @categories
# return {id: "cat-id", name: cat}
# else return null
#
# afterEach ->
# NylasEnv.testOrganizationUnit = null
#
# it "returns null if there's no current account", ->
# spyOn(RemoveThreadHelper, "_currentAccount").andReturn null
# expect(RemoveThreadHelper.getRemovalTask()).toBe null
#
# it "creates the task when using labels and trashing", ->
# NylasEnv.testOrganizationUnit = "label"
# spyOn(RemoveThreadHelper, "_currentAccount").andReturn new Account
# provider: "eas"
# organizationUnit: "label"
# @categories = ["all", "trash"]
# t = RemoveThreadHelper.getRemovalTask([], @mailboxPerspectiveStub)
# expect(t instanceof ChangeLabelsTask).toBe true
# expect(t.labelsToRemove[0].name).toBe "inbox"
# expect(t.labelsToAdd[0].name).toBe "trash"
#
# it "creates the task when using labels and archiving", ->
# @categories = ["all", "archive", "trash"]
# NylasEnv.testOrganizationUnit = "label"
# spyOn(RemoveThreadHelper, "_currentAccount").andReturn new Account
# provider: "gmail"
# organizationUnit: "label"
# t = RemoveThreadHelper.getRemovalTask([], @mailboxPerspectiveStub)
# expect(t instanceof ChangeLabelsTask).toBe true
# expect(t.labelsToRemove[0].name).toBe "inbox"
# expect(t.labelsToAdd[0].name).toBe "all"
#
# it "creates the task when using folders and trashing", ->
# @categories = ["all", "trash"]
# NylasEnv.testOrganizationUnit = "folder"
# spyOn(RemoveThreadHelper, "_currentAccount").andReturn new Account
# provider: "eas"
# organizationUnit: "folder"
# t = RemoveThreadHelper.getRemovalTask([], @mailboxPerspectiveStub)
# expect(t instanceof ChangeFolderTask).toBe true
# expect(t.folder.name).toBe "trash"
#
# it "creates the task when using folders and archiving", ->
# @categories = ["all", "archive", "trash"]
# NylasEnv.testOrganizationUnit = "folder"
# spyOn(RemoveThreadHelper, "_currentAccount").andReturn new Account
# provider: "gmail"
# organizationUnit: "folder"
# t = RemoveThreadHelper.getRemovalTask([], @mailboxPerspectiveStub)
# expect(t instanceof ChangeFolderTask).toBe true
# expect(t.folder.name).toBe "archive"