Add post-nested group Share lock integration tests
This commit is contained in:
parent
a1a4754b0a
commit
c93e8f246a
1 changed files with 92 additions and 40 deletions
|
@ -4,50 +4,106 @@ feature 'Project > Members > Share with Group', :js do
|
|||
include Select2Helper
|
||||
include ActionView::Helpers::DateHelper
|
||||
|
||||
let(:master) { create(:user) }
|
||||
|
||||
describe 'Share Lock' do
|
||||
let(:master) { create(:user) }
|
||||
let(:group) { create(:group) }
|
||||
let!(:other_group) { create(:group) }
|
||||
let(:project) { create(:project, namespace: group) }
|
||||
|
||||
background do
|
||||
project.add_master(master)
|
||||
sign_in(master)
|
||||
end
|
||||
|
||||
context 'when the group does not have "Share lock" enabled' do
|
||||
before do
|
||||
shared_examples 'the project can be shared with groups' do
|
||||
scenario 'the "Share with group" tab exists' do
|
||||
visit project_settings_members_path(project)
|
||||
|
||||
click_on 'share-with-group-tab'
|
||||
|
||||
select2 other_group.id, from: '#link_group_id'
|
||||
page.find('body').click
|
||||
find('.btn-create').trigger('click')
|
||||
end
|
||||
|
||||
scenario 'the group link appears in the existing groups list' do
|
||||
page.within('.project-members-groups') do
|
||||
expect(page).to have_content(other_group.name)
|
||||
end
|
||||
expect(page).to have_selector('#share-with-group-tab')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the group has "Share lock" enabled' do
|
||||
before do
|
||||
group.update_column(:share_with_group_lock, true)
|
||||
visit project_settings_members_path(project)
|
||||
end
|
||||
|
||||
shared_examples 'the project cannot be shared with groups' do
|
||||
scenario 'the "Share with group" tab does not exist' do
|
||||
visit project_settings_members_path(project)
|
||||
expect(page).to have_selector('#add-member-tab')
|
||||
expect(page).not_to have_selector('#share-with-group-tab')
|
||||
end
|
||||
end
|
||||
|
||||
context 'for a project in a root group' do
|
||||
let!(:group_to_share_with) { create(:group) }
|
||||
let(:project) { create(:project, namespace: create(:group)) }
|
||||
|
||||
background do
|
||||
project.add_master(master)
|
||||
sign_in(master)
|
||||
end
|
||||
|
||||
context 'when the group has "Share lock" disabled' do
|
||||
it_behaves_like 'the project can be shared with groups'
|
||||
|
||||
scenario 'the project can be shared with another group' do
|
||||
visit project_settings_members_path(project)
|
||||
|
||||
click_on 'share-with-group-tab'
|
||||
|
||||
select2 group_to_share_with.id, from: '#link_group_id'
|
||||
page.find('body').click
|
||||
find('.btn-create').trigger('click')
|
||||
|
||||
page.within('.project-members-groups') do
|
||||
expect(page).to have_content(group_to_share_with.name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the group has "Share lock" enabled' do
|
||||
before do
|
||||
project.namespace.update_column(:share_with_group_lock, true)
|
||||
end
|
||||
|
||||
it_behaves_like 'the project cannot be shared with groups'
|
||||
end
|
||||
end
|
||||
|
||||
context 'for a project in a subgroup', :postgresql do
|
||||
let!(:group_to_share_with) { create(:group) }
|
||||
let(:root_group) { create(:group) }
|
||||
let(:subgroup) { create(:group, parent: root_group) }
|
||||
let(:project) { create(:project, namespace: subgroup) }
|
||||
|
||||
background do
|
||||
project.add_master(master)
|
||||
sign_in(master)
|
||||
end
|
||||
|
||||
context 'when the root_group has "Share lock" disabled' do
|
||||
context 'when the subgroup has "Share lock" disabled' do
|
||||
it_behaves_like 'the project can be shared with groups'
|
||||
end
|
||||
|
||||
context 'when the subgroup has "Share lock" enabled' do
|
||||
before do
|
||||
subgroup.update_column(:share_with_group_lock, true)
|
||||
end
|
||||
|
||||
it_behaves_like 'the project cannot be shared with groups'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the root_group has "Share lock" enabled' do
|
||||
before do
|
||||
root_group.update_column(:share_with_group_lock, true)
|
||||
end
|
||||
|
||||
context 'when the subgroup has "Share lock" disabled (parent overridden)' do
|
||||
it_behaves_like 'the project can be shared with groups'
|
||||
end
|
||||
|
||||
context 'when the subgroup has "Share lock" enabled' do
|
||||
before do
|
||||
subgroup.update_column(:share_with_group_lock, true)
|
||||
end
|
||||
|
||||
it_behaves_like 'the project cannot be shared with groups'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'setting an expiration date for a group link' do
|
||||
let(:master) { create(:user) }
|
||||
let(:project) { create(:project) }
|
||||
let!(:group) { create(:group) }
|
||||
|
||||
|
@ -83,17 +139,14 @@ feature 'Project > Members > Share with Group', :js do
|
|||
|
||||
describe 'the groups dropdown' do
|
||||
context 'with multiple groups to choose from' do
|
||||
let(:master) { create(:user) }
|
||||
let(:project) { create(:project) }
|
||||
let(:group) { create(:group) }
|
||||
|
||||
background do
|
||||
project.add_master(master)
|
||||
sign_in(master)
|
||||
|
||||
group_two = create(:group)
|
||||
group.add_owner(master)
|
||||
group_two.add_owner(master)
|
||||
create(:group).add_owner(master)
|
||||
create(:group).add_owner(master)
|
||||
|
||||
visit project_settings_members_path(project)
|
||||
execute_script 'GroupsSelect.PER_PAGE = 1;'
|
||||
|
@ -110,17 +163,16 @@ feature 'Project > Members > Share with Group', :js do
|
|||
end
|
||||
|
||||
context 'for a project in a nested group' do
|
||||
let(:master) { create(:user) }
|
||||
let(:group) { create(:group) }
|
||||
let!(:nested_group) { create(:group, parent: group) }
|
||||
let!(:another_group) { create(:group) }
|
||||
let!(:group_to_share_with) { create(:group) }
|
||||
let!(:project) { create(:project, namespace: nested_group) }
|
||||
|
||||
background do
|
||||
project.add_master(master)
|
||||
sign_in(master)
|
||||
group.add_master(master)
|
||||
another_group.add_master(master)
|
||||
group_to_share_with.add_master(master)
|
||||
end
|
||||
|
||||
scenario 'the groups dropdown does not show ancestors', :nested_groups do
|
||||
|
@ -130,7 +182,7 @@ feature 'Project > Members > Share with Group', :js do
|
|||
click_link 'Search for a group'
|
||||
|
||||
page.within '.select2-drop' do
|
||||
expect(page).to have_content(another_group.name)
|
||||
expect(page).to have_content(group_to_share_with.name)
|
||||
expect(page).not_to have_content(group.name)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue