diff --git a/app/assets/javascripts/app/models/post.js b/app/assets/javascripts/app/models/post.js index c351ee787214b9500d0023458e2e9f2358023c69..b693d7b2d2b8e7f0d0003894322904240e18b4cd 100644 --- a/app/assets/javascripts/app/models/post.js +++ b/app/assets/javascripts/app/models/post.js @@ -48,12 +48,6 @@ app.models.Post = Backbone.Model.extend(_.extend({}, app.models.formatDateMixin, var body = this.get("text").trim() , newlineIdx = body.indexOf("\n"); return (newlineIdx > 0 ) ? body.substr(newlineIdx+1, body.length) : ""; - }, - - //returns a promise - preloadOrFetch : function(){ - var action = app.hasPreload("post") ? this.set(app.parsePreload("post")) : this.fetch(); - return $.when(action); } })); // @license-end diff --git a/app/assets/javascripts/app/pages/single-post-viewer.js b/app/assets/javascripts/app/pages/single-post-viewer.js index c5a30f1c9f4ecea06e8b4ae010147c3669ca3f76..a145139b58a142bcd7831ae3548e49c1b99c2049 100644 --- a/app/assets/javascripts/app/pages/single-post-viewer.js +++ b/app/assets/javascripts/app/pages/single-post-viewer.js @@ -9,9 +9,9 @@ app.pages.SinglePostViewer = app.views.Base.extend({ }, initialize : function() { - this.model = new app.models.Post({ id : gon.post.id }); - this.model.preloadOrFetch().done(_.bind(this.initViews, this)); - this.model.interactions.fetch(); //async, yo, might want to throttle this later. + this.model = new app.models.Post(gon.post); + this.initViews(); + this.model.comments.fetch(); // async, yo, might want to throttle this later. }, initViews : function() { diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 8b5386d2bfde57d0ceee6339aea789dede6ef380..aa1aa3e9a3c3d3b9b6d2dbc39dd672fa7a10c641 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -22,11 +22,11 @@ class PostsController < ApplicationController presenter = PostPresenter.new(post, current_user) respond_to do |format| format.html do - gon.post = presenter + gon.post = presenter.with_initial_interactions render locals: {post: presenter} end format.mobile { render locals: {post: post} } - format.json { render json: presenter } + format.json { render json: presenter.with_interactions } end end diff --git a/spec/controllers/jasmine_fixtures/posts_spec.rb b/spec/controllers/jasmine_fixtures/posts_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..aed5d118ae3b02721451a513181850aa031ec5d6 --- /dev/null +++ b/spec/controllers/jasmine_fixtures/posts_spec.rb @@ -0,0 +1,11 @@ +require "spec_helper" + +describe PostsController, type: :controller do + describe "#show" do + it "generates the post_json fixture", fixture: true do + post = alice.post(:status_message, text: "hello world", public: true) + get :show, params: {id: post.id}, format: :json + save_fixture(response.body, "post_json") + end + end +end diff --git a/spec/javascripts/app/pages/single-post-viewer_spec.js b/spec/javascripts/app/pages/single-post-viewer_spec.js index df8f9c43c149ec11ac10c06d465267a56a36d527..c1db5139457db8dc6ec64a3b229773470e67efc3 100644 --- a/spec/javascripts/app/pages/single-post-viewer_spec.js +++ b/spec/javascripts/app/pages/single-post-viewer_spec.js @@ -1,6 +1,7 @@ describe("app.pages.SinglePostViewer", function(){ beforeEach(function() { - window.gon={};gon.post = {id: 42}; + window.gon = {}; + gon.post = $.parseJSON(spec.readFixture("post_json")); this.view = new app.pages.SinglePostViewer(); });