diff options
Diffstat (limited to 'spec/views')
17 files changed, 78 insertions, 214 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 7d28175d134..503e41eabc9 100644 --- a/spec/views/admin/application_settings/general.html.haml_spec.rb +++ b/spec/views/admin/application_settings/general.html.haml_spec.rb @@ -6,13 +6,16 @@ RSpec.describe 'admin/application_settings/general.html.haml' do let(:app_settings) { build(:application_setting) } let(:user) { create(:admin) } + before do + assign(:application_setting, app_settings) + allow(view).to receive(:current_user).and_return(user) + end + describe 'sourcegraph integration' do let(:sourcegraph_flag) { true } before do - assign(:application_setting, app_settings) allow(Gitlab::Sourcegraph).to receive(:feature_available?).and_return(sourcegraph_flag) - allow(view).to receive(:current_user).and_return(user) end context 'when sourcegraph feature is enabled' do @@ -35,11 +38,6 @@ RSpec.describe 'admin/application_settings/general.html.haml' do end describe 'prompt user about registration features' do - before do - assign(:application_setting, app_settings) - allow(view).to receive(:current_user).and_return(user) - end - context 'when service ping is enabled' do before do stub_application_setting(usage_ping_enabled: true) @@ -60,4 +58,14 @@ RSpec.describe 'admin/application_settings/general.html.haml' do it_behaves_like 'renders registration features prompt', :application_setting_disabled_repository_size_limit end end + + describe 'add license' do + before do + render + end + + it 'does not show the Add License section' do + expect(rendered).not_to have_css('#js-add-license-toggle') + end + end end diff --git a/spec/views/devise/shared/_signin_box.html.haml_spec.rb b/spec/views/devise/shared/_signin_box.html.haml_spec.rb index 8b1af1866dc..e2aa0bb9870 100644 --- a/spec/views/devise/shared/_signin_box.html.haml_spec.rb +++ b/spec/views/devise/shared/_signin_box.html.haml_spec.rb @@ -28,6 +28,20 @@ RSpec.describe 'devise/shared/_signin_box' do end end + describe 'Base form' do + before do + stub_devise + allow(view).to receive(:captcha_enabled?).and_return(false) + allow(view).to receive(:captcha_on_login_required?).and_return(false) + end + + it 'renders user_login label' do + render + + expect(rendered).to have_content(_('Username or email')) + end + end + def stub_devise allow(view).to receive(:devise_mapping).and_return(Devise.mappings[:user]) allow(view).to receive(:resource).and_return(spy) diff --git a/spec/views/devise/shared/_signup_box.html.haml_spec.rb b/spec/views/devise/shared/_signup_box.html.haml_spec.rb index 1f0cd213f7b..b0730e6fc54 100644 --- a/spec/views/devise/shared/_signup_box.html.haml_spec.rb +++ b/spec/views/devise/shared/_signup_box.html.haml_spec.rb @@ -3,28 +3,41 @@ require 'spec_helper' RSpec.describe 'devise/shared/_signup_box' do + let(:button_text) { '_button_text_' } + let(:terms_path) { '_terms_path_' } + + let(:translation_com) do + s_("SignUp|By clicking %{button_text}, I agree that I have read and accepted "\ + "the GitLab %{link_start}Terms of Use and Privacy Policy%{link_end}") + end + + let(:translation_non_com) do + s_("SignUp|By clicking %{button_text}, I agree that I have read and accepted "\ + "the %{link_start}Terms of Use and Privacy Policy%{link_end}") + end + before do stub_devise allow(view).to receive(:show_omniauth_providers).and_return(false) allow(view).to receive(:url).and_return('_url_') - allow(view).to receive(:terms_path).and_return('_terms_path_') - allow(view).to receive(:button_text).and_return('_button_text_') + allow(view).to receive(:terms_path).and_return(terms_path) + allow(view).to receive(:button_text).and_return(button_text) allow(view).to receive(:signup_username_data_attributes).and_return({}) stub_template 'devise/shared/_error_messages.html.haml' => '' end + def text(translation) + format(translation, + button_text: button_text, + link_start: "<a href='#{terms_path}' target='_blank' rel='noreferrer noopener'>", + link_end: '</a>') + end + context 'when terms are enforced' do before do allow(Gitlab::CurrentSettings.current_application_settings).to receive(:enforce_terms?).and_return(true) end - it 'shows expected text with placeholders' do - render - - expect(rendered).to have_content('By clicking _button_text_') - expect(rendered).to have_link('Terms of Use and Privacy Policy') - end - context 'when on .com' do before do allow(Gitlab).to receive(:com?).and_return(true) @@ -33,7 +46,7 @@ RSpec.describe 'devise/shared/_signup_box' do it 'shows expected GitLab text' do render - expect(rendered).to have_content('I have read and accepted the GitLab Terms') + expect(rendered).to include(text(translation_com)) end end @@ -45,7 +58,7 @@ RSpec.describe 'devise/shared/_signup_box' do it 'shows expected text without GitLab' do render - expect(rendered).to have_content('I have read and accepted the Terms') + expect(rendered).to include(text(translation_non_com)) end end end @@ -59,7 +72,7 @@ RSpec.describe 'devise/shared/_signup_box' do it 'shows expected text with placeholders' do render - expect(rendered).not_to have_content('By clicking') + expect(rendered).not_to include(text(translation_com)) end end diff --git a/spec/views/groups/runners/_group_runners.html.haml_spec.rb b/spec/views/groups/runners/_group_runners.html.haml_spec.rb deleted file mode 100644 index 3a8686ab046..00000000000 --- a/spec/views/groups/runners/_group_runners.html.haml_spec.rb +++ /dev/null @@ -1,42 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'groups/runners/group_runners.html.haml' do - describe 'render' do - let_it_be(:user) { create(:user) } - let_it_be(:group) { create(:group) } - - before do - @group = group - allow(view).to receive(:current_user).and_return(user) - allow(view).to receive(:reset_registration_token_group_settings_ci_cd_path).and_return('banana_url') - end - - context 'when group runner registration is allowed' do - before do - allow(view).to receive(:can?).with(user, :register_group_runners, group).and_return(true) - end - - it 'enables the Remove group button for a group' do - render 'groups/runners/group_runners', group: group - - expect(rendered).to have_selector '#js-install-runner' - expect(rendered).not_to have_content 'Please contact an admin to register runners.' - end - end - - context 'when group runner registration is not allowed' do - before do - allow(view).to receive(:can?).with(user, :register_group_runners, group).and_return(false) - end - - it 'does not enable the the Remove group button for a group' do - render 'groups/runners/group_runners', group: group - - expect(rendered).to have_content 'Please contact an admin to register runners.' - expect(rendered).not_to have_selector '#js-install-runner' - end - end - end -end diff --git a/spec/views/groups/runners/_sort_dropdown.html.haml_spec.rb b/spec/views/groups/runners/_sort_dropdown.html.haml_spec.rb deleted file mode 100644 index 5438fea85ee..00000000000 --- a/spec/views/groups/runners/_sort_dropdown.html.haml_spec.rb +++ /dev/null @@ -1,26 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'groups/runners/sort_dropdown.html.haml' do - describe 'render' do - describe 'when a sort option is not selected' do - it 'renders a default sort option' do - render 'groups/runners/sort_dropdown' - - expect(rendered).to have_content _('Created date') - end - end - - describe 'when a sort option is selected' do - before do - assign(:sort, 'contacted_asc') - render 'groups/runners/sort_dropdown' - end - - it 'renders the selected sort option' do - expect(rendered).to have_content _('Last Contact') - end - end - end -end diff --git a/spec/views/help/instance_configuration.html.haml_spec.rb b/spec/views/help/instance_configuration.html.haml_spec.rb index c4542046a9d..fbf84a5d272 100644 --- a/spec/views/help/instance_configuration.html.haml_spec.rb +++ b/spec/views/help/instance_configuration.html.haml_spec.rb @@ -21,6 +21,7 @@ RSpec.describe 'help/instance_configuration' do expect(rendered).to have_link(nil, href: '#size-limits') expect(rendered).to have_link(nil, href: '#package-registry') expect(rendered).to have_link(nil, href: '#rate-limits') + expect(rendered).to have_link(nil, href: '#ci-cd-limits') end it 'has several sections' do @@ -31,6 +32,7 @@ RSpec.describe 'help/instance_configuration' do expect(rendered).to have_css('h2#size-limits') expect(rendered).to have_css('h2#package-registry') expect(rendered).to have_css('h2#rate-limits') + expect(rendered).to have_css('h2#ci-cd-limits') end end end diff --git a/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb index 8c9d1b32671..428e9cc8490 100644 --- a/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb +++ b/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb @@ -101,7 +101,7 @@ RSpec.describe 'layouts/nav/sidebar/_group' do end end - describe 'Kubernetes menu' do + describe 'Kubernetes menu', :request_store do it 'has a link to the group cluster list path' do render 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 22e925e22ae..3943355bffd 100644 --- a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb +++ b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb @@ -537,24 +537,6 @@ RSpec.describe 'layouts/nav/sidebar/_project' do end describe 'Infrastructure' do - describe 'Serverless platform' do - it 'has a link to the serverless page' do - render - - expect(rendered).to have_link('Serverless platform', href: project_serverless_functions_path(project)) - end - - describe 'when the user does not have access' do - let(:user) { nil } - - it 'does not have a link to the serverless page' do - render - - expect(rendered).not_to have_link('Serverless platform') - end - end - end - describe 'Terraform' do it 'has a link to the terraform page' do render diff --git a/spec/views/profiles/keys/_form.html.haml_spec.rb b/spec/views/profiles/keys/_form.html.haml_spec.rb index ba8394178d9..c807512a11a 100644 --- a/spec/views/profiles/keys/_form.html.haml_spec.rb +++ b/spec/views/profiles/keys/_form.html.haml_spec.rb @@ -15,8 +15,6 @@ RSpec.describe 'profiles/keys/_form.html.haml' do context 'when the form partial is used' do before do - allow(view).to receive(:ssh_key_expires_field_description).and_return('Key can still be used after expiration.') - render end @@ -37,7 +35,7 @@ RSpec.describe 'profiles/keys/_form.html.haml' do it 'has the expires at field', :aggregate_failures do expect(rendered).to have_field('Expiration date', type: 'date') expect(page.find_field('Expiration date')['min']).to eq(l(1.day.from_now, format: "%Y-%m-%d")) - expect(rendered).to have_text('Key can still be used after expiration.') + expect(rendered).to have_text('Key becomes invalid on this date') end it 'has the validation warning', :aggregate_failures do diff --git a/spec/views/profiles/keys/_key.html.haml_spec.rb b/spec/views/profiles/keys/_key.html.haml_spec.rb index ed8026d2453..1040541332d 100644 --- a/spec/views/profiles/keys/_key.html.haml_spec.rb +++ b/spec/views/profiles/keys/_key.html.haml_spec.rb @@ -59,11 +59,7 @@ RSpec.describe 'profiles/keys/_key.html.haml' do end context 'when the key has expired' do - let_it_be(:key) do - create(:personal_key, - user: user, - expires_at: 2.days.ago) - end + let_it_be(:key) { create(:personal_key, :expired, user: user) } it 'renders "Expired:" as the expiration date label' do render @@ -91,8 +87,6 @@ RSpec.describe 'profiles/keys/_key.html.haml' do where(:valid, :expiry, :result) do false | 2.days.from_now | 'Key type is forbidden. Must be DSA, ECDSA, ED25519, ECDSA_SK, or ED25519_SK' - false | 2.days.ago | 'Key type is forbidden. Must be DSA, ECDSA, ED25519, ECDSA_SK, or ED25519_SK' - true | 2.days.ago | 'Key usable beyond expiration date.' true | 2.days.from_now | '' end diff --git a/spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb b/spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb deleted file mode 100644 index 5120998ded6..00000000000 --- a/spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb +++ /dev/null @@ -1,26 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'clusters/clusters/gcp/_form' do - let(:admin) { create(:admin) } - let(:environment) { create(:environment) } - let(:gcp_cluster) { create(:cluster, :provided_by_gcp) } - let(:clusterable) { ClusterablePresenter.fabricate(environment.project, current_user: admin) } - - before do - assign(:environment, environment) - assign(:gcp_cluster, gcp_cluster) - allow(view).to receive(:clusterable).and_return(clusterable) - allow(view).to receive(:url_for).and_return('#') - allow(view).to receive(:token_in_session).and_return('') - end - - context 'with all feature flags enabled' do - it 'has a cloud run checkbox' do - render - - expect(rendered).to have_selector("input[id='cluster_provider_gcp_attributes_cloud_run']") - end - end -end diff --git a/spec/views/projects/issues/show.html.haml_spec.rb b/spec/views/projects/issues/show.html.haml_spec.rb index b2d208f038a..3f1496a24ce 100644 --- a/spec/views/projects/issues/show.html.haml_spec.rb +++ b/spec/views/projects/issues/show.html.haml_spec.rb @@ -26,14 +26,14 @@ RSpec.describe 'projects/issues/show' do it 'shows "Closed (moved)" if an issue has been moved and closed' do render - expect(rendered).to have_selector('.status-box-issue-closed:not(.hidden)', text: 'Closed (moved)') + expect(rendered).to have_selector('.issuable-status-badge-closed:not(.hidden)', text: 'Closed (moved)') end it 'shows "Closed (moved)" if an issue has been moved and discussion is locked' do allow(issue).to receive(:discussion_locked).and_return(true) render - expect(rendered).to have_selector('.status-box-issue-closed:not(.hidden)', text: 'Closed (moved)') + expect(rendered).to have_selector('.issuable-status-badge-closed:not(.hidden)', text: 'Closed (moved)') end it 'links "moved" to the new issue the original issue was moved to' do @@ -47,7 +47,7 @@ RSpec.describe 'projects/issues/show' do render - expect(rendered).not_to have_selector('.status-box-issue-closed:not(.hidden)', text: 'Closed (moved)') + expect(rendered).not_to have_selector('.issuable-status-badge-closed:not(.hidden)', text: 'Closed (moved)') end end @@ -75,7 +75,7 @@ RSpec.describe 'projects/issues/show' do it 'shows "Closed (duplicated)" if an issue has been duplicated' do render - expect(rendered).to have_selector('.status-box-issue-closed:not(.hidden)', text: 'Closed (duplicated)') + expect(rendered).to have_selector('.issuable-status-badge-closed:not(.hidden)', text: 'Closed (duplicated)') end it 'links "duplicated" to the new issue the original issue was duplicated to' do @@ -97,14 +97,14 @@ RSpec.describe 'projects/issues/show' do it 'shows "Closed" if an issue has not been moved or duplicated' do render - expect(rendered).to have_selector('.status-box-issue-closed:not(.hidden)', text: 'Closed') + expect(rendered).to have_selector('.issuable-status-badge-closed:not(.hidden)', text: 'Closed') end it 'shows "Closed" if discussion is locked' do allow(issue).to receive(:discussion_locked).and_return(true) render - expect(rendered).to have_selector('.status-box-issue-closed:not(.hidden)', text: 'Closed') + expect(rendered).to have_selector('.issuable-status-badge-closed:not(.hidden)', text: 'Closed') end end @@ -117,14 +117,14 @@ RSpec.describe 'projects/issues/show' do it 'shows "Open" if an issue has been moved' do render - expect(rendered).to have_selector('.status-box-open:not(.hidden)', text: 'Open') + expect(rendered).to have_selector('.issuable-status-badge-open:not(.hidden)', text: 'Open') end it 'shows "Open" if discussion is locked' do allow(issue).to receive(:discussion_locked).and_return(true) render - expect(rendered).to have_selector('.status-box-open:not(.hidden)', text: 'Open') + expect(rendered).to have_selector('.issuable-status-badge-open:not(.hidden)', text: 'Open') end end diff --git a/spec/views/projects/merge_requests/show.html.haml_spec.rb b/spec/views/projects/merge_requests/show.html.haml_spec.rb index 6ffd0936003..86a4b25f746 100644 --- a/spec/views/projects/merge_requests/show.html.haml_spec.rb +++ b/spec/views/projects/merge_requests/show.html.haml_spec.rb @@ -16,7 +16,6 @@ RSpec.describe 'projects/merge_requests/show.html.haml', :aggregate_failures do render expect(rendered).to have_css('a', visible: true, text: 'Mark as draft') - expect(rendered).to have_css('a', visible: false, text: 'Reopen') expect(rendered).to have_css('a', visible: true, text: 'Close') end end @@ -31,7 +30,6 @@ RSpec.describe 'projects/merge_requests/show.html.haml', :aggregate_failures do expect(rendered).not_to have_css('a', visible: true, text: 'Mark as draft') expect(rendered).to have_css('a', visible: true, text: 'Reopen') - expect(rendered).to have_css('a', visible: false, text: 'Close') end context 'when source project does not exist' do @@ -40,8 +38,7 @@ RSpec.describe 'projects/merge_requests/show.html.haml', :aggregate_failures do render - expect(rendered).to have_css('a', visible: false, text: 'Reopen') - expect(rendered).to have_css('a', visible: false, text: 'Close') + expect(rendered).not_to have_css('a', visible: false, text: 'Reopen') 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 7186a5f1766..0446e1a7fc8 100644 --- a/spec/views/projects/project_members/index.html.haml_spec.rb +++ b/spec/views/projects/project_members/index.html.haml_spec.rb @@ -4,8 +4,7 @@ require 'spec_helper' RSpec.describe 'projects/project_members/index', :aggregate_failures do let_it_be(:user) { create(:user) } - let_it_be(:source) { create(:project, :empty_repo) } - let_it_be(:project) { ProjectPresenter.new(source, current_user: user) } + let_it_be(:project) { create(:project, :empty_repo, :with_namespace_settings).present(current_user: user) } before do allow(view).to receive(:project_members_app_data_json).and_return({}) 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 c0ec86a41a7..8853b34074a 100644 --- a/spec/views/projects/settings/operations/show.html.haml_spec.rb +++ b/spec/views/projects/settings/operations/show.html.haml_spec.rb @@ -52,30 +52,6 @@ RSpec.describe 'projects/settings/operations/show' do end end - describe 'Operations > Prometheus' do - context 'when settings_operations_prometheus_service flag is enabled' do - it 'renders the Operations Settings page' do - render - - expect(rendered).to have_content _('Prometheus') - expect(rendered).to have_content _('Link Prometheus monitoring to GitLab.') - expect(rendered).to have_content _('To use a Prometheus installed on a cluster, deactivate the manual configuration.') - end - end - - context 'when settings_operations_prometheus_service is disabled' do - before do - stub_feature_flags(settings_operations_prometheus_service: false) - end - - it 'renders the Operations Settings page' do - render - - expect(rendered).not_to have_content _('Auto configuration settings are used unless you override their values here.') - end - end - end - describe 'Operations > Tracing' do context 'Settings page ' do it 'renders the Tracing Settings page' do diff --git a/spec/views/shared/access_tokens/_table.html.haml_spec.rb b/spec/views/shared/access_tokens/_table.html.haml_spec.rb index fca2fc3183c..74de9e12d04 100644 --- a/spec/views/shared/access_tokens/_table.html.haml_spec.rb +++ b/spec/views/shared/access_tokens/_table.html.haml_spec.rb @@ -6,7 +6,6 @@ RSpec.describe 'shared/access_tokens/_table.html.haml' do let(:type) { 'token' } let(:type_plural) { 'tokens' } let(:empty_message) { nil } - let(:token_expiry_enforced?) { false } let(:impersonation) { false } let_it_be(:user) { create(:user) } @@ -14,12 +13,6 @@ RSpec.describe 'shared/access_tokens/_table.html.haml' do let_it_be(:resource) { false } before do - stub_licensed_features(enforce_personal_access_token_expiration: true) - allow(Gitlab::CurrentSettings).to receive(:enforce_pat_expiration?).and_return(false) - - allow(view).to receive(:personal_access_token_expiration_enforced?).and_return(token_expiry_enforced?) - allow(view).to receive(:show_profile_token_expiry_notification?).and_return(true) - if resource resource.add_maintainer(user) end @@ -51,22 +44,6 @@ RSpec.describe 'shared/access_tokens/_table.html.haml' do expect(rendered).not_to have_content 'To see all the user\'s personal access tokens you must impersonate them first.' expect(rendered).not_to have_selector 'th', text: 'Role' end - - context 'if token expiration is enforced' do - let(:token_expiry_enforced?) { true } - - it 'does not show the subtext' do - expect(rendered).not_to have_content 'Personal access tokens are not revoked upon expiration.' - end - end - - context 'if token expiration is not enforced' do - let(:token_expiry_enforced?) { false } - - it 'does show the subtext' do - expect(rendered).to have_content 'Personal access tokens are not revoked upon expiration.' - end - end end context 'if impersonation' do @@ -124,16 +101,16 @@ RSpec.describe 'shared/access_tokens/_table.html.haml' do context 'with tokens' do let_it_be(:tokens) do [ - create(:personal_access_token, user: user, name: 'Access token', last_used_at: 1.day.ago, expires_at: nil), - create(:personal_access_token, user: user, expires_at: 5.days.ago), - create(:personal_access_token, user: user, expires_at: Time.now), - create(:personal_access_token, user: user, expires_at: 5.days.from_now, scopes: [:read_api, :read_user]) + create(:personal_access_token, user: user, name: 'Access token', last_used_at: 4.days.from_now, expires_at: nil, scopes: [:read_api, :read_user]), + create(:personal_access_token, user: user, expires_at: 1.day.from_now, scopes: [:read_api, :read_user]) ] end + let_it_be(:expired_token) { build(:personal_access_token, name: "Expired token", expires_at: 2.days.ago).tap { |t| t.save!(validate: false) } } + it 'has the correct content', :aggregate_failures do # Heading content - expect(rendered).to have_content 'Active tokens (4)' + expect(rendered).to have_content 'Active tokens (2)' # Table headers expect(rendered).to have_selector 'th', text: 'Token name' @@ -144,17 +121,15 @@ RSpec.describe 'shared/access_tokens/_table.html.haml' do # Table contents expect(rendered).to have_content 'Access token' + expect(rendered).not_to have_content 'Expired token' expect(rendered).to have_content 'read_api, read_user' expect(rendered).to have_content 'no scopes selected' expect(rendered).to have_content Time.now.to_date.to_s(:medium) - expect(rendered).to have_content l(1.day.ago, format: "%b %d, %Y") - - # Expiry - expect(rendered).to have_content 'Expired', count: 2 + expect(rendered).to have_content l(4.days.from_now, format: "%b %d, %Y") # Revoke buttons expect(rendered).to have_link 'Revoke', href: 'path/', class: 'btn-danger-secondary', count: 1 - expect(rendered).to have_link 'Revoke', href: 'path/', count: 4 + expect(rendered).to have_link 'Revoke', href: 'path/', count: 2 end context 'without the last used time' do diff --git a/spec/views/shared/notes/_form.html.haml_spec.rb b/spec/views/shared/notes/_form.html.haml_spec.rb index b7bad4c5d78..ccf1e08b7e7 100644 --- a/spec/views/shared/notes/_form.html.haml_spec.rb +++ b/spec/views/shared/notes/_form.html.haml_spec.rb @@ -23,7 +23,7 @@ RSpec.describe 'shared/notes/_form' do let(:note) { build(:"note_on_#{noteable}", project: project) } it 'says that markdown and quick actions are supported' do - expect(rendered).to have_content('Markdown and quick actions are supported') + expect(rendered).to have_content('Supports Markdown. For quick actions, type /.') end end end |