Commit d8b660b26b7751d089b66a94dcec7eeae3c04a45
1 parent
016d233a
Exists in
master
and in
22 other branches
profile-suggestions: remove from list after ask friendship
Also added some tests (ActionItem3234)
Showing
4 changed files
with
86 additions
and
0 deletions
Show diff stats
app/models/add_friend.rb
| ... | ... | @@ -14,6 +14,11 @@ class AddFriend < Task |
| 14 | 14 | alias :friend :target |
| 15 | 15 | alias :friend= :target= |
| 16 | 16 | |
| 17 | + after_create do |task| | |
| 18 | + TaskMailer.invitation_notification(task).deliver unless task.friend | |
| 19 | + remove_from_suggestion_list(task) | |
| 20 | + end | |
| 21 | + | |
| 17 | 22 | def perform |
| 18 | 23 | target.add_friend(requestor, group_for_friend) |
| 19 | 24 | requestor.add_friend(target, group_for_person) |
| ... | ... | @@ -48,4 +53,8 @@ class AddFriend < Task |
| 48 | 53 | {:type => :profile_image, :profile => requestor, :url => requestor.url} |
| 49 | 54 | end |
| 50 | 55 | |
| 56 | + def remove_from_suggestion_list(task) | |
| 57 | + suggestion = task.requestor.profile_suggestions.find_by_suggestion_id task.target.id | |
| 58 | + suggestion.disable if suggestion | |
| 59 | + end | |
| 51 | 60 | end | ... | ... |
app/models/profile.rb
| ... | ... | @@ -631,6 +631,7 @@ private :generate_url, :url_options |
| 631 | 631 | self.affiliate(person, Profile::Roles.admin(environment.id)) if members.count == 0 |
| 632 | 632 | self.affiliate(person, Profile::Roles.member(environment.id)) |
| 633 | 633 | end |
| 634 | + remove_from_suggestion_list person | |
| 634 | 635 | else |
| 635 | 636 | raise _("%s can't have members") % self.class.name |
| 636 | 637 | end |
| ... | ... | @@ -959,4 +960,10 @@ private :generate_url, :url_options |
| 959 | 960 | def preferred_login_redirection |
| 960 | 961 | redirection_after_login.blank? ? environment.redirection_after_login : redirection_after_login |
| 961 | 962 | end |
| 963 | + | |
| 964 | + def remove_from_suggestion_list(person) | |
| 965 | + suggestion = person.profile_suggestions.find_by_suggestion_id self.id | |
| 966 | + suggestion.disable if suggestion | |
| 967 | + end | |
| 968 | + | |
| 962 | 969 | end | ... | ... |
test/unit/add_friend_test.rb
| ... | ... | @@ -137,4 +137,11 @@ class AddFriendTest < ActiveSupport::TestCase |
| 137 | 137 | assert_match(/#{task.requestor.name} wants to be your friend/, email.subject) |
| 138 | 138 | end |
| 139 | 139 | |
| 140 | + should 'disable suggestion if profile requested friendship' do | |
| 141 | + suggestion = ProfileSuggestion.create(:person => person1, :suggestion => person2, :enabled => true) | |
| 142 | + | |
| 143 | + task = AddFriend.create(:person => person1, :friend => person2) | |
| 144 | + assert_equal false, ProfileSuggestion.find(suggestion.id).enabled | |
| 145 | + end | |
| 146 | + | |
| 140 | 147 | end | ... | ... |
test/unit/person_test.rb
| ... | ... | @@ -1458,4 +1458,67 @@ class PersonTest < ActiveSupport::TestCase |
| 1458 | 1458 | person.reload |
| 1459 | 1459 | end |
| 1460 | 1460 | end |
| 1461 | + | |
| 1462 | + should 'have a list of suggested people to be friend' do | |
| 1463 | + person = create_user('person').person | |
| 1464 | + suggested_friend = fast_create(Person) | |
| 1465 | + | |
| 1466 | + ProfileSuggestion.create(:person => person, :suggestion => suggested_friend) | |
| 1467 | + assert_equal [suggested_friend], person.suggested_people | |
| 1468 | + end | |
| 1469 | + | |
| 1470 | + should 'have a list of suggested communities to be member' do | |
| 1471 | + person = create_user('person').person | |
| 1472 | + suggested_community = fast_create(Community) | |
| 1473 | + | |
| 1474 | + ProfileSuggestion.create(:person => person, :suggestion => suggested_community) | |
| 1475 | + assert_equal [suggested_community], person.suggested_communities | |
| 1476 | + end | |
| 1477 | + | |
| 1478 | + should 'remove profile suggestion when person is destroyed' do | |
| 1479 | + person = create_user('person').person | |
| 1480 | + suggested_community = fast_create(Community) | |
| 1481 | + | |
| 1482 | + suggestion = ProfileSuggestion.create(:person => person, :suggestion => suggested_community) | |
| 1483 | + | |
| 1484 | + person.destroy | |
| 1485 | + assert_raise ActiveRecord::RecordNotFound do | |
| 1486 | + ProfileSuggestion.find suggestion.id | |
| 1487 | + end | |
| 1488 | + end | |
| 1489 | + | |
| 1490 | + should 'remove profile suggestion when suggested profile is destroyed' do | |
| 1491 | + person = create_user('person').person | |
| 1492 | + suggested_community = fast_create(Community) | |
| 1493 | + | |
| 1494 | + suggestion = ProfileSuggestion.create(:person => person, :suggestion => suggested_community) | |
| 1495 | + | |
| 1496 | + suggested_community.destroy | |
| 1497 | + assert_raise ActiveRecord::RecordNotFound do | |
| 1498 | + ProfileSuggestion.find suggestion.id | |
| 1499 | + end | |
| 1500 | + end | |
| 1501 | + | |
| 1502 | + should 'not suggest disabled suggestion of people' do | |
| 1503 | + person = create_user('person').person | |
| 1504 | + suggested_person = fast_create(Person) | |
| 1505 | + disabled_suggested_person = fast_create(Person) | |
| 1506 | + | |
| 1507 | + enabled_suggestion = ProfileSuggestion.create(:person => person, :suggestion => suggested_person) | |
| 1508 | + disabled_suggestion = ProfileSuggestion.create(:person => person, :suggestion => disabled_suggested_person, :enabled => false) | |
| 1509 | + | |
| 1510 | + assert_equal [suggested_person], person.suggested_people | |
| 1511 | + end | |
| 1512 | + | |
| 1513 | + should 'not suggest disabled suggestion of communities' do | |
| 1514 | + person = create_user('person').person | |
| 1515 | + suggested_community = fast_create(Community) | |
| 1516 | + disabled_suggested_community = fast_create(Community) | |
| 1517 | + | |
| 1518 | + enabled_suggestion = ProfileSuggestion.create(:person => person, :suggestion => suggested_community) | |
| 1519 | + disabled_suggestion = ProfileSuggestion.create(:person => person, :suggestion => disabled_suggested_community, :enabled => false) | |
| 1520 | + | |
| 1521 | + assert_equal [suggested_community], person.suggested_communities | |
| 1522 | + end | |
| 1523 | + | |
| 1461 | 1524 | end | ... | ... |