From 5156a3747162afad7951ca6a09e317ff4e0bcdd8 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Thu, 26 Apr 2012 09:32:49 -0600 Subject: [PATCH] WIP: Tree view spec isn't there yet --- spec/app/directory-spec.coffee | 2 +- spec/extensions/tree-view-spec.coffee | 12 ++++++++---- src/app/event-emitter.coffee | 6 +++++- src/extensions/tree-view.coffee | 8 +++++++- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/spec/app/directory-spec.coffee b/spec/app/directory-spec.coffee index 907dc05aa..a2cf87a0f 100644 --- a/spec/app/directory-spec.coffee +++ b/spec/app/directory-spec.coffee @@ -1,7 +1,7 @@ Directory = require 'directory' fs = require 'fs' -fdescribe "Directory", -> +describe "Directory", -> directory = null beforeEach -> diff --git a/spec/extensions/tree-view-spec.coffee b/spec/extensions/tree-view-spec.coffee index 8fd055109..e7815e9c5 100644 --- a/spec/extensions/tree-view-spec.coffee +++ b/spec/extensions/tree-view-spec.coffee @@ -258,17 +258,21 @@ describe "TreeView", -> beforeEach -> temporaryFilePath = fs.join(require.resolve('fixtures'), 'temporary') + fs.remove(temporaryFilePath) if fs.exists(temporaryFilePath) afterEach -> fs.remove(temporaryFilePath) if fs.exists(temporaryFilePath) describe "when a file is added or removed in an expanded directory", -> - it "updates the directory view to display the directory's new contents", -> - entriesCountBefore = rootDirectoryView.entries.find('.entry').length + fit "updates the directory view to display the directory's new contents", -> + entriesCountBefore = null - fs.write temporaryFilePath, 'hi' + runs -> + expect(fs.exists(temporaryFilePath)).toBeFalsy() + entriesCountBefore = rootDirectoryView.entries.find('.entry').length + fs.write temporaryFilePath, 'hi' - waitsFor "file to be added", -> + waitsFor "directory view contens to refresh", -> rootDirectoryView.entries.find('.entry').length == entriesCountBefore + 1 runs -> diff --git a/src/app/event-emitter.coffee b/src/app/event-emitter.coffee index 1a5c50365..387038453 100644 --- a/src/app/event-emitter.coffee +++ b/src/app/event-emitter.coffee @@ -28,24 +28,28 @@ module.exports = [eventName, namespace] = eventName.split('.') eventName = undefined if eventName is '' + subscriptionCountBefore = @subscriptionCount() + if namespace if eventName handlers = @eventHandlersByNamespace?[namespace]?[eventName] ? [] for handler in new Array(handlers...) _.remove(handlers, handler) @off eventName, handler + return else for eventName, handlers of @eventHandlersByNamespace?[namespace] ? {} for handler in new Array(handlers...) _.remove(handlers, handler) @off eventName, handler + return else if handler _.remove(@eventHandlersByEventName[eventName], handler) else delete @eventHandlersByEventName?[eventName] - @afterUnsubscribe?() + @afterUnsubscribe?() if @subscriptionCount() < subscriptionCountBefore subscriptionCount: -> count = 0 diff --git a/src/extensions/tree-view.coffee b/src/extensions/tree-view.coffee index 5d01251c8..7902ad4cd 100644 --- a/src/extensions/tree-view.coffee +++ b/src/extensions/tree-view.coffee @@ -1,6 +1,7 @@ {View, $$} = require 'space-pen' Directory = require 'directory' $ = require 'jquery' +_ = require 'underscore' module.exports = class TreeView extends View @@ -85,7 +86,12 @@ class DirectoryView extends View initialize: ({@directory, isExpanded}) -> @expand() if isExpanded @disclosureArrow.on 'click', => @toggleExpansion() - @on 'DOMNodeRemoved', (e) => @unwatchEntries() if e.target == this[0] + + _.defer => + @on 'DOMNodeRemoved', (e) => + if e.target == this[0] and @hasClass('expanded') + console.log "unwatching!" + @unwatchEntries() buildEntries: -> @entries?.remove()