Skip to content

Commit

Permalink
Making test cases a bit more reusable, cleaning up dialog view
Browse files Browse the repository at this point in the history
  • Loading branch information
MeoMix committed May 17, 2015
1 parent 8b4dac6 commit 0fa780d
Show file tree
Hide file tree
Showing 108 changed files with 631 additions and 708 deletions.
16 changes: 13 additions & 3 deletions Streamus Chrome Extension.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,15 @@
<Content Include="src\js\foreground\enum\keyCode.js" />
<Content Include="src\js\foreground\model\tooltip\tooltip.js" />
<Content Include="src\js\foreground\view\behavior\dialogContent.js" />
<Content Include="src\js\foreground\view\behavior\listItemButton.js" />
<Content Include="src\js\foreground\view\contextMenu\contextMenuItemsView.js" />
<Content Include="src\js\foreground\view\dialog\aboutStreamusDialogView.js" />
<Content Include="src\js\foreground\view\dialog\aboutStreamusView.js" />
<Content Include="src\js\foreground\view\dialog\clearStreamView.js" />
<Content Include="src\js\foreground\view\dialog\errorView.js" />
<Content Include="src\js\foreground\view\dialog\googleSignInView.js" />
<Content Include="src\js\foreground\view\dialog\linkUserIdView.js" />
<Content Include="src\js\foreground\view\dialog\updateStreamusView.js" />
<Content Include="src\js\foreground\view\element\fixedMenuItemView.js" />
<Content Include="src\js\foreground\view\element\simpleMenuItemsView.js" />
<Content Include="src\js\foreground\view\leftPane\activePlaylistAreaView.js" />
Expand Down Expand Up @@ -118,6 +124,7 @@
<Content Include="src\js\test\foreground\view\behavior\collectionViewMultiSelect.spec.js" />
<Content Include="src\js\test\foreground\view\behavior\dialogContent.spec.js" />
<Content Include="src\js\test\foreground\view\behavior\itemViewMultiSelect.spec.js" />
<Content Include="src\js\test\foreground\view\behavior\listItemButton.spec.js" />
<Content Include="src\js\test\foreground\view\behavior\scrollable.spec.js" />
<Content Include="src\js\test\foreground\view\behavior\slidingRender.spec.js" />
<Content Include="src\js\test\foreground\view\behavior\sortable.spec.js" />
Expand All @@ -130,10 +137,14 @@
<Content Include="src\js\test\foreground\view\contextMenu\contextMenuView.spec.js" />
<Content Include="src\js\test\foreground\view\dialog\aboutStreamusDialogView.spec.js" />
<Content Include="src\js\test\foreground\view\dialog\aboutStreamusView.spec.js" />
<Content Include="src\js\test\foreground\view\dialog\dialogContentView.spec.js" />
<Content Include="src\js\test\foreground\view\dialog\clearStreamView.spec.js" />
<Content Include="src\js\test\foreground\view\dialog\dialogRegion.spec.js" />
<Content Include="src\js\test\foreground\view\dialog\dialogSpecLoader.js" />
<Content Include="src\js\test\foreground\view\dialog\dialogView.spec.js" />
<Content Include="src\js\test\foreground\view\dialog\errorView.spec.js" />
<Content Include="src\js\test\foreground\view\dialog\googleSignInView.spec.js" />
<Content Include="src\js\test\foreground\view\dialog\linkUserIdView.spec.js" />
<Content Include="src\js\test\foreground\view\dialog\updateStreamusView.spec.js" />
<Content Include="src\js\test\foreground\view\element\checkboxView.spec.js" />
<Content Include="src\js\test\foreground\view\element\elementSpecLoader.js" />
<Content Include="src\js\test\foreground\view\element\radioButtonView.spec.js" />
Expand All @@ -159,7 +170,6 @@
<Content Include="src\js\test\foreground\view\listItemButton\deleteListItemButtonView.spec.js" />
<Content Include="src\js\test\foreground\view\listItemButton\listItemButtonSpecLoader.js" />
<Content Include="src\js\test\foreground\view\listItemButton\listItemButtonsView.spec.js" />
<Content Include="src\js\test\foreground\view\listItemButton\listItemButtonView.spec.js" />
<Content Include="src\js\test\foreground\view\listItemButton\moreActionsButtonView.spec.js" />
<Content Include="src\js\test\foreground\view\listItemButton\playPauseSongButtonView.spec.js" />
<Content Include="src\js\test\foreground\view\listItemButton\playPlaylistButtonView.spec.js" />
Expand Down Expand Up @@ -200,6 +210,7 @@
<Content Include="src\js\test\foreground\view\video\videoRegion.spec.js" />
<Content Include="src\js\test\foreground\view\video\videoSpecLoader.js" />
<Content Include="src\js\test\foreground\view\video\videoView.spec.js" />
<Content Include="src\js\test\foreground\view\viewTestUtility.js" />
<Content Include="src\js\thirdParty\test\chai.js" />
<Content Include="src\js\thirdParty\test\mocha.js" />
<Content Include="src\js\thirdParty\test\sinon.js" />
Expand Down Expand Up @@ -356,7 +367,6 @@
<Content Include="src\js\foreground\view\stream\shuffleButtonView.js" />
<Content Include="src\js\foreground\view\stream\streamItemsView.js" />
<Content Include="src\js\foreground\view\search\searchRegion.js" />
<Content Include="src\js\foreground\view\listItemButton\listItemButtonView.js" />
<Content Include="src\js\foreground\view\notification\notificationRegion.js" />
<Content Include="src\js\foreground\view\notification\notificationView.js" />
<Content Include="src\js\foreground\view\playlist\playlistsAreaRegion.js" />
Expand Down
1 change: 1 addition & 0 deletions src/js/foreground/enum/keyCode.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
define({
Enter: 13,
Space: 32,
ArrowLeft: 37,
ArrowUp: 38,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,7 @@

var Tooltipable = require('foreground/view/behavior/tooltipable');

var ListItemButtonView = Marionette.ItemView.extend({
className: 'listItem-button button button--icon button--icon--secondary button--medium',

attributes: {
'data-ui': 'tooltipable'
},

var ListItemButton = Marionette.Behavior.extend({
events: {
'click': '_onClick',
'dblclick': '_onDblClick'
Expand All @@ -27,6 +21,12 @@
this._debounceOnClickAction = _.debounce(this._doOnClickAction.bind(this), 100, true);
},

onRender: function() {
// Prefer setting these in initialize, but currently $el is not available in behaviors until render.
this.$el.addClass('listItem-button button button--icon button--icon--secondary button--medium');
this.$el.attr('data-ui', 'tooltipable');
},

// TODO: I actually do need to have these bubble up because global events don't fire.
_onClick: function() {
this._debounceOnClickAction();
Expand All @@ -48,10 +48,11 @@

_doOnClickAction: function() {
if (!this.$el.hasClass('is-disabled')) {
this.doOnClickAction();
// TODO: This should probably be a triggerMethod?
this.view.doOnClickAction();
}
}
});

return ListItemButtonView;
return ListItemButton;
});
11 changes: 2 additions & 9 deletions src/js/foreground/view/dialog/clearStreamDialogView.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
'use strict';

var Dialog = require('foreground/model/dialog/dialog');
var DialogContent = require('foreground/view/behavior/dialogContent');
var ClearStreamView = require('foreground/view/dialog/clearStreamView');
var DialogView = require('foreground/view/dialog/dialogView');

var ClearStreamDialogView = DialogView.extend({
Expand All @@ -16,14 +16,7 @@
reminderProperty: 'remindClearStream'
});

this.contentView = new Marionette.LayoutView({
template: _.template(chrome.i18n.getMessage('clearStreamQuestion')),
behaviors: {
DialogContent: {
behaviorClass: DialogContent
}
}
});
this.contentView = new ClearStreamView();

DialogView.prototype.initialize.apply(this, arguments);
},
Expand Down
16 changes: 16 additions & 0 deletions src/js/foreground/view/dialog/clearStreamView.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
define(function(require) {
'use strict';

var DialogContent = require('foreground/view/behavior/dialogContent');

var ClearStreamView = Marionette.LayoutView.extend({
template: _.template(chrome.i18n.getMessage('clearStreamQuestion')),
behaviors: {
DialogContent: {
behaviorClass: DialogContent
}
}
});

return ClearStreamView;
});
10 changes: 2 additions & 8 deletions src/js/foreground/view/dialog/dialogView.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

var Checkbox = require('foreground/model/element/checkbox');
var CheckboxView = require('foreground/view/element/checkboxView');
var KeyCode = require('foreground/enum/keyCode');
var DialogTemplate = require('text!template/dialog/dialog.html');

var DialogView = Marionette.LayoutView.extend({
Expand All @@ -19,15 +20,12 @@
panel: '[data-ui~=panel]',
submitButton: '[data-ui~=submitButton]',
cancelButton: '[data-ui~=cancelButton]',
reminderCheckbox: '[data-ui~=reminderCheckbox]',
closeButton: '[data-ui~=closeButton]',
submittable: '[data-ui~=submittable]'
},

events: {
'mousedown': '_onMouseDown',
'mouseup': '_onMouseUp',
'click @ui.closeButton': '_onClickCloseButton',
'click @ui.cancelButton': '_onClickCancelButton',
'click @ui.submitButton': '_onClickSubmitButton',
'keypress @ui.submittable': '_onKeyPressSubmittable'
Expand Down Expand Up @@ -84,10 +82,6 @@
this.mouseDownTarget = null;
},

_onClickCloseButton: function() {
this._hide();
},

_onClickCancelButton: function() {
this._hide();
},
Expand All @@ -98,7 +92,7 @@

// If the enter key is pressed on a js-submittable element, treat as if user pressed OK button.
_onKeyPressSubmittable: function(event) {
if (event.which === 13) {
if (event.which === KeyCode.Enter) {
this._submit();
}
},
Expand Down
13 changes: 4 additions & 9 deletions src/js/foreground/view/dialog/errorDialogView.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
'use strict';

var Dialog = require('foreground/model/dialog/dialog');
var DialogContent = require('foreground/view/behavior/dialogContent');
var ErrorView = require('foreground/view/dialog/errorView');
var DialogView = require('foreground/view/dialog/dialogView');

var ErrorDialogView = DialogView.extend({
Expand All @@ -16,15 +16,10 @@
showCancelButton: false
});

this.contentView = new Marionette.LayoutView({
template: _.template(options.text),
behaviors: {
DialogContent: {
behaviorClass: DialogContent
}
}
this.contentView = new ErrorView({
text: options.text
});

DialogView.prototype.initialize.apply(this, arguments);

// TODO: This tends to flood my DB with errors. Possible (expected) errors still need to be handled:
Expand Down
28 changes: 28 additions & 0 deletions src/js/foreground/view/dialog/errorView.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
define(function(require) {
'use strict';

var DialogContent = require('foreground/view/behavior/dialogContent');

var ErrorView = Marionette.LayoutView.extend({
template: _.template('<%= text %>'),
templateHelpers: function() {
return {
text: this.text
};
},

behaviors: {
DialogContent: {
behaviorClass: DialogContent
}
},

text: '',

initialize: function(options) {
this.text = options.text;
}
});

return ErrorView;
});
11 changes: 2 additions & 9 deletions src/js/foreground/view/dialog/googleSignInDialogView.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
'use strict';

var Dialog = require('foreground/model/dialog/dialog');
var DialogContent = require('foreground/view/behavior/dialogContent');
var GoogleSignInView = require('foreground/view/dialog/googleSignInView');
var DialogView = require('foreground/view/dialog/dialogView');

var GoogleSignInDialogView = DialogView.extend({
Expand All @@ -17,14 +17,7 @@
alwaysSaveReminder: true
});

this.contentView = new Marionette.LayoutView({
template: _.template(chrome.i18n.getMessage('googleSignInMessage')),
behaviors: {
DialogContent: {
behaviorClass: DialogContent
}
}
});
this.contentView = new GoogleSignInView();

DialogView.prototype.initialize.apply(this, arguments);
},
Expand Down
17 changes: 17 additions & 0 deletions src/js/foreground/view/dialog/googleSignInView.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
define(function(require) {
'use strict';

var DialogContent = require('foreground/view/behavior/dialogContent');

var GoogleSignInView = Marionette.LayoutView.extend({
template: _.template(chrome.i18n.getMessage('googleSignInMessage')),

behaviors: {
DialogContent: {
behaviorClass: DialogContent
}
}
});

return GoogleSignInView;
});
11 changes: 2 additions & 9 deletions src/js/foreground/view/dialog/linkUserIdDialogView.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
'use strict';

var Dialog = require('foreground/model/dialog/dialog');
var DialogContent = require('foreground/view/behavior/dialogContent');
var LinkUserIdView = require('foreground/view/dialog/linkUserIdView');
var DialogView = require('foreground/view/dialog/dialogView');

var LinkUserIdDialogView = DialogView.extend({
Expand All @@ -18,14 +18,7 @@
alwaysSaveReminder: true
});

this.contentView = new Marionette.LayoutView({
template: _.template(chrome.i18n.getMessage('linkAccountsMessage')),
behaviors: {
DialogContent: {
behaviorClass: DialogContent
}
}
});
this.contentView = new LinkUserIdView();

DialogView.prototype.initialize.apply(this, arguments);
},
Expand Down
17 changes: 17 additions & 0 deletions src/js/foreground/view/dialog/linkUserIdView.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
define(function(require) {
'use strict';

var DialogContent = require('foreground/view/behavior/dialogContent');

var LinkUserIdView = Marionette.LayoutView.extend({
template: _.template(chrome.i18n.getMessage('linkAccountsMessage')),

behaviors: {
DialogContent: {
behaviorClass: DialogContent
}
}
});

return LinkUserIdView;
});
11 changes: 2 additions & 9 deletions src/js/foreground/view/dialog/updateStreamusDialogView.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
'use strict';

var Dialog = require('foreground/model/dialog/dialog');
var DialogContent = require('foreground/view/behavior/dialogContent');
var UpdateStreamusView = require('foreground/view/dialog/updateStreamusView');
var DialogView = require('foreground/view/dialog/dialogView');

var UpdateStreamusDialogView = DialogView.extend({
Expand All @@ -13,14 +13,7 @@
submitButtonText: chrome.i18n.getMessage('update')
});

this.contentView = new Marionette.LayoutView({
template: _.template(chrome.i18n.getMessage('anUpdateIsAvailable')),
behaviors: {
DialogContent: {
behaviorClass: DialogContent
}
}
});
this.contentView = new UpdateStreamusView();

DialogView.prototype.initialize.apply(this, arguments);
},
Expand Down
17 changes: 17 additions & 0 deletions src/js/foreground/view/dialog/updateStreamusView.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
define(function(require) {
'use strict';

var DialogContent = require('foreground/view/behavior/dialogContent');

var UpdateStreamusView = Marionette.LayoutView.extend({
template: _.template(chrome.i18n.getMessage('anUpdateIsAvailable')),

behaviors: {
DialogContent: {
behaviorClass: DialogContent
}
}
});

return UpdateStreamusView;
});

0 comments on commit 0fa780d

Please sign in to comment.