diff --git a/app/assets/javascripts/app/models/stream.js b/app/assets/javascripts/app/models/stream.js index f417016fc692b32470831b672c5d7c13d8a1856c..4cf5ff737a94bb67a5ccc7350a19dad9cdb4b7f6 100644 --- a/app/assets/javascripts/app/models/stream.js +++ b/app/assets/javascripts/app/models/stream.js @@ -15,13 +15,18 @@ app.models.Stream = Backbone.Collection.extend({ return _.any(this.items.models) ? this.timeFilteredPath() : this.basePath() }, + _fetchOpts: function(opts) { + var defaultOpts = { + remove: false // tell backbone to keep existing items in the collection + }; + return _.extend({}, defaultOpts, opts); + }, + fetch: function() { if( this.isFetching() ) return false; var url = this.url(); - this.deferred = this.items.fetch({ - remove : false, - url : url - }).done(_.bind(this.triggerFetchedEvents, this)) + this.deferred = this.items.fetch(this._fetchOpts({url : url})) + .done(_.bind(this.triggerFetchedEvents, this)); }, isFetching : function() { diff --git a/app/assets/javascripts/app/models/stream_aspects.js b/app/assets/javascripts/app/models/stream_aspects.js index f8536c65db7b7d53c799a3ca5e24de76072e3598..4dc97899e730fcbd595e450d4f9e9f10e2947e6f 100644 --- a/app/assets/javascripts/app/models/stream_aspects.js +++ b/app/assets/javascripts/app/models/stream_aspects.js @@ -18,10 +18,7 @@ app.models.StreamAspects = app.models.Stream.extend({ if(this.isFetching()){ return false } var url = this.url(); var ids = this.aspects_ids; - this.deferred = this.items.fetch({ - add : true, - url : url, - data : { 'a_ids': ids } - }).done(_.bind(this.triggerFetchedEvents, this)) + this.deferred = this.items.fetch(this._fetchOpts({url : url, data : { 'a_ids': ids }})) + .done(_.bind(this.triggerFetchedEvents, this)); } }); diff --git a/spec/javascripts/app/models/stream_aspects_spec.js b/spec/javascripts/app/models/stream_aspects_spec.js new file mode 100644 index 0000000000000000000000000000000000000000..f6d99195ccc6550af520386bf5fa4ef34c9caad9 --- /dev/null +++ b/spec/javascripts/app/models/stream_aspects_spec.js @@ -0,0 +1,28 @@ +describe("app.models.StreamAspects", function() { + describe("#fetch", function(){ + var fetch, + stream; + + beforeEach(function(){ + fetch = new $.Deferred(); + stream = new app.models.StreamAspects([], {aspects_ids: [1,2]}); + spyOn(stream.items, "fetch").andCallFake(function(options){ + stream.items.set([{name: 'a'}, {name: 'b'}, {name: 'c'}], options); + fetch.resolve(); + return fetch; + }); + }); + + it("fetches some posts", function(){ + stream.fetch(); + expect(stream.items.length).toEqual(3); + }); + + it("fetches more posts", function(){ + stream.fetch(); + expect(stream.items.length).toEqual(3); + stream.fetch(); + expect(stream.items.length).toEqual(6); + }); + }); +});