# 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(atom.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"})
#       @mailViewFilterStub = categoryId: -> "inbox-id"
#       @categories = []
#
#       spyOn(CategoryStore, "getStandardCategory").andCallFake (cat) =>
#         if cat in @categories
#           return {id: "cat-id", name: cat}
#         else return null
#
#     afterEach ->
#       atom.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", ->
#       atom.testOrganizationUnit = "label"
#       spyOn(RemoveThreadHelper, "_currentAccount").andReturn new Account
#         provider: "eas"
#         organizationUnit: "label"
#       @categories = ["all", "trash"]
#       t = RemoveThreadHelper.getRemovalTask([], @mailViewFilterStub)
#       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"]
#       atom.testOrganizationUnit = "label"
#       spyOn(RemoveThreadHelper, "_currentAccount").andReturn new Account
#         provider: "gmail"
#         organizationUnit: "label"
#       t = RemoveThreadHelper.getRemovalTask([], @mailViewFilterStub)
#       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"]
#       atom.testOrganizationUnit = "folder"
#       spyOn(RemoveThreadHelper, "_currentAccount").andReturn new Account
#         provider: "eas"
#         organizationUnit: "folder"
#       t = RemoveThreadHelper.getRemovalTask([], @mailViewFilterStub)
#       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"]
#       atom.testOrganizationUnit = "folder"
#       spyOn(RemoveThreadHelper, "_currentAccount").andReturn new Account
#         provider: "gmail"
#         organizationUnit: "folder"
#       t = RemoveThreadHelper.getRemovalTask([], @mailViewFilterStub)
#       expect(t instanceof ChangeFolderTask).toBe true
#       expect(t.folder.name).toBe "archive"
