54 lines
1.5 KiB
Ruby
54 lines
1.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.shared_examples 'a cascading setting' do
|
|
context 'when setting is enforced by an ancestor group' do
|
|
before do
|
|
visit group_path
|
|
|
|
page.within form_group_selector do
|
|
enable_setting.call
|
|
|
|
find('[data-testid="enforce-for-all-subgroups-checkbox"]').check
|
|
end
|
|
|
|
click_save_button
|
|
end
|
|
|
|
shared_examples 'subgroup settings are disabled' do
|
|
it 'disables setting in subgroups' do
|
|
visit subgroup_path
|
|
|
|
expect(find("#{setting_field_selector}[disabled]")).to be_checked
|
|
end
|
|
end
|
|
|
|
include_examples 'subgroup settings are disabled'
|
|
|
|
context 'when use_traversal_ids_for_ancestors is disabled' do
|
|
before do
|
|
stub_feature_flags(use_traversal_ids_for_ancestors: false)
|
|
end
|
|
|
|
include_examples 'subgroup settings are disabled'
|
|
end
|
|
|
|
it 'does not show enforcement checkbox in subgroups' do
|
|
visit subgroup_path
|
|
|
|
expect(page).not_to have_selector '[data-testid="enforce-for-all-subgroups-checkbox"]'
|
|
end
|
|
|
|
it 'displays lock icon with popover', :js do
|
|
visit subgroup_path
|
|
|
|
page.within form_group_selector do
|
|
find('[data-testid="cascading-settings-lock-icon"]').click
|
|
end
|
|
|
|
page.within '[data-testid="cascading-settings-lock-popover"]' do
|
|
expect(page).to have_text 'This setting has been enforced by an owner of Foo bar.'
|
|
expect(page).to have_link 'Foo bar', href: setting_path
|
|
end
|
|
end
|
|
end
|
|
end
|