Skip to content

Commit

Permalink
Moving tests into specLoaders for jshint and reducing coupling in lis…
Browse files Browse the repository at this point in the history
…tItemButtonViews
  • Loading branch information
MeoMix committed May 16, 2015
1 parent 37b7a35 commit aeaf71d
Show file tree
Hide file tree
Showing 34 changed files with 318 additions and 188 deletions.
19 changes: 9 additions & 10 deletions src/js/foreground/view/leftPane/playlistItemView.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
var ListItemMultiSelect = require('foreground/view/behavior/itemViewMultiSelect');
var SpinnerView = require('foreground/view/element/spinnerView');
var AddSongButtonView = require('foreground/view/listItemButton/addSongButtonView');
var DeleteSongButtonView = require('foreground/view/listItemButton/deleteSongButtonView');
var DeleteListItemButtonView = require('foreground/view/listItemButton/deleteListItemButtonView');
var PlayPauseSongButtonView = require('foreground/view/listItemButton/playPauseSongButtonView');
var PlaylistItemTemplate = require('text!template/leftPane/playlistItem.html');
var Tooltipable = require('foreground/view/behavior/tooltipable');
Expand Down Expand Up @@ -36,19 +36,18 @@
return {
PlayPauseSongButtonView: {
viewClass: PlayPauseSongButtonView,
options: {
streamItems: Streamus.backgroundPage.stream.get('items'),
player: Streamus.backgroundPage.player
}
model: this.model.get('song'),
streamItems: Streamus.backgroundPage.stream.get('items'),
player: Streamus.backgroundPage.player
},
AddSongButtonView: {
viewClass: AddSongButtonView,
options: {
streamItems: Streamus.backgroundPage.stream.get('items')
}
model: this.model.get('song'),
streamItems: Streamus.backgroundPage.stream.get('items')
},
DeleteSongButtonView: {
viewClass: DeleteSongButtonView
DeleteListItemButtonView: {
viewClass: DeleteListItemButtonView,
model: this.model
}
};
},
Expand Down
6 changes: 2 additions & 4 deletions src/js/foreground/view/listItemButton/addSongButtonView.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@
},

doOnClickAction: function() {
var song = this.model.get('song');
this.streamItems.addSongs(song);
this.streamItems.addSongs(this.model);
},

_onStreamItemsAddCompleted: function() {
Expand All @@ -47,8 +46,7 @@
},

_setState: function() {
var duplicatesInfo = this.streamItems.getDuplicatesInfo(this.model.get('song'));

var duplicatesInfo = this.streamItems.getDuplicatesInfo(this.model);
this.$el.toggleClass('is-disabled', duplicatesInfo.allDuplicates);

var tooltipText = duplicatesInfo.allDuplicates ? duplicatesInfo.message : chrome.i18n.getMessage('add');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
var DeleteListItemButtonTemplate = require('text!template/listItemButton/deleteListItemButton.html');
var DeleteIconTemplate = require('text!template/icon/deleteIcon_18.svg');

var DeleteSongButtonView = ListItemButtonView.extend({
var DeleteListItemButtonView = ListItemButtonView.extend({
template: _.template(DeleteListItemButtonTemplate),
templateHelpers: {
deleteIcon: _.template(DeleteIconTemplate)()
Expand All @@ -27,5 +27,5 @@
}
});

return DeleteSongButtonView;
return DeleteListItemButtonView;
});
6 changes: 3 additions & 3 deletions src/js/foreground/view/listItemButton/listItemButtonsView.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
this.shownButtonViews = [];

_.forIn(this.buttonViewOptions, function(buttonViewOption) {
var buttonView = new buttonViewOption.viewClass(_.extend({
model: this.model
}, buttonViewOption.options));
var ViewClass = buttonViewOption.viewClass;
var options = _.omit(buttonViewOption, 'viewClass');
var buttonView = new ViewClass(options);

documentFragment.appendChild(buttonView.render().el);
buttonView.triggerMethod('show');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,21 +65,19 @@
_isPausable: function() {
var activeSongId = this.streamItems.getActiveSongId();
// The pause icon is visible only if the player is playing/buffering and the song is this model's song.
var songId = this.model.get('song').get('id');
var songId = this.model.get('id');
var isPlayerPausable = this.player.isPausable();
var isPausable = activeSongId === songId && isPlayerPausable;

return isPausable;
},

_playSong: function() {
var song = this.model.get('song');

// If there's only one song to be played - check if it's already in the stream.
var streamItem = this.streamItems.getBySong(song);
var streamItem = this.streamItems.getBySong(this.model);

if (_.isUndefined(streamItem)) {
this.streamItems.addSongs(song, {
this.streamItems.addSongs(this.model, {
playOnAdd: true
});
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
var offset = this.$el.offset();

Streamus.channels.saveSongs.commands.trigger('show:simpleMenu', {
songs: [this.model.get('song')],
songs: [this.model],
top: offset.top,
left: offset.left
});
Expand Down
13 changes: 6 additions & 7 deletions src/js/foreground/view/playlist/playlistView.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,17 @@
return {
PlayPlaylistButtonView: {
viewClass: PlayPlaylistButtonView,
options: {
streamItems: Streamus.backgroundPage.stream.get('items')
}
model: this.model,
streamItems: Streamus.backgroundPage.stream.get('items')
},
AddPlaylistButtonView: {
viewClass: AddPlaylistButtonView,
options: {
streamItems: Streamus.backgroundPage.stream.get('items')
}
model: this.model,
streamItems: Streamus.backgroundPage.stream.get('items')
},
DeletePlaylistButtonView: {
viewClass: DeletePlaylistButtonView
viewClass: DeletePlaylistButtonView,
model: this.model
}
};
},
Expand Down
17 changes: 7 additions & 10 deletions src/js/foreground/view/search/searchResultView.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,19 @@
return {
PlayPauseSongButtonView: {
viewClass: PlayPauseSongButtonView,
options: {
streamItems: Streamus.backgroundPage.stream.get('items'),
player: Streamus.backgroundPage.player
}
model: this.model.get('song'),
streamItems: Streamus.backgroundPage.stream.get('items'),
player: Streamus.backgroundPage.player
},
AddSongButtonView: {
viewClass: AddSongButtonView,
options: {
streamItems: Streamus.backgroundPage.stream.get('items')
}
model: this.model.get('song'),
streamItems: Streamus.backgroundPage.stream.get('items')
},
SaveSongButtonView: {
viewClass: SaveSongButtonView,
options: {
signInManager: Streamus.backgroundPage.signInManager
}
model: this.model.get('song'),
signInManager: Streamus.backgroundPage.signInManager
}
};
},
Expand Down
19 changes: 9 additions & 10 deletions src/js/foreground/view/stream/streamItemView.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

var ListItemView = require('foreground/view/listItemView');
var ListItemMultiSelect = require('foreground/view/behavior/itemViewMultiSelect');
var DeleteSongButtonView = require('foreground/view/listItemButton/deleteSongButtonView');
var DeleteListItemButtonView = require('foreground/view/listItemButton/deleteListItemButtonView');
var PlayPauseSongButtonView = require('foreground/view/listItemButton/playPauseSongButtonView');
var SaveSongButtonView = require('foreground/view/listItemButton/saveSongButtonView');
var MoreActionsButtonView = require('foreground/view/listItemButton/moreActionsButtonView');
Expand Down Expand Up @@ -35,19 +35,18 @@
return {
PlayPauseSongButtonView: {
viewClass: PlayPauseSongButtonView,
options: {
streamItems: Streamus.backgroundPage.stream.get('items'),
player: Streamus.backgroundPage.player
}
model: this.model.get('song'),
streamItems: Streamus.backgroundPage.stream.get('items'),
player: Streamus.backgroundPage.player
},
SaveSongButtonView: {
viewClass: SaveSongButtonView,
options: {
signInManager: Streamus.backgroundPage.signInManager
}
model: this.model.get('song'),
signInManager: Streamus.backgroundPage.signInManager
},
DeleteSongButtonView: {
viewClass: DeleteSongButtonView
DeleteListItemButtonView: {
viewClass: DeleteListItemButtonView,
model: this.model
}
};
},
Expand Down
3 changes: 2 additions & 1 deletion src/js/foreground/view/tooltip/tooltipRegion.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@
return targetOffset;
},

// Credit to jquery.qtip2, http://qtip2.com/, for providing a lot of this math.
// Credit to jquery.qtip2, http://qtip2.com/, for providing a lot of this math
// https://github.com/qTip2/qTip2/blob/master/src/position/viewport.js
// I've stripped the given math **way** down to just my specific use case.

// Perform math to figure out whether the element needs to be shifted left/right and, if so, how much it needs to shift.
Expand Down
108 changes: 15 additions & 93 deletions src/js/test/foreground/foregroundSpecLoader.js
Original file line number Diff line number Diff line change
@@ -1,130 +1,52 @@
define(function(require) {
'use strict';
/* jshint ignore:start */

// /view/
// /view/appBar/
require('test/foreground/view/appBar/adminMenuAreaView.spec');
require('test/foreground/view/appBar/appBarRegion.spec');
require('test/foreground/view/appBar/appBarView.spec');
require('test/foreground/view/appBar/nextButtonView.spec');
require('test/foreground/view/appBar/playlistTitleView.spec');
require('test/foreground/view/appBar/playPauseButtonView.spec');
require('test/foreground/view/appBar/previousButtonView.spec');
require('test/foreground/view/appBar/volumeAreaView.spec');
require('test/foreground/view/appBar/appBarSpecLoader');

// /view/behavior/
require('test/foreground/view/behavior/collectionViewMultiSelect.spec');
require('test/foreground/view/behavior/itemViewMultiSelect.spec');
require('test/foreground/view/behavior/scrollable.spec');
require('test/foreground/view/behavior/slidingRender.spec');
require('test/foreground/view/behavior/sortable.spec');
require('test/foreground/view/behavior/tooltipable.spec');
require('test/foreground/view/behavior/behaviorSpecLoader');

// /view/contextMenu/
require('test/foreground/view/contextMenu/contextMenuItemView.spec');
require('test/foreground/view/contextMenu/contextMenuRegion.spec');
require('test/foreground/view/contextMenu/contextMenuView.spec');
require('test/foreground/view/contextMenu/contextMenuSpecLoader');

// /view/dialog/
require('test/foreground/view/dialog/aboutStreamusDialogView.spec');
require('test/foreground/view/dialog/aboutStreamusView.spec');
require('test/foreground/view/dialog/browserSettingsDialogView.spec');
require('test/foreground/view/dialog/browserSettingsView.spec');
require('test/foreground/view/dialog/clearStreamDialogView.spec');
require('test/foreground/view/dialog/createPlaylistDialogView.spec');
require('test/foreground/view/dialog/createPlaylistView.spec');
require('test/foreground/view/dialog/deletePlaylistDialogView.spec');
require('test/foreground/view/dialog/deletePlaylistView.spec');
require('test/foreground/view/dialog/dialogContentView.spec');
require('test/foreground/view/dialog/dialogRegion.spec');
require('test/foreground/view/dialog/dialogView.spec');
require('test/foreground/view/dialog/editPlaylistDialogView.spec');
require('test/foreground/view/dialog/editPlaylistView.spec');
require('test/foreground/view/dialog/errorDialogView.spec');
require('test/foreground/view/dialog/exportPlaylistDialogView.spec');
require('test/foreground/view/dialog/exportPlaylistView.spec');
require('test/foreground/view/dialog/googleSignInDialogView.spec');
require('test/foreground/view/dialog/linkUserIdDialogView.spec');
require('test/foreground/view/dialog/settingsDialogView.spec');
require('test/foreground/view/dialog/settingsView.spec');
require('test/foreground/view/dialog/updateStreamusDialogView.spec');
require('test/foreground/view/dialog/dialogSpecLoader');

// /view/element/
require('test/foreground/view/element/checkboxView.spec');
require('test/foreground/view/element/radioButtonView.spec');
require('test/foreground/view/element/radioGroupView.spec');
require('test/foreground/view/element/simpleListItemView.spec');
require('test/foreground/view/element/simpleMenuItemsView.spec');
require('test/foreground/view/element/simpleMenuItemView.spec');
require('test/foreground/view/element/simpleMenuView.spec');
require('test/foreground/view/element/spinnerView.spec');
require('test/foreground/view/element/switchView.spec');
require('test/foreground/view/element/elementSpecLoader');

// /view/leftPane/
require('test/foreground/view/leftPane/activePlaylistAreaView.spec');
require('test/foreground/view/leftPane/leftPaneRegion.spec');
require('test/foreground/view/leftPane/leftPaneView.spec');
require('test/foreground/view/leftPane/playlistItemsView.spec');
require('test/foreground/view/leftPane/playlistItemView.spec');
require('test/foreground/view/leftPane/signInView.spec');
require('test/foreground/view/leftPane/leftPaneSpecLoader');

// /view/listItemButton/
require('test/foreground/view/listItemButton/addPlaylistButtonView.spec');
require('test/foreground/view/listItemButton/addSongButtonView.spec');
require('test/foreground/view/listItemButton/deletePlaylistButtonView.spec');
require('test/foreground/view/listItemButton/deleteSongButtonView.spec');
require('test/foreground/view/listItemButton/listItemButtonsView.spec');
require('test/foreground/view/listItemButton/listItemButtonView.spec');
require('test/foreground/view/listItemButton/moreActionsButtonView.spec');
require('test/foreground/view/listItemButton/playPauseSongButtonView.spec');
require('test/foreground/view/listItemButton/playPlaylistButtonView.spec');
require('test/foreground/view/listItemButton/saveSongButtonView.spec');
require('test/foreground/view/listItemButton/listItemButtonSpecLoader');

// /view/notification/
require('test/foreground/view/notification/notificationRegion.spec');
require('test/foreground/view/notification/notificationView.spec');
require('test/foreground/view/notification/notificationSpecLoader');

// /view/playlist/
require('test/foreground/view/playlist/playlistsAreaRegion.spec');
require('test/foreground/view/playlist/playlistsAreaView.spec');
require('test/foreground/view/playlist/playlistsView.spec');
require('test/foreground/view/playlist/playlistView.spec');
require('test/foreground/view/playlist/playlistSpecLoader');

// /view/saveSongs/
require('test/foreground/view/saveSongs/saveSongsRegion.spec');

// /view/search/
require('test/foreground/view/search/searchAreaRegion.spec');
require('test/foreground/view/search/searchResultsView.spec');
require('test/foreground/view/search/searchResultView.spec');
require('test/foreground/view/search/searchView.spec');
require('test/foreground/view/search/searchSpecLoader');

// /view/selectionBar/
require('test/foreground/view/selectionBar/selectionBarRegion.spec');
require('test/foreground/view/selectionBar/selectionBarView.spec');
require('test/foreground/view/selectionBar/selectionBarSpecLoader');

// /view/stream/
require('test/foreground/view/stream/activeStreamItemView.spec');
require('test/foreground/view/stream/clearStreamButtonView.spec');
require('test/foreground/view/stream/radioButtonView.spec');
require('test/foreground/view/stream/repeatButtonView.spec');
require('test/foreground/view/stream/saveStreamButtonView.spec');
require('test/foreground/view/stream/shuffleButtonView.spec');
require('test/foreground/view/stream/streamItemsView.spec');
require('test/foreground/view/stream/streamItemView.spec');
require('test/foreground/view/stream/streamRegion.spec');
require('test/foreground/view/stream/streamView.spec');
require('test/foreground/view/stream/timeAreaView.spec');
require('test/foreground/view/stream/streamSpecLoader');

// /view/tooltip/
require('test/foreground/view/tooltip/tooltipRegion.spec');
require('test/foreground/view/tooltip/tooltipView.spec');
require('test/foreground/view/tooltip/tooltipSpecLoader');

// /view/video/
require('test/foreground/view/video/videoRegion.spec');
require('test/foreground/view/video/videoView.spec');
require('test/foreground/view/video/videoSpecLoader');

require('test/foreground/view/foregroundAreaView.spec');
require('test/foreground/view/listItemView.spec');
/* jshint ignore:end */
});
12 changes: 12 additions & 0 deletions src/js/test/foreground/view/appBar/appBarSpecLoader.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
define(function(require) {
'use strict';

require('test/foreground/view/appBar/adminMenuAreaView.spec');
require('test/foreground/view/appBar/appBarRegion.spec');
require('test/foreground/view/appBar/appBarView.spec');
require('test/foreground/view/appBar/nextButtonView.spec');
require('test/foreground/view/appBar/playlistTitleView.spec');
require('test/foreground/view/appBar/playPauseButtonView.spec');
require('test/foreground/view/appBar/previousButtonView.spec');
require('test/foreground/view/appBar/volumeAreaView.spec');
});

0 comments on commit aeaf71d

Please sign in to comment.