111 lines
4.3 KiB
Ruby
111 lines
4.3 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe "Accept Friend Request", :js => true, :type => :feature, :capybara_feature => true do
|
|
|
|
before(:each) do
|
|
FriendRequest.delete_all if defined?(FriendRequest)
|
|
Friendship.delete_all if defined?(Friendship)
|
|
JamTrackSession.delete_all if defined?(JamTrackSession)
|
|
SaleLineItem.delete_all if defined?(SaleLineItem)
|
|
Sale.delete_all if defined?(Sale)
|
|
RetailerInvitation.delete_all if defined?(RetailerInvitation)
|
|
Retailer.delete_all if defined?(Retailer)
|
|
InvitedUser.delete_all if defined?(InvitedUser)
|
|
User.delete_all # we delete all users due to the use of find_musician() helper method, which scrolls through all users
|
|
stub_const("APP_CONFIG", web_config)
|
|
end
|
|
|
|
let(:user1) { FactoryBot.create(:user) }
|
|
let(:user2) { FactoryBot.create(:user, first_name: 'bone_crusher') }
|
|
let(:friend_request) { FactoryBot.create(:friend_request, user: user2, friend: user1) }
|
|
|
|
before(:each) do
|
|
sign_in_poltergeist(user1)
|
|
end
|
|
|
|
describe "dialog behavior" do
|
|
|
|
describe "launch states" do
|
|
def open_accept_friend_request_dialog(id)
|
|
visit '/'
|
|
should_be_at_root
|
|
page.execute_script("JK.app.layout.showDialog('accept-friend-request', { d1: '#{id}' });")
|
|
end
|
|
|
|
it "happy path" do
|
|
# users are not friends yet, and this request has not been dealt with
|
|
open_accept_friend_request_dialog(friend_request.id)
|
|
|
|
find('h1', text: 'friend request')
|
|
find('#accept-friend-request-dialog .btn-accept-friend-request', text: 'ACCEPT').trigger(:click)
|
|
page.should_not have_selector('h1', text: 'friend request')
|
|
friend_request.reload
|
|
friend_request.status.should == 'accept'
|
|
|
|
# make sure the friend list is refreshed
|
|
find("[layout-id=\"panelFriends\"] .friend-name[user-id=\"#{user2.id}\"]", visible: false)
|
|
end
|
|
|
|
it "already accepted" do
|
|
# users are not friends yet, and this request has not been dealt with
|
|
friend_request.status = 'accept'
|
|
friend_request.save!
|
|
open_accept_friend_request_dialog(friend_request.id)
|
|
|
|
find('h1', text: 'friend request')
|
|
find('.accept-friend-msg', text: "This friend request from #{user2.name} is no longer valid.")
|
|
find('#accept-friend-request-dialog .btn-close-dialog', text: 'CLOSE').trigger(:click)
|
|
page.should_not have_selector('h1', text: 'friend request')
|
|
end
|
|
|
|
it "already friends" do
|
|
FactoryBot.create(:friendship, user: user1, friend: user2)
|
|
FactoryBot.create(:friendship, user: user2, friend: user1)
|
|
|
|
open_accept_friend_request_dialog(friend_request.id)
|
|
|
|
find('h1', text: 'friend request')
|
|
find('.accept-friend-msg', text: "You are now friends with #{user2.name}!")
|
|
find('#accept-friend-request-dialog .btn-close-dialog', text: 'CLOSE').trigger(:click)
|
|
page.should_not have_selector('h1', text: 'friend request')
|
|
end
|
|
|
|
it "same user seeing own friend request" do
|
|
user3 = FactoryBot.create(:user)
|
|
friend_request.friend = user2
|
|
friend_request.user = user1
|
|
friend_request.save!
|
|
|
|
open_accept_friend_request_dialog(friend_request.id)
|
|
|
|
find('h1', text: 'friend request')
|
|
find('.generic-error-msg', text: 'You can\'t become friends with yourself.')
|
|
find('#accept-friend-request-dialog .btn-close-dialog', text: 'CLOSE').trigger(:click)
|
|
page.should_not have_selector('h1', text: 'friend request')
|
|
end
|
|
|
|
it "no longer exists" do
|
|
open_accept_friend_request_dialog('junk')
|
|
|
|
find('h1', text: 'friend request')
|
|
find('.generic-error-msg', text: 'This friend request no longer exists.')
|
|
find('#accept-friend-request-dialog .btn-close-dialog', text: 'CLOSE').trigger(:click)
|
|
page.should_not have_selector('h1', text: 'friend request')
|
|
end
|
|
|
|
it "no permission" do
|
|
user3 = FactoryBot.create(:user)
|
|
friend_request.friend = user3
|
|
friend_request.save!
|
|
|
|
open_accept_friend_request_dialog(friend_request.id)
|
|
|
|
find('h1', text: 'friend request')
|
|
find('.generic-error-msg', text: 'You do not have permission to access this information.')
|
|
find('#accept-friend-request-dialog .btn-close-dialog', text: 'CLOSE').trigger(:click)
|
|
page.should_not have_selector('h1', text: 'friend request')
|
|
end
|
|
end
|
|
end
|
|
end
|