diff options
author | Duda Dornelles <ddornell@thoughtworks.com> | 2014-08-18 14:58:22 -0300 |
---|---|---|
committer | Duda Dornelles <ddornell@thoughtworks.com> | 2014-08-18 15:15:32 -0300 |
commit | 7b7e5f1a6fd5926670917af735b2eda75fa332ee (patch) | |
tree | e7fafb4a782514a4b35179a077357f5efa2f604c /web-ui/test/spec | |
parent | 0ef62a242c8b8bb5a39dc5d4b1fc75123e9f70d8 (diff) |
Duda/Patrick #8: reseting tag shortcuts before loading them again
Diffstat (limited to 'web-ui/test/spec')
-rw-r--r-- | web-ui/test/spec/tags/ui/tag_list.spec.js | 67 | ||||
-rw-r--r-- | web-ui/test/spec/tags/ui/tag_shortcut.spec.js | 19 |
2 files changed, 78 insertions, 8 deletions
diff --git a/web-ui/test/spec/tags/ui/tag_list.spec.js b/web-ui/test/spec/tags/ui/tag_list.spec.js index f39fbf36..5c33f36e 100644 --- a/web-ui/test/spec/tags/ui/tag_list.spec.js +++ b/web-ui/test/spec/tags/ui/tag_list.spec.js @@ -1,48 +1,55 @@ describeComponent('tags/ui/tag_list', function () { 'use strict'; + var tagsShortcutsContainer; - var tag = function(name, ident, def) { + var tag = function (name, ident, def) { def = def || false; return {name: name, counts: {read: 0, total: 0, replied: 0, starred: 0}, ident: ident, default: def}; }; - describe('post initialization', function() { + describe('post initialization', function () { beforeEach(function () { setupComponent(); + tagsShortcutsContainer = $('<ul>', { id: "tags-shortcuts" }); + $('body').append(tagsShortcutsContainer); }); - it('should render tags when tagsList:load is received', function() { + afterEach(function () { + $('body')[0].removeChild(tagsShortcutsContainer[0]) + }); + + it('should render tags when tagsList:load is received', function () { this.component.attr.default = false; var tagList = [tag('tag1', 1), tag('tag2', 2), tag('tag3', 3)]; $(document).trigger(Pixelated.events.ui.tagList.load, {tags: tagList}); - var items = _.map(this.$node.find('li'), function(el) { + var items = _.map(this.$node.find('li'), function (el) { return $(el).attr('id'); }); expect(items).toEqual(['tag-1', 'tag-2', 'tag-3']); }); - it('should render the default tags when tagsList:load is received and default attribute is true', function() { + it('should render the default tags when tagsList:load is received and default attribute is true', function () { var tagList = [tag('tag1', 1, false), tag('tag2', 2, true), tag('tag3', 3, true)]; $(document).trigger(Pixelated.events.ui.tagList.load, {tags: tagList}); - var items = _.map(this.component.select('defaultTagList').find('li'), function(el) { + var items = _.map(this.component.select('defaultTagList').find('li'), function (el) { return $(el).attr('id'); }); expect(items).toEqual(['tag-2', 'tag-3']); }); - it('should render the custom tags when tagsList:load is received and default attribute is false', function() { + it('should render the custom tags when tagsList:load is received and default attribute is false', function () { var tagList = [tag('tag1', 1, false), tag('tag2', 2, true), tag('tag3', 3, true)]; $(document).trigger(Pixelated.events.ui.tagList.load, {tags: tagList}); - var items = _.map(this.component.select('customTagList').find('li'), function(el) { + var items = _.map(this.component.select('customTagList').find('li'), function (el) { return $(el).attr('id'); }); @@ -71,5 +78,49 @@ describeComponent('tags/ui/tag_list', function () { expect(this.component.attr.currentTag).toEqual('amazing'); }); + + it('resets the tag lists when loading tags', function () { + var tagList = [tag('tag1', 1, false), tag('tag2', 2, true), tag('tag3', 3, true)]; + $(document).trigger(Pixelated.events.ui.tagList.load, {tags: tagList}); + + var tagList = [tag('tag1', 1, false), tag('tag2', 2, true)]; + $(document).trigger(Pixelated.events.ui.tagList.load, {tags: tagList}); + + var customTags = _.map(this.component.select('customTagList').find('li'), function (el) { + return $(el).attr('id'); + }); + var defaultTags = _.map(this.component.select('defaultTagList').find('li'), function (el) { + return $(el).attr('id'); + }); + + expect(customTags).toEqual(['tag-1']); + expect(defaultTags).toEqual(['tag-2']); + }); + + it('resets the tag shortcuts when loading tags', function () { + var tagList = [tag('inbox', 1, true)]; + $(document).trigger(Pixelated.events.ui.tagList.load, {tags: tagList}); + + var tagList = [tag('sent', 1, true)]; + $(document).trigger(Pixelated.events.ui.tagList.load, {tags: tagList}); + + var shortcuts = _.map($('#tags-shortcuts').find('li'), function (el) { + return $(el).text().trim(); + }); + + expect(shortcuts).toEqual(['sent']); + }); + + it('sends teardown events when loading new tags', function () { + var tagsTeardownCustom = spyOnEvent(this.component.select('customTagList'), Pixelated.events.tags.teardown); + var tagsTeardownDefault = spyOnEvent(this.component.select('defaultTagList'), Pixelated.events.tags.teardown); + var tagsShortcutsTeardown = spyOnEvent(document, Pixelated.events.tags.shortcuts.teardown); + + $(document).trigger(Pixelated.events.ui.tagList.load, {tags: []}); + + expect(tagsTeardownCustom).toHaveBeenTriggeredOn(this.component.select('customTagList')); + expect(tagsTeardownDefault).toHaveBeenTriggeredOn(this.component.select('defaultTagList')); + expect(tagsShortcutsTeardown).toHaveBeenTriggeredOn(document); + }); }); }); diff --git a/web-ui/test/spec/tags/ui/tag_shortcut.spec.js b/web-ui/test/spec/tags/ui/tag_shortcut.spec.js index 5e464350..ba44304e 100644 --- a/web-ui/test/spec/tags/ui/tag_shortcut.spec.js +++ b/web-ui/test/spec/tags/ui/tag_shortcut.spec.js @@ -7,9 +7,14 @@ describeComponent("tags/ui/tag_shortcut", function () { component = jasmine.createSpyObj('tagComponent', ['triggerSelect']); parent = $("<ul>"); + $('body').append(parent); shortcut = TagShortcut.appendedTo(parent, { linkTo: { name: 'inbox', counts: { total: 15 }}, trigger: component }); }); + afterEach(function () { + $('body')[0].removeChild(parent[0]) + }); + it('renders the shortcut inside the parent', function () { expect(parent.html()).toMatch('<a title="inbox">'); expect(parent.html()).toMatch('<i class="fa fa-inbox"></i>'); @@ -32,4 +37,18 @@ describeComponent("tags/ui/tag_shortcut", function () { expect(component.triggerSelect).toHaveBeenCalled(); }); + it('teardown shortcuts on event but only if they are not in the DOM', function () { + parent.empty(); + var shortcutAddedAfterEmptyingParent = TagShortcut.appendedTo(parent, { linkTo: { name: 'inbox', counts: { total: 15 }}, trigger: component }); + // by now shorcut is not in the DOM anymore but shortcutAddedAfterEmptyingParent is + + spyOn(shortcut, 'teardown'); + spyOn(shortcutAddedAfterEmptyingParent, 'teardown'); + + $(document).trigger(Pixelated.events.tags.shortcuts.teardown); + + expect(shortcut.teardown).toHaveBeenCalled(); + expect(shortcutAddedAfterEmptyingParent.teardown).not.toHaveBeenCalled(); + }); }); + |