111 lines
4.3 KiB
JavaScript
111 lines
4.3 KiB
JavaScript
describe("app.views.StreamShortcuts", function () {
|
|
|
|
beforeEach(function() {
|
|
// This puts `app.page` into the proper state.
|
|
delete app.page;
|
|
new app.Router().stream();
|
|
|
|
this.post1 = factory.post({author : factory.author({name : "Rebecca Black", id : 1492})});
|
|
this.post2 = factory.post({author : factory.author({name : "John Stamos", id : 1987})});
|
|
|
|
this.stream = new app.models.Stream();
|
|
this.stream.add([this.post1, this.post2]);
|
|
this.streamView = new app.views.Stream({model : this.stream});
|
|
spec.content().html(this.streamView.render().el);
|
|
this.view = new app.views.StreamShortcuts({el: $(document)});
|
|
|
|
expect(spec.content().find("div.stream-element.loaded").length).toBe(2);
|
|
});
|
|
|
|
describe("initialize", function() {
|
|
it("setups the shortcuts", function() {
|
|
spyOn(app.helpers, "Shortcuts").and.callThrough();
|
|
spyOn(app.views.StreamShortcuts.prototype, "_onHotkeyDown");
|
|
spyOn(app.views.StreamShortcuts.prototype, "_onHotkeyUp");
|
|
this.view = new app.views.StreamShortcuts({el: $(document)});
|
|
expect(app.helpers.Shortcuts.calls.count()).toBe(2);
|
|
|
|
$("body").trigger($.Event("keydown", {which: Keycodes.J, target: {type: "textarea"}}));
|
|
$("body").trigger($.Event("keyup", {which: Keycodes.J, target: {type: "textarea"}}));
|
|
expect(app.views.StreamShortcuts.prototype._onHotkeyDown).not.toHaveBeenCalled();
|
|
expect(app.views.StreamShortcuts.prototype._onHotkeyUp).not.toHaveBeenCalled();
|
|
|
|
var e = $.Event("keydown", {which: Keycodes.J, target: {type: "div"}});
|
|
$("body").trigger(e);
|
|
expect(app.views.StreamShortcuts.prototype._onHotkeyDown).toHaveBeenCalledWith(e);
|
|
|
|
e = $.Event("keyup", {which: Keycodes.J, target: {type: "div"}});
|
|
$("body").trigger(e);
|
|
expect(app.views.StreamShortcuts.prototype._onHotkeyUp).toHaveBeenCalledWith(e);
|
|
});
|
|
});
|
|
|
|
describe("_onHotkeyDown", function() {
|
|
it("calls goToNext when the user pressed 'J'", function() {
|
|
spyOn(this.view, "gotoNext");
|
|
var e = $.Event("keydown", {which: Keycodes.J, target: {type: "div"}});
|
|
this.view._onHotkeyDown(e);
|
|
expect(this.view.gotoNext).toHaveBeenCalled();
|
|
});
|
|
|
|
it("calls gotoPrev when the user pressed 'K'", function() {
|
|
spyOn(this.view, "gotoPrev");
|
|
var e = $.Event("keydown", {which: Keycodes.K, target: {type: "div"}});
|
|
this.view._onHotkeyDown(e);
|
|
expect(this.view.gotoPrev).toHaveBeenCalled();
|
|
});
|
|
});
|
|
|
|
describe("_onHotkeyUp", function() {
|
|
it("calls commentSelected when the user pressed 'C'", function() {
|
|
spyOn(this.view, "commentSelected");
|
|
var e = $.Event("keyup", {which: Keycodes.C, target: {type: "div"}});
|
|
this.view._onHotkeyUp(e);
|
|
expect(this.view.commentSelected).toHaveBeenCalled();
|
|
});
|
|
|
|
it("calls likeSelected when the user pressed 'L'", function() {
|
|
spyOn(this.view, "likeSelected");
|
|
var e = $.Event("keyup", {which: Keycodes.L, target: {type: "div"}});
|
|
this.view._onHotkeyUp(e);
|
|
expect(this.view.likeSelected).toHaveBeenCalled();
|
|
});
|
|
|
|
it("calls expandSelected when the user pressed 'M'", function() {
|
|
spyOn(this.view, "expandSelected");
|
|
var e = $.Event("keyup", {which: Keycodes.M, target: {type: "div"}});
|
|
this.view._onHotkeyUp(e);
|
|
expect(this.view.expandSelected).toHaveBeenCalled();
|
|
});
|
|
|
|
it("calls openFirstLinkSelected when the user pressed 'O'", function() {
|
|
spyOn(this.view, "openFirstLinkSelected");
|
|
var e = $.Event("keyup", {which: Keycodes.O, target: {type: "div"}});
|
|
this.view._onHotkeyUp(e);
|
|
expect(this.view.openFirstLinkSelected).toHaveBeenCalled();
|
|
});
|
|
|
|
it("calls reshareSelected when the user pressed 'R'", function() {
|
|
spyOn(this.view, "reshareSelected");
|
|
var e = $.Event("keyup", {which: Keycodes.R, target: {type: "div"}});
|
|
this.view._onHotkeyUp(e);
|
|
expect(this.view.reshareSelected).toHaveBeenCalled();
|
|
});
|
|
});
|
|
|
|
describe("gotoNext", function() {
|
|
it("calls selectPost", function() {
|
|
spyOn(this.view, "selectPost");
|
|
this.view.gotoNext();
|
|
expect(this.view.selectPost).toHaveBeenCalled();
|
|
});
|
|
});
|
|
|
|
describe("gotoPrev", function() {
|
|
it("calls selectPost", function() {
|
|
spyOn(this.view, "selectPost");
|
|
this.view.gotoPrev();
|
|
expect(this.view.selectPost).toHaveBeenCalled();
|
|
});
|
|
});
|
|
});
|