diff --git a/spec/app/atom-package-spec.coffee b/spec/app/atom-package-spec.coffee index e585f43c4..067f2e0e4 100644 --- a/spec/app/atom-package-spec.coffee +++ b/spec/app/atom-package-spec.coffee @@ -4,14 +4,13 @@ fs = require 'fs' describe "AtomPackage", -> describe ".load()", -> - afterEach -> - rootView.deactivate() + beforeEach -> + window.rootView = new RootView describe "when the package metadata includes activation events", -> [packageMainModule, pack] = [] beforeEach -> - new RootView(fixturesProject.getPath()) pack = new AtomPackage(fs.resolve(config.packageDirPaths..., 'package-with-activation-events')) packageMainModule = require 'fixtures/packages/package-with-activation-events/main' spyOn(packageMainModule, 'activate').andCallThrough() @@ -39,7 +38,6 @@ describe "AtomPackage", -> describe "when the package does not specify a main module", -> describe "when the package has an index.coffee", -> it "uses index.coffee as the main module", -> - new RootView(fixturesProject.getPath()) pack = new AtomPackage(fs.resolve(config.packageDirPaths..., 'package-with-module')) packageMainModule = require 'fixtures/packages/package-with-module' spyOn(packageMainModule, 'activate').andCallThrough() @@ -52,7 +50,6 @@ describe "AtomPackage", -> it "does not throw an exception or log an error", -> spyOn(console, "error") spyOn(console, "warn") - new RootView(fixturesProject.getPath()) pack = new AtomPackage(fs.resolve(config.packageDirPaths..., 'package-with-keymaps-manifest')) expect(-> pack.load()).not.toThrow() diff --git a/spec/app/atom-spec.coffee b/spec/app/atom-spec.coffee index b597747be..2c34de5ee 100644 --- a/spec/app/atom-spec.coffee +++ b/spec/app/atom-spec.coffee @@ -3,10 +3,7 @@ RootView = require 'root-view' describe "the `atom` global", -> beforeEach -> - new RootView - - afterEach -> - rootView.deactivate() + window.rootView = new RootView describe "when a package is built and loaded", -> [extension, stylesheetPath] = [] diff --git a/spec/app/editor-spec.coffee b/spec/app/editor-spec.coffee index c2545af36..71793e3ec 100644 --- a/spec/app/editor-spec.coffee +++ b/spec/app/editor-spec.coffee @@ -21,7 +21,8 @@ describe "Editor", -> cachedLineHeight beforeEach -> - new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') editor = rootView.getActiveEditor() buffer = editor.getBuffer() @@ -34,9 +35,6 @@ describe "Editor", -> editor.enableKeymap() editor.isFocused = true - afterEach -> - rootView.remove() - describe "construction", -> it "throws an error if no editor session is given unless deserializing", -> expect(-> new Editor).toThrow() @@ -356,14 +354,11 @@ describe "Editor", -> tempFilePath = null beforeEach -> - rootView.deactivate() - + project.setPath('/tmp') tempFilePath = '/tmp/atom-temp.txt' fs.write(tempFilePath, "") - new RootView(tempFilePath) + rootView.open(tempFilePath) editor = rootView.getActiveEditor() - project = project - expect(editor.getPath()).toBe tempFilePath afterEach -> diff --git a/spec/app/grammar-view-spec.coffee b/spec/app/grammar-view-spec.coffee index 11bf646b1..afa03839d 100644 --- a/spec/app/grammar-view-spec.coffee +++ b/spec/app/grammar-view-spec.coffee @@ -6,10 +6,9 @@ describe "GrammarView", -> [editor, textGrammar, jsGrammar] = [] beforeEach -> - path = require.resolve('fixtures/sample.js') - rootView = new RootView() - project.removeGrammarOverrideForPath(path) - rootView.open(path) + window.rootView = new RootView + project.removeGrammarOverrideForPath('sample.js') + rootView.open('sample.js') editor = rootView.getActiveEditor() rootView.attachToDom() textGrammar = _.find syntax.grammars, (grammar) -> grammar.name is 'Plain Text' @@ -18,9 +17,6 @@ describe "GrammarView", -> expect(jsGrammar).toBeTruthy() expect(editor.getGrammar()).toBe jsGrammar - afterEach -> - rootView.deactivate() - describe "when editor:select-grammar is toggled", -> it "displays a list of all the available grammars", -> editor.trigger 'editor:select-grammar' diff --git a/spec/app/keymap-spec.coffee b/spec/app/keymap-spec.coffee index 20a4cfc38..b813ad50c 100644 --- a/spec/app/keymap-spec.coffee +++ b/spec/app/keymap-spec.coffee @@ -151,10 +151,8 @@ describe "Keymap", -> expect(bazHandler).toHaveBeenCalled() describe "when the event's target is the document body", -> - afterEach -> rootView.deactivate() - it "triggers the mapped event on the rootView", -> - rootView = new RootView + window.rootView = new RootView keymap.bindKeys 'body', 'x': 'foo' fooHandler = jasmine.createSpy("fooHandler") rootView.on 'foo', fooHandler diff --git a/spec/app/root-view-spec.coffee b/spec/app/root-view-spec.coffee index 15e929671..368d095cb 100644 --- a/spec/app/root-view-spec.coffee +++ b/spec/app/root-view-spec.coffee @@ -7,99 +7,53 @@ Editor = require 'editor' {View, $$} = require 'space-pen' describe "RootView", -> - [rootView, pathToOpen] = [] + pathToOpen = null beforeEach -> project.destroy() - window.project = new Project(require.resolve('fixtures/dir')) + project.setPath(project.resolve('dir')) pathToOpen = project.resolve('a') - rootView = new RootView(pathToOpen) + window.rootView = new RootView rootView.enableKeymap() + rootView.open(pathToOpen) rootView.focus() - afterEach -> - rootView.deactivate() - - describe ".initialize(pathToOpen)", -> - describe "when called with a pathToOpen", -> - describe "when pathToOpen references a file", -> - it "opens the file at the given path and sets the window title", -> - expect(rootView.getEditors().length).toBe 1 - expect(rootView.getEditors()[0]).toHaveClass 'active' - expect(rootView.getActiveEditor().getPath()).toBe pathToOpen - expect(rootView.getActiveEditor().editSessions.length).toBe 1 - expect(rootView.getTitle()).toBe "#{fs.base(pathToOpen)} – #{project.getPath()}" - - describe "when pathToOpen references a directory", -> - it "does not open an editor", -> - pathToOpen = project.getPath() - rootView = new RootView(pathToOpen) - rootView.focus() - - expect(project.getPath()).toBe pathToOpen - expect(rootView.getEditors().length).toBe 0 - expect(rootView.getTitle()).toBe project.getPath() - - describe "when called with no pathToOpen", -> - it "opens an empty buffer", -> - rootView = new RootView - expect(rootView.getEditors().length).toBe 1 - expect(rootView.getEditors()[0].getText()).toEqual "" - expect(rootView.getTitle()).toBe "untitled – #{project.getPath()}" - - describe ".deactivate()", -> - it "deactivates all packages", -> - pack = window.loadPackage("package-with-module") - atom.activateAtomPackage(pack) - spyOn(pack.packageMain, "deactivate").andCallThrough() - rootView.deactivate() - expect(pack.packageMain.deactivate).toHaveBeenCalled() - describe "@deserialize()", -> viewState = null describe "when the serialized RootView has an unsaved buffer", -> - buffer = null - - beforeEach -> - rootView = new RootView + it "constructs the view with the same panes", -> rootView.open() editor1 = rootView.getActiveEditor() buffer = editor1.getBuffer() editor1.splitRight() viewState = rootView.serialize() + rootView.deactivate() - it "constructs the view with the same panes", -> - rootView = RootView.deserialize(viewState) + window.rootView = RootView.deserialize(viewState) rootView.focus() expect(rootView.getEditors().length).toBe 2 expect(rootView.getActiveEditor().getText()).toBe buffer.getText() expect(rootView.getTitle()).toBe "untitled – #{project.getPath()}" describe "when the serialized RootView has a project", -> - beforeEach -> - project.setPath(require.resolve('fixtures')) - describe "when there are open editors", -> - beforeEach -> - rootView.open('dir/a') + it "constructs the view with the same panes", -> editor1 = rootView.getActiveEditor() editor2 = editor1.splitRight() editor3 = editor2.splitRight() - editor4 = editor2.splitDown() - editor2.edit(project.buildEditSessionForPath('dir/b')) - editor3.edit(project.buildEditSessionForPath('sample.js')) + editor2.edit(project.buildEditSessionForPath('b')) + editor3.edit(project.buildEditSessionForPath('../sample.js')) editor3.setCursorScreenPosition([2, 4]) - editor4.edit(project.buildEditSessionForPath('sample.txt')) + editor4.edit(project.buildEditSessionForPath('../sample.txt')) editor4.setCursorScreenPosition([0, 2]) rootView.attachToDom() editor2.focus() - viewState = rootView.serialize() - rootView.remove() - it "constructs the view with the same project and panes", -> - rootView = RootView.deserialize(viewState) + viewState = rootView.serialize() + rootView.deactivate() + window.rootView = RootView.deserialize(viewState) rootView.attachToDom() expect(rootView.getEditors().length).toBe 4 @@ -108,11 +62,11 @@ describe "RootView", -> editor2 = rootView.panes.find('.row > .column > .pane .editor:eq(0)').view() editor4 = rootView.panes.find('.row > .column > .pane .editor:eq(1)').view() - expect(editor1.getPath()).toBe require.resolve('fixtures/dir/a') - expect(editor2.getPath()).toBe require.resolve('fixtures/dir/b') - expect(editor3.getPath()).toBe require.resolve('fixtures/sample.js') + expect(editor1.getPath()).toBe project.resolve('a') + expect(editor2.getPath()).toBe project.resolve('b') + expect(editor3.getPath()).toBe project.resolve('../sample.js') expect(editor3.getCursorScreenPosition()).toEqual [2, 4] - expect(editor4.getPath()).toBe require.resolve('fixtures/sample.txt') + expect(editor4.getPath()).toBe project.resolve('../sample.txt') expect(editor4.getCursorScreenPosition()).toEqual [0, 2] # ensure adjust pane dimensions is called @@ -130,15 +84,15 @@ describe "RootView", -> expect(rootView.getTitle()).toBe "#{fs.base(editor2.getPath())} – #{project.getPath()}" describe "where there are no open editors", -> - beforeEach -> - rootView.deactivate() - rootView = new RootView(project.getPath()) - expect(rootView.getEditors().length).toBe 0 - viewState = rootView.serialize() - rootView.remove() - it "constructs the view with no open editors", -> - rootView = RootView.deserialize(viewState) + rootView.getActiveEditor().remove() + expect(rootView.getEditors().length).toBe 0 + + viewState = rootView.serialize() + console.log viewState + rootView.deactivate() + window.rootView = RootView.deserialize(viewState) + rootView.attachToDom() expect(rootView.getEditors().length).toBe 0 @@ -150,16 +104,14 @@ describe "RootView", -> wrappedView: deserializer: "BogusView" - rootView.remove() - rootView = RootView.deserialize(viewState) + rootView.deactivate() + window.rootView = RootView.deserialize(viewState) expect(rootView.find('.pane').length).toBe 1 expect(rootView.find('.pane').children().length).toBe 0 describe "focus", -> describe "when there is an active editor", -> it "hands off focus to the active editor", -> - rootView.remove() - rootView = new RootView(require.resolve 'fixtures') rootView.attachToDom() rootView.open() # create an editor @@ -171,25 +123,23 @@ describe "RootView", -> expect(rootView.getActiveEditor().isFocused).toBeTruthy() describe "when there is no active editor", -> + beforeEach -> + rootView.getActiveEditor().remove() + rootView.attachToDom() + describe "when are visible focusable elements (with a -1 tabindex)", -> it "passes focus to the first focusable element", -> - rootView.remove() - rootView = new RootView(require.resolve 'fixtures') - rootView.horizontal.append $$ -> @div "One", id: 'one', tabindex: -1 @div "Two", id: 'two', tabindex: -1 - rootView.attachToDom() + rootView.focus() expect(rootView).not.toMatchSelector(':focus') expect(rootView.find('#one')).toMatchSelector(':focus') expect(rootView.find('#two')).not.toMatchSelector(':focus') describe "when there are no visible focusable elements", -> it "surrenders focus to the body", -> - rootView.remove() - rootView = new RootView(require.resolve 'fixtures') - rootView.attachToDom() expect(document.activeElement).toBe $('body')[0] describe "panes", -> @@ -466,7 +416,7 @@ describe "RootView", -> it "sets the project path to the directory of the editor if it was previously unassigned", -> project.setPath(undefined) - rootView = new RootView + window.rootView = new RootView rootView.open() expect(project.getPath()?).toBeFalsy() rootView.getActiveEditor().getBuffer().saveAs('/tmp/ignore-me') diff --git a/spec/spec-helper.coffee b/spec/spec-helper.coffee index 77a39122e..9f9203e18 100644 --- a/spec/spec-helper.coffee +++ b/spec/spec-helper.coffee @@ -56,8 +56,9 @@ beforeEach -> afterEach -> keymap.bindingSets = bindingSetsToRestore keymap.bindingSetsByFirstKeystrokeToRestore = bindingSetsByFirstKeystrokeToRestore - rootView?.deactivate() - delete window.rootView if window.rootView + if rootView? + rootView.deactivate() + window.rootView = null project.destroy() $('#jasmine-content').empty() ensureNoPathSubscriptions() diff --git a/src/app/root-view.coffee b/src/app/root-view.coffee index 80f036d55..558143889 100644 --- a/src/app/root-view.coffee +++ b/src/app/root-view.coffee @@ -27,49 +27,13 @@ class RootView extends View @deserialize: ({ panesViewState, packageStates, projectPath }) -> atom.atomPackageStates = packageStates ? {} - rootView = new RootView(null, suppressOpen: true) + rootView = new RootView rootView.setRootPane(deserialize(panesViewState)) if panesViewState rootView title: null - pathToOpenIsFile: false - initialize: (projectOrPathToOpen, { suppressOpen } = {}) -> - window.rootView = this - @handleEvents() - - if not projectOrPathToOpen or _.isString(projectOrPathToOpen) - pathToOpen = projectOrPathToOpen - else - pathToOpen = project.getPath() - @pathToOpenIsFile = pathToOpen and fs.isFile(pathToOpen) - - config.load() - - unless suppressOpen - if pathToOpen - @open(pathToOpen) if @pathToOpenIsFile - else - @open() - - serialize: -> - panesViewState: @panes.children().view()?.serialize() - packageStates: atom.serializeAtomPackages() - - handleFocus: (e) -> - if @getActiveEditor() - @getActiveEditor().focus() - false - else - @setTitle(null) - focusableChild = this.find("[tabindex=-1]:visible:first") - if focusableChild.length - focusableChild.focus() - false - else - true - - handleEvents: -> + initialize: -> @command 'toggle-dev-tools', => atom.toggleDevTools() @on 'focus', (e) => @handleFocus(e) @subscribe $(window), 'focus', (e) => @@ -101,6 +65,24 @@ class RootView extends View @command 'window:toggle-auto-indent-on-paste', => config.set("editor.autoIndentOnPaste", !config.get("editor.autoIndentOnPaste")) + serialize: -> + deserializer: 'RootView' + panesViewState: @panes.children().view()?.serialize() + packageStates: atom.serializeAtomPackages() + + handleFocus: (e) -> + if @getActiveEditor() + @getActiveEditor().focus() + false + else + @setTitle(null) + focusableChild = this.find("[tabindex=-1]:visible:first") + if focusableChild.length + focusableChild.focus() + false + else + true + afterAttach: (onDom) -> @focus() if onDom diff --git a/src/app/window.coffee b/src/app/window.coffee index bc62157ab..68964bcf1 100644 --- a/src/app/window.coffee +++ b/src/app/window.coffee @@ -30,10 +30,10 @@ windowAdditions = $(document).on 'keydown', keymap.handleKeyEvent keymap.bindDefaultKeys() - $(window).on 'core:close', => @close() + $(window).on 'core:close', => window.close() handleWindowEvents: -> - $(window).command 'window:close', => @close() + $(window).command 'window:close', => window.close() $(window).command 'window:toggle-full-screen', => atom.toggleFullScreen() $(window).on 'focus', -> $("body").removeClass('is-blurred') $(window).on 'blur', -> $("body").addClass('is-blurred') @@ -42,6 +42,7 @@ windowAdditions = # Note: RootView assigns itself on window on initialization so that # window.rootView is available when loading user configuration startApplication: -> + handleWindowEvents() config.load() buildProjectAndRootView() keymap.loadBundledKeymaps() @@ -51,6 +52,9 @@ windowAdditions = $(window).on 'beforeunload', -> stopApplication(); false $(window).focus() + pathToOpen = atom.getPathToOpen() + rootView.open(pathToOpen) if !pathToOpen or fs.isFile(pathToOpen) + buildProjectAndRootView: -> RootView = require 'root-view' Project = require 'project' @@ -60,7 +64,7 @@ windowAdditions = window.rootView = deserialize(windowState.rootView) else window.project = new Project(atom.getPathToOpen()) - window.rootView = new RootView(atom.getPathToOpen()) + window.rootView = new RootView $(rootViewParentSelector).append(rootView) stopApplication: -> diff --git a/src/packages/autocomplete/spec/autocomplete-spec.coffee b/src/packages/autocomplete/spec/autocomplete-spec.coffee index 9677deab2..8d019d69b 100644 --- a/src/packages/autocomplete/spec/autocomplete-spec.coffee +++ b/src/packages/autocomplete/spec/autocomplete-spec.coffee @@ -7,12 +7,10 @@ RootView = require 'root-view' describe "Autocomplete", -> beforeEach -> - rootView = new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') rootView.simulateDomAttachment() - afterEach -> - rootView.deactivate() - describe "@activate()", -> it "activates autocomplete on all existing and future editors (but not on autocomplete's own mini editor)", -> spyOn(AutocompleteView.prototype, 'initialize').andCallThrough() @@ -41,16 +39,12 @@ describe "AutocompleteView", -> miniEditor = null beforeEach -> - new RootView + window.rootView = new RootView editor = new Editor(editSession: fixturesProject.buildEditSessionForPath('sample.js')) window.loadPackage('autocomplete') autocomplete = new AutocompleteView(editor) miniEditor = autocomplete.miniEditor - afterEach -> - rootView.deactivate() - editor?.remove() - describe 'autocomplete:attach event', -> it "shows autocomplete view and focuses its mini-editor", -> expect(editor.find('.autocomplete')).not.toExist() diff --git a/src/packages/autoflow/spec/autoflow-spec.coffee b/src/packages/autoflow/spec/autoflow-spec.coffee index c7d665075..d717bcf85 100644 --- a/src/packages/autoflow/spec/autoflow-spec.coffee +++ b/src/packages/autoflow/spec/autoflow-spec.coffee @@ -4,7 +4,8 @@ describe "Autoflow package", -> editor = null beforeEach -> - new RootView + window.rootView = new RootView + rootView.open() window.loadPackage 'autoflow' editor = rootView.getActiveEditor() config.set('editor.preferredLineLength', 30) diff --git a/src/packages/bracket-matcher/spec/bracket-matcher-spec.coffee b/src/packages/bracket-matcher/spec/bracket-matcher-spec.coffee index 25456b174..a715e2741 100644 --- a/src/packages/bracket-matcher/spec/bracket-matcher-spec.coffee +++ b/src/packages/bracket-matcher/spec/bracket-matcher-spec.coffee @@ -4,7 +4,8 @@ describe "bracket matching", -> [editor, editSession, buffer] = [] beforeEach -> - rootView = new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') window.loadPackage('bracket-matcher') rootView.attachToDom() editor = rootView.getActiveEditor() diff --git a/src/packages/command-logger/spec/command-logger-spec.coffee b/src/packages/command-logger/spec/command-logger-spec.coffee index 19896e5d0..78a01a875 100644 --- a/src/packages/command-logger/spec/command-logger-spec.coffee +++ b/src/packages/command-logger/spec/command-logger-spec.coffee @@ -5,7 +5,8 @@ describe "CommandLogger", -> [commandLogger, editor] = [] beforeEach -> - new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') commandLogger = window.loadPackage('command-logger').packageMain commandLogger.eventLog = {} editor = rootView.getActiveEditor() diff --git a/src/packages/command-palette/spec/command-palette-spec.coffee b/src/packages/command-palette/spec/command-palette-spec.coffee index 8225f0496..2b115bc68 100644 --- a/src/packages/command-palette/spec/command-palette-spec.coffee +++ b/src/packages/command-palette/spec/command-palette-spec.coffee @@ -7,7 +7,8 @@ describe "CommandPalette", -> [palette] = [] beforeEach -> - rootView = new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') window.loadPackage("command-palette") rootView.attachToDom().focus() rootView.trigger 'command-palette:toggle' diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index a76fe9174..213d0d5c2 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -6,8 +6,8 @@ describe "CommandPanel", -> [editor, buffer, commandPanel, CommandPanel] = [] beforeEach -> - new RootView - rootView.open(require.resolve 'fixtures/sample.js') + window.rootView = new RootView + rootView.open('sample.js') rootView.enableKeymap() editor = rootView.getActiveEditor() buffer = editor.activeEditSession.buffer @@ -33,7 +33,8 @@ describe "CommandPanel", -> rootViewState = rootView.serialize() rootView.deactivate() - RootView.deserialize(rootViewState).attachToDom() + window.rootView = RootView.deserialize(rootViewState) + rootView.attachToDom() window.loadPackage('command-panel') expect(rootView.find('.command-panel')).not.toExist() diff --git a/src/packages/editor-stats/spec/editor-stats-spec.coffee b/src/packages/editor-stats/spec/editor-stats-spec.coffee index 93e529abc..02bf80c78 100644 --- a/src/packages/editor-stats/spec/editor-stats-spec.coffee +++ b/src/packages/editor-stats/spec/editor-stats-spec.coffee @@ -14,7 +14,8 @@ describe "EditorStats", -> rootView.trigger(e) beforeEach -> - new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') date = new Date() mins = date.getMinutes() diff --git a/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee b/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee index 393bfa3df..15acc1080 100644 --- a/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee +++ b/src/packages/fuzzy-finder/spec/fuzzy-finder-spec.coffee @@ -10,7 +10,8 @@ describe 'FuzzyFinder', -> [finderView] = [] beforeEach -> - new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') rootView.enableKeymap() finderView = window.loadPackage("fuzzy-finder").packageMain.createView() diff --git a/src/packages/gists/spec/gists-spec.coffee b/src/packages/gists/spec/gists-spec.coffee index 55e107f88..a467dbd41 100644 --- a/src/packages/gists/spec/gists-spec.coffee +++ b/src/packages/gists/spec/gists-spec.coffee @@ -5,7 +5,8 @@ describe "Gists package", -> [editor] = [] beforeEach -> - rootView = new RootView(fixturesProject.resolve('sample.js')) + window.rootView = new RootView + rootView.open('sample.js') window.loadPackage('gists') editor = rootView.getActiveEditor() spyOn($, 'ajax') diff --git a/src/packages/go-to-line/spec/go-to-line-spec.coffee b/src/packages/go-to-line/spec/go-to-line-spec.coffee index 8c9d13d90..fe0c8b7df 100644 --- a/src/packages/go-to-line/spec/go-to-line-spec.coffee +++ b/src/packages/go-to-line/spec/go-to-line-spec.coffee @@ -5,15 +5,13 @@ describe 'GoToLine', -> [goToLine, editor] = [] beforeEach -> - new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') rootView.enableKeymap() editor = rootView.getActiveEditor() goToLine = GoToLineView.activate() editor.setCursorBufferPosition([1,0]) - afterEach -> - rootView.remove() - describe "when editor:go-to-line is triggered", -> it "attaches to the root view", -> expect(goToLine.hasParent()).toBeFalsy() diff --git a/src/packages/markdown-preview/spec/markdown-preview-spec.coffee b/src/packages/markdown-preview/spec/markdown-preview-spec.coffee index c34a311d9..c31583f30 100644 --- a/src/packages/markdown-preview/spec/markdown-preview-spec.coffee +++ b/src/packages/markdown-preview/spec/markdown-preview-spec.coffee @@ -6,7 +6,7 @@ _ = require 'underscore' describe "MarkdownPreview", -> beforeEach -> project.setPath(project.resolve('markdown')) - rootView = new RootView(project.getPath()) + window.rootView = new RootView window.loadPackage("markdown-preview") spyOn(MarkdownPreview.prototype, 'loadHtml') diff --git a/src/packages/package-generator/spec/package-generator-spec.coffee b/src/packages/package-generator/spec/package-generator-spec.coffee index f512eed22..d734738a3 100644 --- a/src/packages/package-generator/spec/package-generator-spec.coffee +++ b/src/packages/package-generator/spec/package-generator-spec.coffee @@ -5,7 +5,8 @@ describe 'Package Generator', -> [packageGenerator] = [] beforeEach -> - new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') window.loadPackage("package-generator") afterEach -> diff --git a/src/packages/package-generator/template/spec/##package-name##-view-spec.coffee b/src/packages/package-generator/template/spec/##package-name##-view-spec.coffee index e504e3da6..e1e4cbf40 100644 --- a/src/packages/package-generator/template/spec/##package-name##-view-spec.coffee +++ b/src/packages/package-generator/template/spec/##package-name##-view-spec.coffee @@ -9,12 +9,9 @@ fdescribe "##PackageName##View", -> ##packageName## = null beforeEach -> - new RootView() + window.rootView = new RootView ##packageName## = window.loadPackage('##packageName##', activateImmediately: true) - afterEach -> - rootView.deactivate() - describe "when the ##package-name##:toggle event is triggered", -> it "attaches and then detaches the view", -> expect(rootView.find('.##package-name##')).not.toExist() diff --git a/src/packages/snippets/spec/snippets-spec.coffee b/src/packages/snippets/spec/snippets-spec.coffee index 6cbcbfae3..95b1c3752 100644 --- a/src/packages/snippets/spec/snippets-spec.coffee +++ b/src/packages/snippets/spec/snippets-spec.coffee @@ -10,7 +10,8 @@ Package = require 'package' describe "Snippets extension", -> [buffer, editor, editSession] = [] beforeEach -> - new RootView(project.resolve('sample.js')) + window.rootView = new RootView + rootView.open('sample.js') spyOn(LoadSnippetsTask.prototype, 'start') packageWithSnippets = window.loadPackage("package-with-snippets") diff --git a/src/packages/status-bar/spec/status-bar-spec.coffee b/src/packages/status-bar/spec/status-bar-spec.coffee index 3b7b23833..177a2b6a2 100644 --- a/src/packages/status-bar/spec/status-bar-spec.coffee +++ b/src/packages/status-bar/spec/status-bar-spec.coffee @@ -5,19 +5,17 @@ StatusBar = require 'status-bar/lib/status-bar-view' fs = require 'fs' describe "StatusBar", -> - [rootView, editor, statusBar, buffer] = [] + [editor, statusBar, buffer] = [] beforeEach -> - rootView = new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') rootView.simulateDomAttachment() StatusBar.activate() editor = rootView.getActiveEditor() statusBar = rootView.find('.status-bar').view() buffer = editor.getBuffer() - afterEach -> - rootView.remove() - describe "@initialize", -> it "appends a status bar to all existing and new editors", -> expect(rootView.panes.find('.pane').length).toBe 1 @@ -34,8 +32,8 @@ describe "StatusBar", -> describe "when associated with an unsaved buffer", -> it "displays 'untitled' instead of the buffer's path, but still displays the buffer position", -> - rootView.remove() - rootView = new RootView + rootView.deactivate() + window.rootView = new RootView rootView.open() rootView.simulateDomAttachment() StatusBar.activate() diff --git a/src/packages/strip-trailing-whitespace/spec/strip-trailing-whitespace-spec.coffee b/src/packages/strip-trailing-whitespace/spec/strip-trailing-whitespace-spec.coffee index 7ddc319c5..f76f5b38d 100644 --- a/src/packages/strip-trailing-whitespace/spec/strip-trailing-whitespace-spec.coffee +++ b/src/packages/strip-trailing-whitespace/spec/strip-trailing-whitespace-spec.coffee @@ -2,12 +2,13 @@ RootView = require 'root-view' fs = require 'fs' describe "StripTrailingWhitespace", -> - [rootView, editor, path] = [] + [editor, path] = [] beforeEach -> path = "/tmp/atom-whitespace.txt" fs.write(path, "") - rootView = new RootView(path) + window.rootView = new RootView + rootView.open(path) window.loadPackage('strip-trailing-whitespace') rootView.focus() diff --git a/src/packages/symbols-view/spec/symbols-view-spec.coffee b/src/packages/symbols-view/spec/symbols-view-spec.coffee index 00cb09844..d8adf0c04 100644 --- a/src/packages/symbols-view/spec/symbols-view-spec.coffee +++ b/src/packages/symbols-view/spec/symbols-view-spec.coffee @@ -7,14 +7,13 @@ describe "SymbolsView", -> [symbolsView, setArraySpy] = [] beforeEach -> - rootView = new RootView(require.resolve('fixtures')) + window.rootView = new RootView window.loadPackage("symbols-view") rootView.attachToDom() setArraySpy = spyOn(SymbolsView.prototype, 'setArray').andCallThrough() afterEach -> - rootView.deactivate() setArraySpy.reset() describe "when tags can be generated for a file", -> diff --git a/src/packages/tabs/spec/tabs-spec.coffee b/src/packages/tabs/spec/tabs-spec.coffee index 28e44d089..00efe0324 100644 --- a/src/packages/tabs/spec/tabs-spec.coffee +++ b/src/packages/tabs/spec/tabs-spec.coffee @@ -7,16 +7,14 @@ describe "TabView", -> [editor, buffer, tabs] = [] beforeEach -> - new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') rootView.open('sample.txt') rootView.simulateDomAttachment() window.loadPackage("tabs") editor = rootView.getActiveEditor() tabs = rootView.find('.tabs').view() - afterEach -> - rootView.remove() - describe "@activate", -> it "appends a status bear to all existing and new editors", -> expect(rootView.panes.find('.pane').length).toBe 1 @@ -25,7 +23,7 @@ describe "TabView", -> expect(rootView.find('.pane').length).toBe 2 expect(rootView.panes.find('.pane > .tabs').length).toBe 2 - describe "#initialize()", -> + describe ".initialize()", -> it "creates a tab for each edit session on the editor to which the tab-strip belongs", -> expect(editor.editSessions.length).toBe 2 expect(tabs.find('.tab').length).toBe 2 diff --git a/src/packages/tree-view/lib/tree.coffee b/src/packages/tree-view/lib/tree.coffee index ae2a472d3..3150d3076 100644 --- a/src/packages/tree-view/lib/tree.coffee +++ b/src/packages/tree-view/lib/tree.coffee @@ -1,9 +1,10 @@ +fs = require 'fs' + module.exports = treeView: null activate: (@state) -> - if @state.attached == undefined and not rootView.pathToOpenIsFile - @state.attached = true + @state.attached ?= true unless rootView.getActiveEditSession() @createView() if @state.attached rootView.command 'tree-view:toggle', => @createView().toggle() diff --git a/src/packages/tree-view/spec/tree-view-spec.coffee b/src/packages/tree-view/spec/tree-view-spec.coffee index bfb002ce9..09b657725 100644 --- a/src/packages/tree-view/spec/tree-view-spec.coffee +++ b/src/packages/tree-view/spec/tree-view-spec.coffee @@ -10,7 +10,7 @@ describe "TreeView", -> beforeEach -> project.setPath(project.resolve('tree-view')) - new RootView(project.getPath()) + window.rootView = new RootView window.loadPackage("tree-view") rootView.trigger 'tree-view:toggle' @@ -50,7 +50,8 @@ describe "TreeView", -> beforeEach -> project.setPath(undefined) rootView.deactivate() - new RootView() + window.rootView = new RootView() + rootView.open() treeView = window.loadPackage("tree-view").packageMain.createView() it "does not attach to the root view or create a root node when initialized", -> @@ -75,15 +76,14 @@ describe "TreeView", -> describe "when the root view is opened to a file path", -> it "does not attach to the root view but does create a root node when initialized", -> rootView.deactivate() - new RootView(require.resolve('fixtures/tree-view/tree-view.js')) + window.rootView = new RootView + rootView.open('tree-view.js') treeView = window.loadPackage("tree-view").packageMain.createView() expect(treeView.hasParent()).toBeFalsy() expect(treeView.root).toExist() describe "when the root view is opened to a directory", -> it "attaches to the root view", -> - rootView.deactivate() - new RootView(require.resolve('fixtures/tree-view')) treeView = window.loadPackage("tree-view").packageMain.createView() expect(treeView.hasParent()).toBeTruthy() expect(treeView.root).toExist() @@ -95,7 +95,7 @@ describe "TreeView", -> rootViewState = rootView.serialize() rootView.deactivate() - RootView.deserialize(rootViewState) + window.rootView = RootView.deserialize(rootViewState) window.loadPackage("tree-view") treeView = rootView.find(".tree-view").view() @@ -110,7 +110,7 @@ describe "TreeView", -> rootViewState = rootView.serialize() rootView.deactivate() - RootView.deserialize(rootViewState) + window.rootView = RootView.deserialize(rootViewState) rootView.attachToDom() window.loadPackage("tree-view") @@ -607,7 +607,7 @@ describe "TreeView", -> fs.write(filePath, "doesn't matter") project.setPath(rootDirPath) - new RootView(rootDirPath) + window.rootView = new RootView(rootDirPath) window.loadPackage('tree-view') rootView.trigger 'tree-view:toggle' treeView = rootView.find(".tree-view").view() diff --git a/src/packages/wrap-guide/spec/wrap-guide-spec.coffee b/src/packages/wrap-guide/spec/wrap-guide-spec.coffee index e4df6f356..706032321 100644 --- a/src/packages/wrap-guide/spec/wrap-guide-spec.coffee +++ b/src/packages/wrap-guide/spec/wrap-guide-spec.coffee @@ -4,16 +4,14 @@ describe "WrapGuide", -> [editor, wrapGuide] = [] beforeEach -> - new RootView(require.resolve('fixtures/sample.js')) + window.rootView = new RootView + rootView.open('sample.js') window.loadPackage('wrap-guide') rootView.attachToDom() editor = rootView.getActiveEditor() wrapGuide = rootView.find('.wrap-guide').view() editor.width(editor.charWidth * wrapGuide.getDefaultColumn() * 2) - afterEach -> - rootView.deactivate() - describe "@initialize", -> it "appends a wrap guide to all existing and new editors", -> expect(rootView.panes.find('.pane').length).toBe 1