Commit 1b59d0e7 authored by Shinya Maeda's avatar Shinya Maeda

Merge branch 'nfriend-remove-unnecessary-shared-example-blocks' into 'master'

Remove unnecessary shared_examples block

See merge request gitlab-org/gitlab!61528
parents 43d128f2 069cbbbb
...@@ -19,133 +19,129 @@ RSpec.describe 'User views releases', :js do ...@@ -19,133 +19,129 @@ RSpec.describe 'User views releases', :js do
project.add_guest(guest) project.add_guest(guest)
end end
shared_examples 'releases page' do context('when the user is a maintainer') do
context('when the user is a maintainer') do before do
before do sign_in(maintainer)
sign_in(maintainer)
visit project_releases_path(project) visit project_releases_path(project)
end
it 'sees the release' do
page.within("##{release_v1.tag}") do
expect(page).to have_content(release_v1.name)
expect(page).to have_content(release_v1.tag)
expect(page).not_to have_content('Upcoming Release')
end end
end
it 'sees the release' do context 'when there is a link as an asset' do
page.within("##{release_v1.tag}") do let!(:release_link) { create(:release_link, release: release_v1, url: url ) }
expect(page).to have_content(release_v1.name) let(:url) { "#{project.web_url}/-/jobs/1/artifacts/download" }
expect(page).to have_content(release_v1.tag) let(:direct_asset_link) { Gitlab::Routing.url_helpers.project_release_url(project, release_v1) << "/downloads#{release_link.filepath}" }
expect(page).not_to have_content('Upcoming Release')
it 'sees the link' do
page.within("##{release_v1.tag} .js-assets-list") do
expect(page).to have_link release_link.name, href: direct_asset_link
expect(page).not_to have_css('[data-testid="external-link-indicator"]')
end end
end end
context 'when there is a link as an asset' do context 'when there is a link redirect' do
let!(:release_link) { create(:release_link, release: release_v1, url: url ) } let!(:release_link) { create(:release_link, release: release_v1, name: 'linux-amd64 binaries', filepath: '/binaries/linux-amd64', url: url) }
let(:url) { "#{project.web_url}/-/jobs/1/artifacts/download" } let(:url) { "#{project.web_url}/-/jobs/1/artifacts/download" }
let(:direct_asset_link) { Gitlab::Routing.url_helpers.project_release_url(project, release_v1) << "/downloads#{release_link.filepath}" }
it 'sees the link' do it 'sees the link', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/329301' do
page.within("##{release_v1.tag} .js-assets-list") do page.within("##{release_v1.tag} .js-assets-list") do
expect(page).to have_link release_link.name, href: direct_asset_link expect(page).to have_link release_link.name, href: direct_asset_link
expect(page).not_to have_css('[data-testid="external-link-indicator"]') expect(page).not_to have_css('[data-testid="external-link-indicator"]')
end end
end end
end
context 'when there is a link redirect' do context 'when url points to external resource' do
let!(:release_link) { create(:release_link, release: release_v1, name: 'linux-amd64 binaries', filepath: '/binaries/linux-amd64', url: url) } let(:url) { 'http://google.com/download' }
let(:url) { "#{project.web_url}/-/jobs/1/artifacts/download" }
it 'sees the link', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/329301' do
page.within("##{release_v1.tag} .js-assets-list") do
expect(page).to have_link release_link.name, href: direct_asset_link
expect(page).not_to have_css('[data-testid="external-link-indicator"]')
end
end
end
context 'when url points to external resource' do
let(:url) { 'http://google.com/download' }
it 'sees that the link is external resource', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/329302' do it 'sees that the link is external resource', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/329302' do
page.within("##{release_v1.tag} .js-assets-list") do page.within("##{release_v1.tag} .js-assets-list") do
expect(page).to have_css('[data-testid="external-link-indicator"]') expect(page).to have_css('[data-testid="external-link-indicator"]')
end
end end
end end
end end
end
context 'with an upcoming release' do context 'with an upcoming release' do
it 'sees the upcoming tag' do it 'sees the upcoming tag' do
page.within("##{release_v3.tag}") do page.within("##{release_v3.tag}") do
expect(page).to have_content('Upcoming Release') expect(page).to have_content('Upcoming Release')
end
end end
end end
end
context 'with a tag containing a slash' do context 'with a tag containing a slash' do
it 'sees the release' do it 'sees the release' do
page.within("##{release_v2.tag.parameterize}") do page.within("##{release_v2.tag.parameterize}") do
expect(page).to have_content(release_v2.name) expect(page).to have_content(release_v2.name)
expect(page).to have_content(release_v2.tag) expect(page).to have_content(release_v2.tag)
end
end end
end end
end
context 'sorting' do context 'sorting' do
def sort_page(by:, direction:) def sort_page(by:, direction:)
within '[data-testid="releases-sort"]' do within '[data-testid="releases-sort"]' do
find('.dropdown-toggle').click find('.dropdown-toggle').click
click_button(by, class: 'dropdown-item') click_button(by, class: 'dropdown-item')
find('.sorting-direction-button').click if direction == :ascending find('.sorting-direction-button').click if direction == :ascending
end
end end
end
shared_examples 'releases sort order' do shared_examples 'releases sort order' do
it "sorts the releases #{description}" do it "sorts the releases #{description}" do
card_titles = page.all('.release-block .card-title', minimum: expected_releases.count) card_titles = page.all('.release-block .card-title', minimum: expected_releases.count)
card_titles.each_with_index do |title, index| card_titles.each_with_index do |title, index|
expect(title).to have_content(expected_releases[index].name) expect(title).to have_content(expected_releases[index].name)
end
end end
end end
end
context "when the page is sorted by the default sort order" do context "when the page is sorted by the default sort order" do
let(:expected_releases) { [release_v3, release_v2, release_v1] } let(:expected_releases) { [release_v3, release_v2, release_v1] }
it_behaves_like 'releases sort order' it_behaves_like 'releases sort order'
end end
context "when the page is sorted by created_at ascending " do context "when the page is sorted by created_at ascending " do
let(:expected_releases) { [release_v2, release_v1, release_v3] } let(:expected_releases) { [release_v2, release_v1, release_v3] }
before do before do
sort_page by: 'Created date', direction: :ascending sort_page by: 'Created date', direction: :ascending
end
it_behaves_like 'releases sort order'
end end
it_behaves_like 'releases sort order'
end end
end end
end
context('when the user is a guest') do context('when the user is a guest') do
before do before do
sign_in(guest) sign_in(guest)
end end
it 'renders release info except for Git-related data' do it 'renders release info except for Git-related data' do
visit project_releases_path(project) visit project_releases_path(project)
within('.release-block', match: :first) do within('.release-block', match: :first) do
expect(page).to have_content(release_v3.description) expect(page).to have_content(release_v3.description)
# The following properties (sometimes) include Git info, # The following properties (sometimes) include Git info,
# so they are not rendered for Guest users # so they are not rendered for Guest users
expect(page).not_to have_content(release_v3.name) expect(page).not_to have_content(release_v3.name)
expect(page).not_to have_content(release_v3.tag) expect(page).not_to have_content(release_v3.tag)
expect(page).not_to have_content(release_v3.commit.short_id) expect(page).not_to have_content(release_v3.commit.short_id)
end
end end
end end
end end
it_behaves_like 'releases page'
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment