diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-07-20 15:40:28 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-07-20 15:40:28 +0000 |
commit | b595cb0c1dec83de5bdee18284abe86614bed33b (patch) | |
tree | 8c3d4540f193c5ff98019352f554e921b3a41a72 /spec/views | |
parent | 2f9104a328fc8a4bddeaa4627b595166d24671d0 (diff) | |
download | gitlab-ce-b595cb0c1dec83de5bdee18284abe86614bed33b.tar.gz |
Add latest changes from gitlab-org/gitlab@15-2-stable-eev15.2.0-rc42
Diffstat (limited to 'spec/views')
22 files changed, 251 insertions, 145 deletions
diff --git a/spec/views/admin/application_settings/general.html.haml_spec.rb b/spec/views/admin/application_settings/general.html.haml_spec.rb index 3614090d3cb..c7d156cde39 100644 --- a/spec/views/admin/application_settings/general.html.haml_spec.rb +++ b/spec/views/admin/application_settings/general.html.haml_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'admin/application_settings/general.html.haml' do - let(:app_settings) { build(:application_setting) } + let(:app_settings) { Gitlab::CurrentSettings.current_application_settings } let(:user) { create(:admin) } before do @@ -97,4 +97,33 @@ RSpec.describe 'admin/application_settings/general.html.haml' do expect(rendered).to match ' data-minimum-password-length=' end end + + describe 'error tracking integration' do + context 'with error tracking feature flag enabled' do + before do + stub_feature_flags(gitlab_error_tracking: true) + + render + end + + it 'expects error tracking settings to be available' do + expect(rendered).to have_field('application_setting_error_tracking_api_url') + end + + it 'expects display token and reset token to be available' do + expect(rendered).to have_content(app_settings.error_tracking_access_token) + expect(rendered).to have_button('Reset error tracking access token') + end + end + + context 'with error tracking feature flag disabled' do + it 'expects error tracking settings to not be avaiable' do + stub_feature_flags(gitlab_error_tracking: false) + + render + + expect(rendered).not_to have_field('application_setting_error_tracking_api_url') + end + end + end end diff --git a/spec/views/dashboard/projects/_blank_state_welcome.html.haml_spec.rb b/spec/views/dashboard/projects/_blank_state_welcome.html.haml_spec.rb new file mode 100644 index 00000000000..edec46ad0a3 --- /dev/null +++ b/spec/views/dashboard/projects/_blank_state_welcome.html.haml_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'dashboard/projects/_blank_state_welcome.html.haml' do + let_it_be(:user) { create(:user) } + + before do + allow(view).to receive(:current_user).and_return(user) + end + + it 'has a doc_url' do + render + + expect(rendered).to have_link(href: Gitlab::Saas.doc_url) + end +end diff --git a/spec/views/devise/sessions/new.html.haml_spec.rb b/spec/views/devise/sessions/new.html.haml_spec.rb index e8232a2c067..b3cd1493149 100644 --- a/spec/views/devise/sessions/new.html.haml_spec.rb +++ b/spec/views/devise/sessions/new.html.haml_spec.rb @@ -63,6 +63,36 @@ RSpec.describe 'devise/sessions/new' do end end + describe 'Google Tag Manager' do + let!(:gtm_id) { 'GTM-WWKMTWS'} + + subject { rendered } + + before do + stub_devise + disable_captcha + stub_config(extra: { google_tag_manager_id: gtm_id, google_tag_manager_nonce_id: gtm_id }) + end + + describe 'when Google Tag Manager is enabled' do + before do + enable_gtm + render + end + + it { is_expected.to match /www.googletagmanager.com/ } + end + + describe 'when Google Tag Manager is disabled' do + before do + disable_gtm + render + end + + it { is_expected.not_to match /www.googletagmanager.com/ } + end + end + def disable_other_signin_methods allow(view).to receive(:password_authentication_enabled_for_web?).and_return(false) allow(view).to receive(:omniauth_enabled?).and_return(false) @@ -94,4 +124,12 @@ RSpec.describe 'devise/sessions/new' do allow(view).to receive(:captcha_enabled?).and_return(false) allow(view).to receive(:captcha_on_login_required?).and_return(false) end + + def disable_gtm + allow(view).to receive(:google_tag_manager_enabled?).and_return(false) + end + + def enable_gtm + allow(view).to receive(:google_tag_manager_enabled?).and_return(true) + end end diff --git a/spec/views/errors/omniauth_error.html.haml_spec.rb b/spec/views/errors/omniauth_error.html.haml_spec.rb new file mode 100644 index 00000000000..e99cb536bd8 --- /dev/null +++ b/spec/views/errors/omniauth_error.html.haml_spec.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'errors/omniauth_error' do + let(:provider) { FFaker::Product.brand } + let(:error) { FFaker::Lorem.sentence } + + before do + assign(:provider, provider) + assign(:error, error) + end + + it 'renders template' do + render + + expect(rendered).to have_content(provider) + expect(rendered).to have_content(_('Sign-in failed because %{error}.') % { error: error }) + expect(rendered).to have_link('Sign in') + expect(rendered).to have_content(_('If none of the options work, try contacting a GitLab administrator.')) + end +end diff --git a/spec/views/groups/edit.html.haml_spec.rb b/spec/views/groups/edit.html.haml_spec.rb index eaa909a5da0..ddcfea0ab10 100644 --- a/spec/views/groups/edit.html.haml_spec.rb +++ b/spec/views/groups/edit.html.haml_spec.rb @@ -24,7 +24,7 @@ RSpec.describe 'groups/edit.html.haml' do render - expect(rendered).to have_content("Prevent sharing a project within #{test_group.name} with other groups") + expect(rendered).to have_content("Projects in #{test_group.name} cannot be shared with other groups") expect(rendered).to have_content('help text here') expect(rendered).to have_field('group_share_with_group_lock', **checkbox_options) end diff --git a/spec/views/groups/group_members/index.html.haml_spec.rb b/spec/views/groups/group_members/index.html.haml_spec.rb index 40d4c9d33c9..2d7d50555d6 100644 --- a/spec/views/groups/group_members/index.html.haml_spec.rb +++ b/spec/views/groups/group_members/index.html.haml_spec.rb @@ -37,4 +37,16 @@ RSpec.describe 'groups/group_members/index', :aggregate_failures do expect(rendered).not_to have_content('You can invite a new member') end end + + context 'when @banned is nil' do + before do + assign(:banned, nil) + end + + it 'calls group_members_app_data with { banned: [] }' do + expect(view).to receive(:group_members_app_data).with(group, a_hash_including(banned: [])) + + render + end + end end diff --git a/spec/views/layouts/_flash.html.haml_spec.rb b/spec/views/layouts/_flash.html.haml_spec.rb index 82c06feb4fb..a4bed09368f 100644 --- a/spec/views/layouts/_flash.html.haml_spec.rb +++ b/spec/views/layouts/_flash.html.haml_spec.rb @@ -9,7 +9,11 @@ RSpec.describe 'layouts/_flash' do end describe 'closable flash messages' do - %w(alert notice success).each do |flash_type| + where(:flash_type) do + %w[alert notice success] + end + + with_them do let(:flash) { { flash_type => 'This is a closable flash message' } } it 'shows a close button' do @@ -19,10 +23,14 @@ RSpec.describe 'layouts/_flash' do end describe 'non closable flash messages' do - %w(error message toast warning).each do |flash_type| + where(:flash_type) do + %w[error message toast warning] + end + + with_them do let(:flash) { { flash_type => 'This is a non closable flash message' } } - it 'shows a close button' do + it 'does not show a close button' do expect(rendered).not_to include('js-close-icon') end end diff --git a/spec/views/layouts/application.html.haml_spec.rb b/spec/views/layouts/application.html.haml_spec.rb index 0f359219718..30c27078ad8 100644 --- a/spec/views/layouts/application.html.haml_spec.rb +++ b/spec/views/layouts/application.html.haml_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'layouts/application' do +RSpec.describe 'layouts/application', :themed_layout do let(:user) { create(:user) } before do diff --git a/spec/views/layouts/devise.html.haml_spec.rb b/spec/views/layouts/devise.html.haml_spec.rb new file mode 100644 index 00000000000..e69cf93cfb4 --- /dev/null +++ b/spec/views/layouts/devise.html.haml_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'layouts/devise' do + it_behaves_like 'a layout which reflects the application theme setting' +end diff --git a/spec/views/layouts/devise_empty.html.haml_spec.rb b/spec/views/layouts/devise_empty.html.haml_spec.rb new file mode 100644 index 00000000000..06d742e74dd --- /dev/null +++ b/spec/views/layouts/devise_empty.html.haml_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'layouts/devise_empty' do + it_behaves_like 'a layout which reflects the application theme setting' +end diff --git a/spec/views/layouts/fullscreen.html.haml_spec.rb b/spec/views/layouts/fullscreen.html.haml_spec.rb new file mode 100644 index 00000000000..0ae2c76ebcb --- /dev/null +++ b/spec/views/layouts/fullscreen.html.haml_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'layouts/fullscreen' do + let_it_be(:user) { create(:user) } + + before do + allow(view).to receive(:current_user_mode).and_return(Gitlab::Auth::CurrentUserMode.new(user)) + end + + it_behaves_like 'a layout which reflects the application theme setting' +end diff --git a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb index 3943355bffd..9ae3f814679 100644 --- a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb +++ b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb @@ -419,50 +419,6 @@ RSpec.describe 'layouts/nav/sidebar/_project' do end end - describe 'Logs' do - it 'has a link to the pod logs page' do - render - - expect(rendered).to have_link('Logs', href: project_logs_path(project)) - end - - describe 'when the user does not have access' do - let(:user) { nil } - - it 'does not have a link to the pod logs page' do - render - - expect(rendered).not_to have_link('Logs') - end - end - end - - describe 'Tracing' do - it 'has a link to the tracing page' do - render - - expect(rendered).to have_link('Tracing', href: project_tracing_path(project)) - end - - context 'without project.tracing_external_url' do - it 'has a link to the tracing page' do - render - - expect(rendered).to have_link('Tracing', href: project_tracing_path(project)) - end - end - - describe 'when the user does not have access' do - let(:user) { nil } - - it 'does not have a link to the tracing page' do - render - - expect(rendered).not_to have_text 'Tracing' - end - end - end - describe 'Error Tracking' do it 'has a link to the error tracking page' do render @@ -576,7 +532,7 @@ RSpec.describe 'layouts/nav/sidebar/_project' do describe 'Google Cloud' do it 'has a link to the google cloud page' do render - expect(rendered).to have_link('Google Cloud', href: project_google_cloud_index_path(project)) + expect(rendered).to have_link('Google Cloud', href: project_google_cloud_configuration_path(project)) end describe 'when the user does not have access' do @@ -953,8 +909,11 @@ RSpec.describe 'layouts/nav/sidebar/_project' do end describe 'Packages & Registries' do + let(:packages_enabled) { false } + before do stub_container_registry_config(enabled: registry_enabled) + stub_config(packages: { enabled: packages_enabled }) end context 'when registry is enabled' do @@ -976,6 +935,17 @@ RSpec.describe 'layouts/nav/sidebar/_project' do expect(rendered).not_to have_link('Packages & Registries', href: project_settings_packages_and_registries_path(project)) end end + + context 'when packages config is enabled' do + let(:registry_enabled) { false } + let(:packages_enabled) { true } + + it 'has a link to the Packages & Registries settings' do + render + + expect(rendered).to have_link('Packages & Registries', href: project_settings_packages_and_registries_path(project)) + end + end end describe 'Usage Quotas' do diff --git a/spec/views/layouts/signup_onboarding.html.haml_spec.rb b/spec/views/layouts/signup_onboarding.html.haml_spec.rb new file mode 100644 index 00000000000..8748c673616 --- /dev/null +++ b/spec/views/layouts/signup_onboarding.html.haml_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'layouts/signup_onboarding' do + it_behaves_like 'a layout which reflects the application theme setting' +end diff --git a/spec/views/layouts/simple_registration.html.haml_spec.rb b/spec/views/layouts/simple_registration.html.haml_spec.rb new file mode 100644 index 00000000000..98553a12ad8 --- /dev/null +++ b/spec/views/layouts/simple_registration.html.haml_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'layouts/simple_registration' do + it_behaves_like 'a layout which reflects the application theme setting' +end diff --git a/spec/views/layouts/terms.html.haml_spec.rb b/spec/views/layouts/terms.html.haml_spec.rb new file mode 100644 index 00000000000..520882449c5 --- /dev/null +++ b/spec/views/layouts/terms.html.haml_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'layouts/terms' do + let_it_be(:user) { create(:user) } + + before do + allow(view).to receive(:current_user_mode).and_return(Gitlab::Auth::CurrentUserMode.new(user)) + end + + it_behaves_like 'a layout which reflects the application theme setting' +end diff --git a/spec/views/projects/commits/_commit.html.haml_spec.rb b/spec/views/projects/commits/_commit.html.haml_spec.rb index da93871e0e4..2ca23d4cb2d 100644 --- a/spec/views/projects/commits/_commit.html.haml_spec.rb +++ b/spec/views/projects/commits/_commit.html.haml_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'projects/commits/_commit.html.haml' do - let(:template) { 'projects/commits/commit.html.haml' } + let(:template) { 'projects/commits/commit' } let(:project) { create(:project, :repository) } let(:commit) { project.repository.commit(ref) } diff --git a/spec/views/projects/issues/_issue.html.haml_spec.rb b/spec/views/projects/issues/_issue.html.haml_spec.rb new file mode 100644 index 00000000000..29bef557304 --- /dev/null +++ b/spec/views/projects/issues/_issue.html.haml_spec.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'projects/issues/_issue.html.haml' do + before do + assign(:project, issue.project) + assign(:issuable_meta_data, { + issue.id => Gitlab::IssuableMetadata::IssuableMeta.new(1, 1, 1, 1) + }) + + render partial: 'projects/issues/issue', locals: { issue: issue } + end + + describe 'timestamp', :freeze_time do + context 'when issue is open' do + let(:issue) { create(:issue, updated_at: 1.day.ago) } + + it 'shows last updated date' do + expect(rendered).to have_content("updated #{format_timestamp(1.day.ago)}") + end + end + + context 'when issue is closed' do + let(:issue) { create(:issue, :closed, closed_at: 2.days.ago, updated_at: 1.day.ago) } + + it 'shows closed date' do + expect(rendered).to have_content("closed #{format_timestamp(2.days.ago)}") + end + end + + context 'when issue is closed but closed_at is empty' do + let(:issue) { create(:issue, :closed, closed_at: nil, updated_at: 1.day.ago) } + + it 'shows last updated date' do + expect(rendered).to have_content("updated #{format_timestamp(1.day.ago)}") + end + end + + def format_timestamp(time) + l(time, format: "%b %d, %Y") + end + end +end diff --git a/spec/views/projects/jobs/show.html.haml_spec.rb b/spec/views/projects/jobs/show.html.haml_spec.rb index 8242d20a9e7..2ea3dc9f76a 100644 --- a/spec/views/projects/jobs/show.html.haml_spec.rb +++ b/spec/views/projects/jobs/show.html.haml_spec.rb @@ -27,7 +27,6 @@ RSpec.describe 'projects/jobs/show' do it 'shows job vue app' do expect(rendered).to have_css('#js-job-page') - expect(rendered).not_to have_css('#js-bridge-page') end context 'when job is running' do @@ -42,18 +41,4 @@ RSpec.describe 'projects/jobs/show' do end end end - - context 'when showing a bridge job' do - let(:bridge) { create(:ci_bridge, status: :pending) } - - before do - assign(:build, bridge) - render - end - - it 'shows bridge vue app' do - expect(rendered).to have_css('#js-bridge-page') - expect(rendered).not_to have_css('#js-job-page') - end - end end diff --git a/spec/views/projects/project_members/index.html.haml_spec.rb b/spec/views/projects/project_members/index.html.haml_spec.rb index 0446e1a7fc8..382d400b961 100644 --- a/spec/views/projects/project_members/index.html.haml_spec.rb +++ b/spec/views/projects/project_members/index.html.haml_spec.rb @@ -23,7 +23,8 @@ RSpec.describe 'projects/project_members/index', :aggregate_failures do expect(rendered).to have_content('Project members') expect(rendered).to have_content('You can invite a new member') - expect(rendered).to have_selector('.js-import-a-project-modal') + expect(rendered).to have_selector('.js-import-project-members-trigger') + expect(rendered).to have_selector('.js-import-project-members-modal') expect(rendered).to have_selector('.js-invite-group-trigger') expect(rendered).to have_selector('.js-invite-members-trigger') expect(rendered).not_to have_content('Members can be added by project') @@ -51,7 +52,8 @@ RSpec.describe 'projects/project_members/index', :aggregate_failures do expect(rendered).to have_content('Project members') expect(rendered).not_to have_content('You can invite a new member') - expect(rendered).not_to have_selector('.js-import-a-project-modal') + expect(rendered).not_to have_selector('.js-import-project-members-trigger') + expect(rendered).not_to have_selector('.js-import-project-members-modal') expect(rendered).not_to have_selector('.js-invite-group-trigger') expect(rendered).not_to have_selector('.js-invite-members-trigger') expect(rendered).to have_content('Members can be added by project') diff --git a/spec/views/projects/settings/operations/show.html.haml_spec.rb b/spec/views/projects/settings/operations/show.html.haml_spec.rb index 8853b34074a..664c8b7432e 100644 --- a/spec/views/projects/settings/operations/show.html.haml_spec.rb +++ b/spec/views/projects/settings/operations/show.html.haml_spec.rb @@ -10,10 +10,6 @@ RSpec.describe 'projects/settings/operations/show' do create(:project_error_tracking_setting, project: project) end - let_it_be_with_reload(:tracing_setting) do - create(:project_tracing_setting, project: project) - end - let_it_be(:prometheus_integration) { create(:prometheus_integration, project: project) } before_all do @@ -25,8 +21,6 @@ RSpec.describe 'projects/settings/operations/show' do allow(view).to receive(:error_tracking_setting) .and_return(error_tracking_setting) - allow(view).to receive(:tracing_setting) - .and_return(tracing_setting) allow(view).to receive(:prometheus_integration) .and_return(prometheus_integration) allow(view).to receive(:current_user).and_return(user) @@ -51,14 +45,4 @@ RSpec.describe 'projects/settings/operations/show' do end end end - - describe 'Operations > Tracing' do - context 'Settings page ' do - it 'renders the Tracing Settings page' do - render - - expect(rendered).to have_content _('Embed an image of your existing Jaeger server in GitLab.') - end - end - end end diff --git a/spec/views/projects/tracing/show.html.haml_spec.rb b/spec/views/projects/tracing/show.html.haml_spec.rb deleted file mode 100644 index 96dc6a18fc7..00000000000 --- a/spec/views/projects/tracing/show.html.haml_spec.rb +++ /dev/null @@ -1,59 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'projects/tracings/show' do - let_it_be_with_reload(:project) { create(:project) } - let_it_be(:error_tracking_setting) { create(:project_error_tracking_setting, project: project) } - - before do - assign(:project, project) - allow(view).to receive(:error_tracking_setting) - .and_return(error_tracking_setting) - end - - context 'with project.tracing_external_url' do - let_it_be(:tracing_url) { 'https://tracing.url' } - let_it_be(:tracing_setting) { create(:project_tracing_setting, project: project, external_url: tracing_url) } - - before do - allow(view).to receive(:can?).and_return(true) - allow(view).to receive(:tracing_setting).and_return(tracing_setting) - end - - it 'renders iframe' do - render - - expect(rendered).to match(/iframe/) - end - - context 'with malicious external_url' do - let(:malicious_tracing_url) { "https://replaceme.com/'><script>alert(document.cookie)</script>" } - let(:cleaned_url) { "https://replaceme.com/'>" } - - before do - tracing_setting.update_column(:external_url, malicious_tracing_url) - end - - it 'sanitizes external_url' do - render - - expect(tracing_setting.external_url).to eq(malicious_tracing_url) - expect(rendered).to have_xpath("//iframe[@src=\"#{cleaned_url}\"]") - end - end - end - - context 'without project.tracing_external_url' do - before do - allow(view).to receive(:can?).and_return(true) - end - - it 'renders empty state' do - render - - expect(rendered).to have_link('Add Jaeger URL') - expect(rendered).not_to match(/iframe/) - end - end -end diff --git a/spec/views/shared/deploy_tokens/_form.html.haml_spec.rb b/spec/views/shared/deploy_tokens/_form.html.haml_spec.rb index 5ac42952f78..74ad0ccb77a 100644 --- a/spec/views/shared/deploy_tokens/_form.html.haml_spec.rb +++ b/spec/views/shared/deploy_tokens/_form.html.haml_spec.rb @@ -10,7 +10,7 @@ RSpec.describe 'shared/deploy_tokens/_form.html.haml' do RSpec.shared_examples "display deploy token settings" do |role, shows_package_registry_permissions| before do - subject.add_user(user, role) + subject.add_member(user, role) allow(view).to receive(:current_user).and_return(user) stub_config(packages: { enabled: packages_enabled }) end |