diff options
-rw-r--r-- | app/assets/javascripts/releases/components/release_block.vue | 2 | ||||
-rw-r--r-- | locale/gitlab.pot | 3 | ||||
-rw-r--r-- | spec/features/projects/releases/user_views_releases_spec.rb | 46 | ||||
-rw-r--r-- | spec/javascripts/releases/components/release_block_spec.js | 12 |
4 files changed, 62 insertions, 1 deletions
diff --git a/app/assets/javascripts/releases/components/release_block.vue b/app/assets/javascripts/releases/components/release_block.vue index 1d47133e898..7ed1b407ddd 100644 --- a/app/assets/javascripts/releases/components/release_block.vue +++ b/app/assets/javascripts/releases/components/release_block.vue @@ -98,7 +98,7 @@ export default { <li v-for="link in assets.links" :key="link.name" class="append-bottom-8"> <gl-link v-gl-tooltip.bottom :title="__('Download asset')" :href="link.url"> <icon name="package" class="align-middle append-right-4 align-text-bottom" /> - {{ link.name }} + {{ link.name }} <span v-if="link.external"> {{ __('(external source)') }}</span> </gl-link> </li> </ul> diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 7db75b5cfef..c4bd2636fb1 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -185,6 +185,9 @@ msgstr "" msgid "%{user_name} profile page" msgstr "" +msgid "(external source)" +msgstr "" + msgid "+ %{count} more" msgstr "" diff --git a/spec/features/projects/releases/user_views_releases_spec.rb b/spec/features/projects/releases/user_views_releases_spec.rb new file mode 100644 index 00000000000..317ffb6a2ff --- /dev/null +++ b/spec/features/projects/releases/user_views_releases_spec.rb @@ -0,0 +1,46 @@ +require 'spec_helper' + +describe 'User views releases', :js do + let!(:project) { create(:project, :repository) } + let!(:release) { create(:release, project: project ) } + let!(:user) { create(:user) } + + before do + project.add_maintainer(user) + + gitlab_sign_in(user) + end + + it 'sees the release' do + visit project_releases_path(project) + + expect(page).to have_content(release.name) + expect(page).to have_content(release.tag) + end + + context 'when there is a link as an asset' do + let!(:release_link) { create(:release_link, release: release, url: url ) } + let(:url) { "#{project.web_url}/-/jobs/1/artifacts/download" } + + it 'sees the link' do + visit project_releases_path(project) + + page.within('.js-assets-list') do + expect(page).to have_link release_link.name, href: release_link.url + expect(page).not_to have_content('(external source)') + end + end + + context 'when url points to external resource' do + let(:url) { 'http://google.com/download' } + + it 'sees that the link is external resource' do + visit project_releases_path(project) + + page.within('.js-assets-list') do + expect(page).to have_content('(external source)') + end + end + end + end +end diff --git a/spec/javascripts/releases/components/release_block_spec.js b/spec/javascripts/releases/components/release_block_spec.js index 1268cdad08d..36b181f24ef 100644 --- a/spec/javascripts/releases/components/release_block_spec.js +++ b/spec/javascripts/releases/components/release_block_spec.js @@ -137,4 +137,16 @@ describe('Release block', () => { it('renders author avatar', () => { expect(vm.$el.querySelector('.user-avatar-link')).not.toBeNull(); }); + + describe('external label', () => { + it('renders external label when link is external', () => { + expect(vm.$el.querySelector('.js-assets-list li a').textContent).toContain('external source'); + }); + + it('does not render external label when link is not external', () => { + expect(vm.$el.querySelector('.js-assets-list li:nth-child(2) a').textContent).not.toContain( + 'external source', + ); + }); + }); }); |