Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions app/controllers/groups/members_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ class Groups::MembersController < ApplicationController
def load_group_request
@group = Group.find(params[:id])
@request = Request.find(params[:request_id])
if @group.invitations.exists?(@request) && @request.pending?
if @group.invitations.exists?(@request.id) && @request.pending?
@request_type = :invitation
elsif @group.join_requests.exists?(@request) && @request.pending?
elsif @group.join_requests.exists?(@request.id) && @request.pending?
@request_type = :join_request
else
redirect_to(@group, :alert => 'Invalid request operation')
Expand All @@ -27,7 +27,7 @@ def add
@user = User.find_by_username(params[:username])
if @user.nil?
redirect_to(members_group_path(@group), :alert => "No user found with username \"#{params[:username]}\"")
elsif @group.members.exists?(@user)
elsif @group.members.exists?(@user.id)
redirect_to(members_group_path(@group), :alert => "#{@user.username} is already a member of this group")
else
@group.join(@user)
Expand Down Expand Up @@ -63,7 +63,7 @@ def leave
def apply
@group = Group.find(params[:id])
authorize @group, :apply?
if @group.members.exists?(current_user)
if @group.members.exists?(current_user.id)
redirect_to(@group, :alert => "You are already a member of this group")
elsif invitation = @group.invitations.pending.where(:target_id => @user).first
invitation.accept!
Expand All @@ -83,7 +83,7 @@ def invites
@user = User.find_by_username(params[:username])
if @user.nil?
redirect_to(invites_members_group_path(@group), :alert => "No user found with username \"#{params[:username]}\"")
elsif @group.members.exists?(@user)
elsif @group.members.exists?(@user.id)
redirect_to(invites_members_group_path(@group), :alert => "#{@user.username} is already a member of this group")
elsif join_request = @group.join_requests.pending.where(:subject_id => @user).first
join_request.accept!
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/groups_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def add_contest
authorize @group, :update?
@contest = Contest.find(params[:contest_id])
authorize @contest, :use?
if @group.contests.exists?(@contest)
if @group.contests.exists?(@contest.id)
redirect_to(@contest, :alert => "This group already has access to this contest")
return
end
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/problem_sets_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def add_problem # unused
authorize @problem_set, :update?
problem = Problem.find(params[:id]) # note switched params - TODO: fix form
authorize problem, :use?
if @problem_set.problems.exists?(problem)
if @problem_set.problems.exists?(problem.id)
redirect_to(problem, :alert => "This problem set already contains this problem")
return
end
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/user_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def add_role
authorize @user, :update?
role = Role.find(params[:user][:role_ids])
authorize role, :grant?
if @user.roles.exists?(role)
if @user.roles.exists?(role.id)
redirect_to(@user, :alert => "This user already has this role")
return
end
Expand Down
2 changes: 1 addition & 1 deletion app/models/group.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class Group < ActiveRecord::Base
3 => [:private,'Membership is by private invitation']

def join(current_user)
if self.members.exists?(current_user)
if self.members.exists?(current_user.id)
false
else
self.members.push(current_user)
Expand Down
2 changes: 1 addition & 1 deletion app/views/layouts/group.html.erb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<% content_for :title, @group.name %>
<% toolbox_push :edit, edit_group_path(@group) if policy(@group).update? %>
<% toolbox_push :delete, @group if policy(@group).destroy? %>
<% if @group.members.exists?(current_user) %>
<% if @group.members.exists?(current_user.id) %>
<% toolbox_push :leave, leave_group_path(@group) if policy(@group).leave? %>
<% elsif policy(@group).join? %>
<%= toolbox_push :join, join_group_path(@group) %>
Expand Down
10 changes: 5 additions & 5 deletions spec/features/invitation_and_join_request_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

@invitation = @group.invitations.pending.where(:target_id => users(:user)).first

expect(@group.members.exists?(users(:user))).to be false
expect(@group.members.exists?(users(:user).id)).to be false

login_as users(:user), :scope => :user
visit accounts_requests_path
Expand All @@ -26,7 +26,7 @@
end
end.to change{ @group.invitations.pending.count }.by(-1)

expect(@group.members.exists?(users(:user))).to be true
expect(@group.members.exists?(users(:user).id)).to be true
end

scenario 'group member invites a user and cancels the invitation' do
Expand Down Expand Up @@ -58,15 +58,15 @@
apply_link = find :xpath, "//a[@href = '#{apply_group_path(@group)}']"
expect { apply_link.click }.to change{ @group.join_requests.pending.count }.by(1)

expect(@group.members.exists?(users(:user))).to be false
expect(@group.members.exists?(users(:user).id)).to be false
@join_request = @group.join_requests.pending.where(:subject_id => users(:user)).first

login_as users(:organiser)
visit join_requests_members_group_path(@group)
accept_link = find :xpath, "//a[@href = '#{accept_members_group_path(@group, @join_request)}']"
expect{ accept_link.click }.to change{ @group.join_requests.pending.count }.by(-1)

expect(@group.members.exists?(users(:user))).to be true
expect(@group.members.exists?(users(:user).id)).to be true
end

scenario 'user applies to join group, and group owner rejects join request' do
Expand All @@ -84,6 +84,6 @@
reject_link = find :xpath, "//a[@href = '#{reject_members_group_path(@group, @join_request)}']"
expect{ reject_link.click }.to change{ @group.join_requests.pending.count }.by(-1)

expect(@group.members.exists?(users(:user))).to be false
expect(@group.members.exists?(users(:user).id)).to be false
end
end