jam-cloud/web/spec/features/accept_friend_request_dialo...

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