diff options
Diffstat (limited to 'spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb')
-rw-r--r-- | spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb | 81 |
1 files changed, 80 insertions, 1 deletions
diff --git a/spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb b/spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb index 5a50b3de772..477c4c2e1ba 100644 --- a/spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb +++ b/spec/features/projects/settings/registry_settings_cleanup_tags_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Project > Settings > Packages & Registries > Container registry tag expiration policy' do +RSpec.describe 'Project > Settings > Packages and registries > Container registry tag expiration policy' do let_it_be(:user) { create(:user) } let_it_be(:project, reload: true) { create(:project, namespace: user.namespace) } @@ -20,10 +20,89 @@ RSpec.describe 'Project > Settings > Packages & Registries > Container registry end context 'as owner', :js do + it 'shows active tab on sidebar' do + subject + + expect(find('.sidebar-top-level-items > li.active')).to have_content('Settings') + expect(find('.sidebar-sub-level-items > li.active:not(.fly-out-top-item)')) + .to have_content('Packages and registries') + end + it 'shows available section' do subject expect(find('.breadcrumbs')).to have_content('Clean up image tags') + + section = find('[data-testid="container-expiration-policy-project-settings"]') + expect(section).to have_text 'Clean up image tags' + end + + it 'saves cleanup policy submit the form' do + subject + + within '[data-testid="container-expiration-policy-project-settings"]' do + select('Every day', from: 'Run cleanup') + select('50 tags per image name', from: 'Keep the most recent:') + fill_in('Keep tags matching:', with: 'stable') + select('7 days', from: 'Remove tags older than:') + fill_in('Remove tags matching:', with: '.*-production') + + submit_button = find('[data-testid="save-button"') + expect(submit_button).not_to be_disabled + submit_button.click + end + + expect(page).to have_current_path(project_settings_packages_and_registries_path(project)) + expect(find('.gl-alert-body')).to have_content('Cleanup policy successfully saved.') + end + + it 'does not save cleanup policy submit form with invalid regex' do + subject + + within '[data-testid="container-expiration-policy-project-settings"]' do + fill_in('Remove tags matching:', with: '*-production') + + submit_button = find('[data-testid="save-button"') + expect(submit_button).not_to be_disabled + submit_button.click + end + + expect(find('.gl-toast')).to have_content('Something went wrong while updating the cleanup policy.') + end + end + + context 'with a project without expiration policy', :js do + before do + project.container_expiration_policy.destroy! + end + + context 'with container_expiration_policies_enable_historic_entries enabled' do + before do + stub_application_setting(container_expiration_policies_enable_historic_entries: true) + end + + it 'displays the related section' do + subject + + within '[data-testid="container-expiration-policy-project-settings"]' do + expect(find('[data-testid="enable-toggle"]')) + .to have_content('Disabled - Tags will not be automatically deleted.') + end + end + end + + context 'with container_expiration_policies_enable_historic_entries disabled' do + before do + stub_application_setting(container_expiration_policies_enable_historic_entries: false) + end + + it 'does not display the related section' do + subject + + within '[data-testid="container-expiration-policy-project-settings"]' do + expect(find('.gl-alert-title')).to have_content('Cleanup policy for tags is disabled') + end + end end end |