stream order can take created at to be sorted by origin post time

This commit is contained in:
maxwell 2011-02-18 16:01:04 -08:00
parent 6dc35c516a
commit 37a699ace1
2 changed files with 19 additions and 6 deletions

View file

@ -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)

View file

@ -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