From 3641521740174cb50b0026f4350b4a0e63d3c488 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Tue, 14 Oct 2014 02:12:33 -0400 Subject: [PATCH] VRFS-2244 handle duplicate friend requests better --- ruby/lib/jam_ruby/models/friend_request.rb | 8 ++++- ruby/spec/jam_ruby/models/friendship_spec.rb | 33 ++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/ruby/lib/jam_ruby/models/friend_request.rb b/ruby/lib/jam_ruby/models/friend_request.rb index 4f99e5d21..c73b06579 100644 --- a/ruby/lib/jam_ruby/models/friend_request.rb +++ b/ruby/lib/jam_ruby/models/friend_request.rb @@ -36,9 +36,15 @@ module JamRuby ActiveRecord::Base.transaction do friend_request = FriendRequest.find(id) friend_request.status = status - friend_request.updated_at = Time.now friend_request.save + duplicate_requests = FriendRequest.where("user_id = ? AND friend_id = ?", user_id, friend_id) + + duplicate_requests.each do |req| + req.status = status + req.save + end + # create both records for this friendship if friend_request.status == "accept" Friendship.save(friend_request.user_id, friend_request.friend_id) diff --git a/ruby/spec/jam_ruby/models/friendship_spec.rb b/ruby/spec/jam_ruby/models/friendship_spec.rb index ba3a42914..8fabe66b2 100644 --- a/ruby/spec/jam_ruby/models/friendship_spec.rb +++ b/ruby/spec/jam_ruby/models/friendship_spec.rb @@ -19,5 +19,38 @@ describe Friendship do user2.first_friended_at.should_not be_nil end + it "should accept a single request" do + user1 = FactoryGirl.create(:user) + user2 = FactoryGirl.create(:user) + req1 = FriendRequest.new + req1.user = user1 + req1.friend = user2 + req1.save! + + FriendRequest.save(req1.id, user1.id, user2.id, 'accept', nil) + + requests = FriendRequest.where('user_id = ? AND friend_id = ? AND status = ?', user1.id, user2.id, 'accept') + requests.count.should == 1 + end + + it "should update duplicate requests" do + user1 = FactoryGirl.create(:user) + user2 = FactoryGirl.create(:user) + + req1 = FriendRequest.new + req1.user = user1 + req1.friend = user2 + req1.save! + + req2 = FriendRequest.new + req2.user = user1 + req2.friend = user2 + req2.save! + + FriendRequest.save(req1.id, user1.id, user2.id, 'accept', nil) + + requests = FriendRequest.where('user_id = ? AND friend_id = ? AND status = ?', user1.id, user2.id, 'accept') + requests.count.should == 2 + end end