From 37a699ace1c2f54d69d476c175b4db2bf0c4011a Mon Sep 17 00:00:00 2001 From: maxwell Date: Fri, 18 Feb 2011 16:01:04 -0800 Subject: [PATCH] stream order can take created at to be sorted by origin post time --- app/controllers/aspects_controller.rb | 4 ++-- spec/controllers/aspects_controller_spec.rb | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index 922d3cdbd..7d44c70ec 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -23,12 +23,12 @@ class AspectsController < ApplicationController if (current_user.getting_started == true || @aspects.blank?) && !request.format.mobile? redirect_to getting_started_path else - + sort_order = params[:created_at].blank? ? 'updated_at' : 'created_at' @aspect_ids = @aspects.map{|a| a.id} @posts = StatusMessage.joins(:aspects).where(:pending => false, :aspects => {:id => @aspect_ids}).includes(:comments, :photos).select('DISTINCT `posts`.*').paginate( - :page => params[:page], :per_page => 15, :order => 'updated_at DESC') + :page => params[:page], :per_page => 15, :order => sort_order + ' DESC') @fakes = PostsFake.new(@posts) @contacts = current_user.contacts.includes(:person => :profile).where(:pending => false) diff --git a/spec/controllers/aspects_controller_spec.rb b/spec/controllers/aspects_controller_spec.rb index 775cc9d5b..10ebf23fc 100644 --- a/spec/controllers/aspects_controller_spec.rb +++ b/spec/controllers/aspects_controller_spec.rb @@ -69,30 +69,43 @@ describe AspectsController do before do @posts = [] @users = [] - 8.times do |n| + 4.times do |n| user = Factory(:user) @users << user aspect = user.aspects.create(:name => 'people') connect_users(@user, @aspect0, user, aspect) post = @user.post(:status_message, :message => "hello#{n}", :to => eval("@aspect#{(n%2)}.id")) @posts << post + sleep(1) end + @user.build_comment('lalala', :on => @posts.first ).save end it "returns all posts" do @user.aspects.reload get :index - assigns(:posts).length.should == 8 + assigns(:posts).length.should == 4 end it "returns posts filtered by a single aspect" do get :index, :a_ids => [@aspect1.id.to_s] - assigns(:posts).length.should == 4 + assigns(:posts).length.should == 2 end it "returns posts from filtered aspects" do get :index, :a_ids => [@aspect0.id.to_s, @aspect1.id.to_s] - assigns(:posts).length.should == 8 + assigns(:posts).length.should == 4 + end + + it 'returns posts by updated at by default' do + get :index, :a_ids => [@aspect0.id.to_s, @aspect1.id.to_s] + assigns(:posts).should =~ @posts + assigns(:posts).should_not == @posts.reverse + end + + it 'return posts by created at if passed created_at=true' do + get :index, :a_ids => [@aspect0.id.to_s, @aspect1.id.to_s], :created_at => true + assigns(:posts).should == @posts.reverse end end