Commit 357c794a authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Refactor project_members_controller_spec

Signed-off-by: default avatarDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
parent fa075771
require('spec_helper') require('spec_helper')
describe Projects::ProjectMembersController do describe Projects::ProjectMembersController do
describe '#apply_import' do let(:user) { create(:user) }
let(:project) { create(:project) } let(:project) { create(:project, :public) }
describe 'POST apply_import' do
let(:another_project) { create(:project, :private) } let(:another_project) { create(:project, :private) }
let(:user) { create(:user) }
let(:member) { create(:user) } let(:member) { create(:user) }
before do before do
...@@ -47,23 +48,19 @@ describe Projects::ProjectMembersController do ...@@ -47,23 +48,19 @@ describe Projects::ProjectMembersController do
end end
end end
describe '#index' do describe 'GET index' do
context 'when user is member' do it 'renders index with 200 status code' do
before do get :index, namespace_id: project.namespace, project_id: project
project = create(:project, :private)
member = create(:user)
project.team << [member, :guest]
sign_in(member)
get :index, namespace_id: project.namespace, project_id: project
end
it { expect(response).to have_http_status(200) } expect(response).to have_http_status(200)
expect(response).to render_template(:index)
end end
end end
describe '#destroy' do describe 'DELETE destroy' do
let(:project) { create(:project, :public) } let(:member) { create(:project_member, :developer, project: project) }
before { sign_in(user) }
context 'when member is not found' do context 'when member is not found' do
it 'returns 404' do it 'returns 404' do
...@@ -76,18 +73,8 @@ describe Projects::ProjectMembersController do ...@@ -76,18 +73,8 @@ describe Projects::ProjectMembersController do
end end
context 'when member is found' do context 'when member is found' do
let(:user) { create(:user) }
let(:team_user) { create(:user) }
let(:member) do
project.team << [team_user, :developer]
project.members.find_by(user_id: team_user.id)
end
context 'when user does not have enough rights' do context 'when user does not have enough rights' do
before do before { project.team << [user, :developer] }
project.team << [user, :developer]
sign_in(user)
end
it 'returns 404' do it 'returns 404' do
delete :destroy, namespace_id: project.namespace, delete :destroy, namespace_id: project.namespace,
...@@ -95,15 +82,12 @@ describe Projects::ProjectMembersController do ...@@ -95,15 +82,12 @@ describe Projects::ProjectMembersController do
id: member id: member
expect(response).to have_http_status(404) expect(response).to have_http_status(404)
expect(project.users).to include team_user expect(project.members).to include member
end end
end end
context 'when user has enough rights' do context 'when user has enough rights' do
before do before { project.team << [user, :master] }
project.team << [user, :master]
sign_in(user)
end
it '[HTML] removes user from members' do it '[HTML] removes user from members' do
delete :destroy, namespace_id: project.namespace, delete :destroy, namespace_id: project.namespace,
...@@ -113,7 +97,7 @@ describe Projects::ProjectMembersController do ...@@ -113,7 +97,7 @@ describe Projects::ProjectMembersController do
expect(response).to redirect_to( expect(response).to redirect_to(
namespace_project_project_members_path(project.namespace, project) namespace_project_project_members_path(project.namespace, project)
) )
expect(project.users).not_to include team_user expect(project.members).not_to include member
end end
it '[JS] removes user from members' do it '[JS] removes user from members' do
...@@ -122,19 +106,16 @@ describe Projects::ProjectMembersController do ...@@ -122,19 +106,16 @@ describe Projects::ProjectMembersController do
id: member id: member
expect(response).to be_success expect(response).to be_success
expect(project.users).not_to include team_user expect(project.members).not_to include member
end end
end end
end end
end end
describe '#leave' do describe 'DELETE leave' do
let(:project) { create(:project, :public) } before { sign_in(user) }
let(:user) { create(:user) }
context 'when member is not found' do context 'when member is not found' do
before { sign_in(user) }
it 'returns 404' do it 'returns 404' do
delete :leave, namespace_id: project.namespace, delete :leave, namespace_id: project.namespace,
project_id: project project_id: project
...@@ -145,10 +126,7 @@ describe Projects::ProjectMembersController do ...@@ -145,10 +126,7 @@ describe Projects::ProjectMembersController do
context 'when member is found' do context 'when member is found' do
context 'and is not an owner' do context 'and is not an owner' do
before do before { project.team << [user, :developer] }
project.team << [user, :developer]
sign_in(user)
end
it 'removes user from members' do it 'removes user from members' do
delete :leave, namespace_id: project.namespace, delete :leave, namespace_id: project.namespace,
...@@ -161,11 +139,9 @@ describe Projects::ProjectMembersController do ...@@ -161,11 +139,9 @@ describe Projects::ProjectMembersController do
end end
context 'and is an owner' do context 'and is an owner' do
before do let(:project) { create(:project, namespace: user.namespace) }
project.update(namespace_id: user.namespace_id)
project.team << [user, :master, user] before { project.team << [user, :master] }
sign_in(user)
end
it 'cannot remove himself from the project' do it 'cannot remove himself from the project' do
delete :leave, namespace_id: project.namespace, delete :leave, namespace_id: project.namespace,
...@@ -176,10 +152,7 @@ describe Projects::ProjectMembersController do ...@@ -176,10 +152,7 @@ describe Projects::ProjectMembersController do
end end
context 'and is a requester' do context 'and is a requester' do
before do before { project.request_access(user) }
project.request_access(user)
sign_in(user)
end
it 'removes user from members' do it 'removes user from members' do
delete :leave, namespace_id: project.namespace, delete :leave, namespace_id: project.namespace,
...@@ -194,13 +167,8 @@ describe Projects::ProjectMembersController do ...@@ -194,13 +167,8 @@ describe Projects::ProjectMembersController do
end end
end end
describe '#request_access' do describe 'POST request_access' do
let(:project) { create(:project, :public) } before { sign_in(user) }
let(:user) { create(:user) }
before do
sign_in(user)
end
it 'creates a new ProjectMember that is not a team member' do it 'creates a new ProjectMember that is not a team member' do
post :request_access, namespace_id: project.namespace, post :request_access, namespace_id: project.namespace,
...@@ -215,8 +183,10 @@ describe Projects::ProjectMembersController do ...@@ -215,8 +183,10 @@ describe Projects::ProjectMembersController do
end end
end end
describe '#approve' do describe 'POST approve' do
let(:project) { create(:project, :public) } let(:member) { create(:project_member, :access_request, project: project) }
before { sign_in(user) }
context 'when member is not found' do context 'when member is not found' do
it 'returns 404' do it 'returns 404' do
...@@ -229,18 +199,8 @@ describe Projects::ProjectMembersController do ...@@ -229,18 +199,8 @@ describe Projects::ProjectMembersController do
end end
context 'when member is found' do context 'when member is found' do
let(:user) { create(:user) }
let(:team_requester) { create(:user) }
let(:member) do
project.request_access(team_requester)
project.requesters.find_by(user_id: team_requester.id)
end
context 'when user does not have enough rights' do context 'when user does not have enough rights' do
before do before { project.team << [user, :developer] }
project.team << [user, :developer]
sign_in(user)
end
it 'returns 404' do it 'returns 404' do
post :approve_access_request, namespace_id: project.namespace, post :approve_access_request, namespace_id: project.namespace,
...@@ -248,15 +208,12 @@ describe Projects::ProjectMembersController do ...@@ -248,15 +208,12 @@ describe Projects::ProjectMembersController do
id: member id: member
expect(response).to have_http_status(404) expect(response).to have_http_status(404)
expect(project.users).not_to include team_requester expect(project.members).not_to include member
end end
end end
context 'when user has enough rights' do context 'when user has enough rights' do
before do before { project.team << [user, :master] }
project.team << [user, :master]
sign_in(user)
end
it 'adds user to members' do it 'adds user to members' do
post :approve_access_request, namespace_id: project.namespace, post :approve_access_request, namespace_id: project.namespace,
...@@ -266,7 +223,7 @@ describe Projects::ProjectMembersController do ...@@ -266,7 +223,7 @@ describe Projects::ProjectMembersController do
expect(response).to redirect_to( expect(response).to redirect_to(
namespace_project_project_members_path(project.namespace, project) namespace_project_project_members_path(project.namespace, project)
) )
expect(project.users).to include team_requester expect(project.members).to include member
end end
end end
end end
......
...@@ -8,5 +8,6 @@ FactoryGirl.define do ...@@ -8,5 +8,6 @@ FactoryGirl.define do
trait(:reporter) { access_level ProjectMember::REPORTER } trait(:reporter) { access_level ProjectMember::REPORTER }
trait(:developer) { access_level ProjectMember::DEVELOPER } trait(:developer) { access_level ProjectMember::DEVELOPER }
trait(:master) { access_level ProjectMember::MASTER } trait(:master) { access_level ProjectMember::MASTER }
trait(:access_request) { requested_at Time.now }
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment