67 lines
2 KiB
JavaScript
67 lines
2 KiB
JavaScript
describe("app.views.Stream", function() {
|
|
beforeEach(function() {
|
|
loginAs({name: "alice", avatar : {small : "http://avatar.com/photo.jpg"}});
|
|
|
|
this.posts = $.parseJSON(spec.readFixture("stream_json"));
|
|
|
|
this.stream = new app.models.Stream();
|
|
this.stream.add(this.posts);
|
|
|
|
this.view = new app.views.Stream({model : this.stream});
|
|
|
|
// do this manually because we've moved loadMore into render??
|
|
this.view.render();
|
|
_.each(this.view.collection.models, function(post) {
|
|
this.view.addPostView(post);
|
|
}, this);
|
|
});
|
|
|
|
describe("initialize", function() {
|
|
it("binds an infinite scroll listener", function() {
|
|
spyOn($.fn, "scroll");
|
|
new app.views.Stream({model : this.stream});
|
|
expect($.fn.scroll).toHaveBeenCalled();
|
|
});
|
|
});
|
|
|
|
describe("#render", function() {
|
|
beforeEach(function() {
|
|
this.statusMessage = this.stream.items.models[0];
|
|
this.statusElement = $(this.view.$(".stream_element")[0]);
|
|
});
|
|
|
|
context("when rendering a status message", function() {
|
|
it("shows the message in the content area", function() {
|
|
expect(this.statusElement.find(".post-content p").text()).toContain("LONG POST"); //markdown'ed
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("infScroll", function() {
|
|
// NOTE: inf scroll happens at 500px
|
|
|
|
it("fetches moar when the user is at the bottom of the page", function() {
|
|
spyOn($.fn, "height").andReturn(0);
|
|
spyOn($.fn, "scrollTop").andReturn(100);
|
|
spyOn(this.view.model, "fetch");
|
|
|
|
this.view.infScroll();
|
|
|
|
waitsFor(function(){
|
|
return this.view.model.fetch.wasCalled
|
|
}, "the infinite scroll function didn't fetch the stream")
|
|
|
|
runs(function(){
|
|
expect(this.view.model.fetch).toHaveBeenCalled()
|
|
})
|
|
});
|
|
});
|
|
|
|
describe("unbindInfScroll", function() {
|
|
it("unbinds scroll", function() {
|
|
spyOn($.fn, "unbind");
|
|
this.view.unbindInfScroll();
|
|
expect($.fn.unbind).toHaveBeenCalledWith("scroll");
|
|
});
|
|
});
|
|
});
|