diff --git a/src/extensions/tabs/spec/tabs-spec.coffee b/src/extensions/tabs/spec/tabs-spec.coffee index 75ca57bc4..b64d7cab5 100644 --- a/src/extensions/tabs/spec/tabs-spec.coffee +++ b/src/extensions/tabs/spec/tabs-spec.coffee @@ -2,6 +2,7 @@ $ = require 'jquery' _ = require 'underscore' RootView = require 'root-view' Tabs = require 'tabs' +fs = require 'fs' describe "Tabs", -> [rootView, editor, statusBar, buffer, tabs] = [] @@ -67,3 +68,18 @@ describe "Tabs", -> expect(editor.getActiveEditSessionIndex()).toBe 0 tabs.find('.tab:eq(1)').click() expect(editor.getActiveEditSessionIndex()).toBe 1 + + describe "when a file name associated with a tab changes", -> + [buffer, newPath] = [] + + beforeEach -> + buffer = editor.editSessions[0].buffer + oldPath = buffer.getPath() + newPath = oldPath.replace(/sample.js$/, "foobar.js") + + afterEach -> + fs.remove(newPath) + + fit "updates the file name in the tab", -> + buffer.saveAs(newPath) + expect(tabs.find('.tab:first .file-name')).toHaveText "foobar.js" diff --git a/src/extensions/tabs/src/tab.coffee b/src/extensions/tabs/src/tab.coffee new file mode 100644 index 000000000..b002d47a8 --- /dev/null +++ b/src/extensions/tabs/src/tab.coffee @@ -0,0 +1,11 @@ +{View} = require 'space-pen' + +module.exports = +class Tab extends View + @content: (editSession) -> + @div class: 'tab', => + @div editSession.buffer.getBaseName(), class: 'file-name', outlet: 'fileName' + + initialize: (@editSession) -> + @editSession.on 'buffer-path-change.tab', => + @fileName.text(@editSession.buffer.getBaseName()) diff --git a/src/extensions/tabs/src/tabs.coffee b/src/extensions/tabs/src/tabs.coffee index b8c3df6e4..558c3793f 100644 --- a/src/extensions/tabs/src/tabs.coffee +++ b/src/extensions/tabs/src/tabs.coffee @@ -1,5 +1,6 @@ $ = require 'jquery' -{View, $$} = require 'space-pen' +{View} = require 'space-pen' +Tab = require 'tabs/src/tab' module.exports = class Tabs extends View @@ -32,9 +33,7 @@ class Tabs extends View @editor.setActiveEditSessionIndex($(e.target).closest('.tab').index()) addTabForEditSession: (editSession) -> - @append $$ -> - @div class: 'tab', => - @div editSession.buffer.getBaseName(), class: 'file-name' + @append(new Tab(editSession)) setActiveTab: (index) -> @find(".tab.active").removeClass('active')