From 4a7326e035eb0ae99006e25a7252d60305ebeaba Mon Sep 17 00:00:00 2001 From: zhitomirskiyi Date: Tue, 29 Mar 2011 19:35:37 -0700 Subject: [PATCH] WIP --- app/controllers/aspects_controller.rb | 13 +++++++++++-- spec/controllers/aspects_controller_spec.rb | 20 ++++++++++++++++---- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index c70dab5b0..568da5f74 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -98,12 +98,21 @@ class AspectsController < ApplicationController def edit @aspect = current_user.aspects.where(:id => params[:id]).includes(:contacts => {:person => :profile}).first - @contacts = current_user.contacts.includes(:person => :profile).all.sort! { |x, y| x.person.name <=> y.person.name }.reverse! + + @contacts_in_aspect = @aspect.contacts.includes(:person => :profile).all.sort! { |x, y| x.person.name <=> y.person.name } + c = Contact.arel_table + @contacts_not_in_aspect = current_user.contacts.where(c[:id].not_in(@contacts_in_aspect.map(&:id))).includes(:person => :profile).all.sort! { |x, y| x.person.name <=> y.person.name } + + pp @contacts_not_in_aspect + pp @contacts_in_aspect + + @contacts = @contacts_in_aspect + @contacts_not_in_aspect + unless @aspect render :file => "#{Rails.root}/public/404.html", :layout => false, :status => 404 else @aspect_ids = [@aspect.id] - @aspect_contacts_count = @aspect.contacts.length + @aspect_contacts_count = @aspect.contacts.size render :layout => false end end diff --git a/spec/controllers/aspects_controller_spec.rb b/spec/controllers/aspects_controller_spec.rb index 5d288ed96..ae93940cb 100644 --- a/spec/controllers/aspects_controller_spec.rb +++ b/spec/controllers/aspects_controller_spec.rb @@ -295,17 +295,29 @@ describe AspectsController do @eve.profile.first_name = nil @eve.profile.save @eve.save + + @zed = Factory(:user_with_aspect, :username => "zed") + @zed.profile.first_name = "zed" + @zed.profile.save + @zed.save + @katz = Factory(:user_with_aspect, :username => "katz") + @katz.profile.first_name = "katz" + @katz.profile.save + @katz.save + end it 'renders' do get :edit, :id => @alices_aspect_1.id response.should be_success end - it 'assigns the contacts in alphabetical order' do - connect_users(@alice, @alices_aspect_1, @eve, @eve.aspects.first) + it 'assigns the contacts in alphabetical order with people in aspects first' do + connect_users(@alice, @alices_aspect_2, @eve, @eve.aspects.first) + connect_users(@alice, @alices_aspect_2, @zed, @zed.aspects.first) + connect_users(@alice, @alices_aspect_1, @katz, @katz.aspects.first) - get :edit, :id => @alices_aspect_1.id - assigns[:contacts].should == [@alice.contact_for(@eve.person), @alice.contact_for(@bob.person)] + get :edit, :id => @alices_aspect_2.id + assigns[:contacts].map(&:id).should == [@alice.contact_for(@eve.person), @alice.contact_for(@zed.person), @alice.contact_for(@bob.person), @alice.contact_for(@katz.person)].map(&:id) end end