diff --git a/app/controllers/my_profile/friends_controller.rb b/app/controllers/my_profile/friends_controller.rb index 51950f9..3b44de1 100755 --- a/app/controllers/my_profile/friends_controller.rb +++ b/app/controllers/my_profile/friends_controller.rb @@ -1,9 +1,9 @@ class FriendsController < MyProfileController - + protect 'manage_friends', :profile - + def index - @suggestions = profile.profile_suggestions.of_person.enabled.includes(:suggestion).limit(per_page) + @suggestions = profile.suggested_profiles.of_person.enabled.includes(:suggestion).limit(per_page) if is_cache_expired?(profile.manage_friends_cache_key(params)) @friends = profile.friends.paginate(:per_page => per_page, :page => params[:npage]) end @@ -18,7 +18,7 @@ class FriendsController < MyProfileController end def suggest - @suggestions = profile.profile_suggestions.of_person.enabled.includes(:suggestion).limit(per_page) + @suggestions = profile.suggested_profiles.of_person.enabled.includes(:suggestion).limit(per_page) end def remove_suggestion @@ -26,13 +26,13 @@ class FriendsController < MyProfileController redirect_to :action => 'suggest' unless @person if @person && request.post? profile.remove_suggestion(@person) - @suggestions = profile.profile_suggestions.of_person.enabled.includes(:suggestion).limit(per_page) + @suggestions = profile.suggested_profiles.of_person.enabled.includes(:suggestion).limit(per_page) render :partial => 'shared/profile_suggestions_list', :locals => { :suggestions => @suggestions, :collection => :friends_suggestions, :per_page => params[:per_page] || per_page } end end def connections - @suggestion = profile.profile_suggestions.of_person.enabled.find_by_suggestion_id(params[:id]) + @suggestion = profile.suggested_profiles.of_person.enabled.find_by_suggestion_id(params[:id]) if @suggestion @tags = @suggestion.tag_connections @profiles = @suggestion.profile_connections diff --git a/app/controllers/my_profile/memberships_controller.rb b/app/controllers/my_profile/memberships_controller.rb index 312b936..c52e24b 100644 --- a/app/controllers/my_profile/memberships_controller.rb +++ b/app/controllers/my_profile/memberships_controller.rb @@ -40,7 +40,7 @@ class MembershipsController < MyProfileController end def suggest - @suggestions = profile.profile_suggestions.of_community.enabled.includes(:suggestion).limit(per_page) + @suggestions = profile.suggested_profiles.of_community.enabled.includes(:suggestion).limit(per_page) end def remove_suggestion @@ -49,13 +49,13 @@ class MembershipsController < MyProfileController redirect_to :action => 'suggest' unless @community if @community && request.post? profile.remove_suggestion(@community) - @suggestions = profile.profile_suggestions.of_community.enabled.includes(:suggestion).limit(custom_per_page) + @suggestions = profile.suggested_profiles.of_community.enabled.includes(:suggestion).limit(custom_per_page) render :partial => 'shared/profile_suggestions_list', :locals => { :suggestions => @suggestions, :collection => :communities_suggestions, :per_page => custom_per_page} end end def connections - @suggestion = profile.profile_suggestions.of_community.enabled.find_by_suggestion_id(params[:id]) + @suggestion = profile.suggested_profiles.of_community.enabled.find_by_suggestion_id(params[:id]) if @suggestion @tags = @suggestion.tag_connections @profiles = @suggestion.profile_connections diff --git a/app/models/add_friend.rb b/app/models/add_friend.rb index 8047e71..3f1206a 100644 --- a/app/models/add_friend.rb +++ b/app/models/add_friend.rb @@ -54,7 +54,7 @@ class AddFriend < Task end def remove_from_suggestion_list(task) - suggestion = task.requestor.profile_suggestions.find_by_suggestion_id task.target.id + suggestion = task.requestor.suggested_profiles.find_by_suggestion_id task.target.id suggestion.disable if suggestion end end diff --git a/app/models/person.rb b/app/models/person.rb index 15582e9..e6e37b8 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -84,9 +84,9 @@ roles] } has_and_belongs_to_many :acepted_forums, :class_name => 'Forum', :join_table => 'terms_forum_people' has_and_belongs_to_many :articles_with_access, :class_name => 'Article', :join_table => 'article_privacy_exceptions' - has_many :profile_suggestions, :foreign_key => :person_id, :order => 'score DESC', :dependent => :destroy - has_many :suggested_people, :through => :profile_suggestions, :source => :suggestion, :conditions => ['profile_suggestions.suggestion_type = ? AND profile_suggestions.enabled = ?', 'Person', true] - has_many :suggested_communities, :through => :profile_suggestions, :source => :suggestion, :conditions => ['profile_suggestions.suggestion_type = ? AND profile_suggestions.enabled = ?', 'Community', true] + has_many :suggested_profiles, :class_name => 'ProfileSuggestion', :foreign_key => :person_id, :order => 'score DESC', :dependent => :destroy + has_many :suggested_people, :through => :suggested_profiles, :source => :suggestion, :conditions => ['profile_suggestions.suggestion_type = ? AND profile_suggestions.enabled = ?', 'Person', true] + has_many :suggested_communities, :through => :suggested_profiles, :source => :suggestion, :conditions => ['profile_suggestions.suggestion_type = ? AND profile_suggestions.enabled = ?', 'Community', true] scope :more_popular, :order => 'friends_count DESC' @@ -524,7 +524,7 @@ roles] } end def remove_suggestion(profile) - suggestion = profile_suggestions.find_by_suggestion_id profile.id + suggestion = suggested_profiles.find_by_suggestion_id profile.id suggestion.disable if suggestion end diff --git a/app/models/profile.rb b/app/models/profile.rb index 6cd2da0..4c6f396 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -1033,7 +1033,7 @@ private :generate_url, :url_options end def remove_from_suggestion_list(person) - suggestion = person.profile_suggestions.find_by_suggestion_id self.id + suggestion = person.suggested_profiles.find_by_suggestion_id self.id suggestion.disable if suggestion end diff --git a/app/models/profile_suggestion.rb b/app/models/profile_suggestion.rb index 129141d..9f0c669 100644 --- a/app/models/profile_suggestion.rb +++ b/app/models/profile_suggestion.rb @@ -113,14 +113,14 @@ class ProfileSuggestion < ActiveRecord::Base suggested_profiles = all_suggestions(person) return if suggested_profiles.nil? - already_suggested_profiles = person.profile_suggestions.map(&:suggestion_id).join(',') + already_suggested_profiles = person.suggested_profiles.map(&:suggestion_id).join(',') suggested_profiles = suggested_profiles.where("profiles.id NOT IN (#{already_suggested_profiles})") if already_suggested_profiles.present? #TODO suggested_profiles = suggested_profiles.order('score DESC') suggested_profiles = suggested_profiles.limit(N_SUGGESTIONS) return if suggested_profiles.blank? suggested_profiles.each do |suggested_profile| - suggestion = person.profile_suggestions.find_or_initialize_by_suggestion_id(suggested_profile.id) + suggestion = person.suggested_profiles.find_or_initialize_by_suggestion_id(suggested_profile.id) RULES.each do |rule, options| begin value = suggested_profile.send("#{rule}_count").to_i @@ -273,7 +273,7 @@ class ProfileSuggestion < ActiveRecord::Base end def self.generate_profile_suggestions(person, force = false) - return if person.profile_suggestions.enabled.count >= MIN_LIMIT && !force + return if person.suggested_profiles.enabled.count >= MIN_LIMIT && !force Delayed::Job.enqueue ProfileSuggestionsJob.new(person.id) unless ProfileSuggestionsJob.exists?(person.id) end diff --git a/test/functional/friends_controller_test.rb b/test/functional/friends_controller_test.rb index a4064d5..e216b73 100644 --- a/test/functional/friends_controller_test.rb +++ b/test/functional/friends_controller_test.rb @@ -46,7 +46,7 @@ class FriendsControllerTest < ActionController::TestCase should 'display find people button' do get :index, :profile => 'testuser' - assert_tag :tag => 'a', :content => 'Find people', :attributes => { :href => '/assets/people' } + assert_tag :tag => 'a', :content => 'Find people', :attributes => { :href => '/search/assets?asset=people' } end should 'not display invite friends button if any plugin tells not to' do @@ -76,25 +76,25 @@ class FriendsControllerTest < ActionController::TestCase end should 'display people suggestions' do - profile.profile_suggestions.create(:suggestion => friend) + profile.suggested_profiles.create(:suggestion => friend) get :suggest, :profile => 'testuser' assert_tag :tag => 'a', :content => "+ #{friend.name}", :attributes => { :href => "/profile/#{friend.identifier}/add" } end should 'display button to add friend suggestion' do - profile.profile_suggestions.create(:suggestion => friend) + profile.suggested_profiles.create(:suggestion => friend) get :suggest, :profile => 'testuser' assert_tag :tag => 'a', :attributes => { :href => "/profile/#{friend.identifier}/add" } end should 'display button to remove people suggestion' do - profile.profile_suggestions.create(:suggestion => friend) + profile.suggested_profiles.create(:suggestion => friend) get :suggest, :profile => 'testuser' assert_tag :tag => 'a', :attributes => { :href => /\/myprofile\/testuser\/friends\/remove_suggestion\/#{friend.identifier}/ } end should 'remove suggestion of friend' do - suggestion = profile.profile_suggestions.create(:suggestion => friend) + suggestion = profile.suggested_profiles.create(:suggestion => friend) post :remove_suggestion, :profile => 'testuser', :id => friend.identifier assert_response :success diff --git a/test/functional/memberships_controller_test.rb b/test/functional/memberships_controller_test.rb index 588eb12..28a3de1 100644 --- a/test/functional/memberships_controller_test.rb +++ b/test/functional/memberships_controller_test.rb @@ -331,35 +331,35 @@ class MembershipsControllerTest < ActionController::TestCase should 'display list suggestions button' do community = fast_create(Community) - profile.profile_suggestions.create(:suggestion => community) + profile.suggested_profiles.create(:suggestion => community) get :index, :profile => 'testuser' assert_tag :tag => 'a', :content => 'See some suggestions of communities...', :attributes => { :href => "/myprofile/testuser/memberships/suggest" } end should 'display communities suggestions' do community = fast_create(Community) - profile.profile_suggestions.create(:suggestion => community) + profile.suggested_profiles.create(:suggestion => community) get :suggest, :profile => 'testuser' assert_tag :tag => 'a', :content => "+ #{community.name}", :attributes => { :href => "/profile/#{community.identifier}/join" } end should 'display button to join on community suggestion' do community = fast_create(Community) - profile.profile_suggestions.create(:suggestion => community) + profile.suggested_profiles.create(:suggestion => community) get :suggest, :profile => 'testuser' assert_tag :tag => 'a', :attributes => { :href => "/profile/#{community.identifier}/join" } end should 'display button to remove community suggestion' do community = fast_create(Community) - profile.profile_suggestions.create(:suggestion => community) + profile.suggested_profiles.create(:suggestion => community) get :suggest, :profile => 'testuser' assert_tag :tag => 'a', :attributes => { :href => /\/myprofile\/testuser\/memberships\/remove_suggestion\/#{community.identifier}/ } end should 'remove suggestion of community' do community = fast_create(Community) - suggestion = profile.profile_suggestions.create(:suggestion => community) + suggestion = profile.suggested_profiles.create(:suggestion => community) post :remove_suggestion, :profile => 'testuser', :id => community.identifier assert_response :success diff --git a/test/unit/profile_suggestion_test.rb b/test/unit/profile_suggestion_test.rb index 1a016e0..74a673c 100644 --- a/test/unit/profile_suggestion_test.rb +++ b/test/unit/profile_suggestion_test.rb @@ -142,7 +142,7 @@ class ProfileSuggestionTest < ActiveSupport::TestCase p2 = create_user('testuser2').person p3 = create_user('testuser3').person p4 = create_user('testuser4').person - p5 = create_user('testuser4').person + p5 = create_user('testuser5').person p1.add_friend(p2) p1.add_friend(p3) @@ -212,8 +212,8 @@ class ProfileSuggestionTest < ActiveSupport::TestCase ProfileSuggestion.expects(:calculate_suggestions) - person.profile_suggestions.enabled.last.disable - person.profile_suggestions.enabled.last.destroy + person.suggested_profiles.enabled.last.disable + person.suggested_profiles.enabled.last.destroy process_delayed_job_queue end diff --git a/test/unit/profile_test.rb b/test/unit/profile_test.rb index 5b6a9ec..7bf13da 100644 --- a/test/unit/profile_test.rb +++ b/test/unit/profile_test.rb @@ -2139,6 +2139,16 @@ class ProfileTest < ActiveSupport::TestCase assert_equal false, ProfileSuggestion.find(suggestion.id).enabled end + should 'destroy related suggestion if profile is destroyed' do + person = fast_create(Person) + suggested_person = fast_create(Person) + suggestion = ProfileSuggestion.create(:person => person, :suggestion => suggested_person, :enabled => true) + + assert_difference 'ProfileSuggestion.find_all_by_suggestion_id(suggested_person.id).count', -1 do + suggested_person.destroy + end + end + should 'enable profile visibility' do profile = fast_create(Profile) -- libgit2 0.21.2