summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/assets/javascripts/releases/components/release_block.vue2
-rw-r--r--locale/gitlab.pot3
-rw-r--r--spec/features/projects/releases/user_views_releases_spec.rb46
-rw-r--r--spec/javascripts/releases/components/release_block_spec.js12
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',
+ );
+ });
+ });
});