diff --git a/spec/app/root-view-spec.coffee b/spec/app/root-view-spec.coffee index ca5f85302..0b7399c4e 100644 --- a/spec/app/root-view-spec.coffee +++ b/spec/app/root-view-spec.coffee @@ -397,6 +397,14 @@ describe "RootView", -> expect(-> rootView.activateExtension({ activate: -> })).toThrow() describe "deactivation", -> + it "is deactivated and removed from the extension list", -> + rootView.activateExtension(extension) + expect(rootView.extensions[extension.name]).toBeTruthy() + spyOn(extension, "deactivate").andCallThrough() + rootView.deactivateExtension(extension) + expect(extension.deactivate).toHaveBeenCalled() + expect(rootView.extensions[extension.name]).toBeFalsy() + it "is deactivated when the rootView is deactivated", -> rootView.activateExtension(extension) spyOn(extension, "deactivate").andCallThrough() diff --git a/spec/extensions/tree-view-spec.coffee b/spec/extensions/tree-view-spec.coffee index 1d1b1bfab..57270c98a 100644 --- a/spec/extensions/tree-view-spec.coffee +++ b/spec/extensions/tree-view-spec.coffee @@ -80,7 +80,7 @@ describe "TreeView", -> describe "when the prototypes deactivate method is called", -> it "calls the deactivate on tree view instance", -> spyOn(treeView, "deactivate").andCallThrough() - TreeView.deactivate() + rootView.deactivateExtension(TreeView) expect(treeView.deactivate).toHaveBeenCalled() it "restores expanded directories and selected file when deserialized", -> diff --git a/src/app/root-view.coffee b/src/app/root-view.coffee index ac117aeb9..1364320e9 100644 --- a/src/app/root-view.coffee +++ b/src/app/root-view.coffee @@ -87,6 +87,10 @@ class RootView extends View @extensions[extension.name] = extension extension.activate(this, @extensionStates[extension.name]) + deactivateExtension: (extension) -> + extension.deactivate?() + delete @extensions[extension.name] + deactivate: -> atom.rootViewStates[$windowNumber] = JSON.stringify(@serialize()) extension.deactivate?() for name, extension of @extensions