summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG1
-rw-r--r--Gemfile.lock4
-rw-r--r--app/assets/javascripts/dropzone_input.js.coffee9
-rw-r--r--app/assets/stylesheets/generic/markdown_area.scss9
-rw-r--r--app/services/post_commit_service.rb67
-rw-r--r--app/views/events/_event.html.haml2
-rw-r--r--app/views/profiles/show.html.haml4
-rw-r--r--app/workers/post_receive.rb2
-rw-r--r--config/initializers/1_settings.rb10
-rw-r--r--features/profile/profile.feature2
-rw-r--r--features/steps/profile/profile.rb4
-rw-r--r--lib/gitlab/markdown/commit_range_reference_filter.rb3
-rw-r--r--lib/gitlab/markdown/commit_reference_filter.rb3
-rw-r--r--lib/gitlab/markdown/issue_reference_filter.rb3
-rw-r--r--lib/gitlab/markdown/label_reference_filter.rb3
-rw-r--r--lib/gitlab/markdown/merge_request_reference_filter.rb3
-rw-r--r--lib/gitlab/markdown/reference_filter.rb16
-rw-r--r--lib/gitlab/markdown/snippet_reference_filter.rb3
-rw-r--r--lib/gitlab/markdown/user_reference_filter.rb6
-rw-r--r--spec/lib/gitlab/markdown/commit_range_reference_filter_spec.rb8
-rw-r--r--spec/lib/gitlab/markdown/commit_reference_filter_spec.rb8
-rw-r--r--spec/lib/gitlab/markdown/issue_reference_filter_spec.rb8
-rw-r--r--spec/lib/gitlab/markdown/label_reference_filter_spec.rb8
-rw-r--r--spec/lib/gitlab/markdown/merge_request_reference_filter_spec.rb8
-rw-r--r--spec/lib/gitlab/markdown/snippet_reference_filter_spec.rb8
-rw-r--r--spec/lib/gitlab/markdown/user_reference_filter_spec.rb16
26 files changed, 201 insertions, 17 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 956df22c2fd..d228ef616d4 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -38,6 +38,7 @@ v 7.14.0 (unreleased)
- Tweak project page buttons.
- Disabled autocapitalize and autocorrect on login field (Daryl Chan)
- Mention group and project name in creation, update and deletion notices (Achilleas Pipinellis)
+ - Update gravatar link on profile page to link to configured gravatar host (Ben Bodenmiller)
- Remove redis-store TTL monkey patch
- Add support for CI skipped status
- Fetch code from forks to refs/merge-requests/:id/head when merge request created
diff --git a/Gemfile.lock b/Gemfile.lock
index e72b7fe4927..643c513161f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -154,7 +154,7 @@ GEM
doorkeeper (2.1.3)
railties (>= 3.2)
dotenv (0.9.0)
- dropzonejs-rails (0.4.14)
+ dropzonejs-rails (0.7.1)
rails (> 3.1)
email_spec (1.6.0)
launchy (~> 2.1)
@@ -373,7 +373,7 @@ GEM
mini_portile (0.6.2)
minitest (5.3.5)
mousetrap-rails (1.4.6)
- multi_json (1.11.1)
+ multi_json (1.11.2)
multi_xml (0.5.5)
multipart-post (1.2.0)
mysql2 (0.3.16)
diff --git a/app/assets/javascripts/dropzone_input.js.coffee b/app/assets/javascripts/dropzone_input.js.coffee
index a4f511301c1..a0dcaa8c27a 100644
--- a/app/assets/javascripts/dropzone_input.js.coffee
+++ b/app/assets/javascripts/dropzone_input.js.coffee
@@ -8,6 +8,7 @@ class @DropzoneInput
divAlert = "<div class=\"" + alertClass + "\"></div>"
iconPaperclip = "<i class=\"fa fa-paperclip div-dropzone-icon\"></i>"
iconSpinner = "<i class=\"fa fa-spinner fa-spin div-dropzone-icon\"></i>"
+ uploadProgress = $("<div class=\"div-dropzone-progress\"></div>")
btnAlert = "<button type=\"button\"" + alertAttr + ">&times;</button>"
project_uploads_path = window.project_uploads_path or null
markdown_preview_path = window.markdown_preview_path or null
@@ -28,6 +29,7 @@ class @DropzoneInput
form_dropzone.find(".div-dropzone-hover").append iconPaperclip
form_dropzone.append divSpinner
form_dropzone.find(".div-dropzone-spinner").append iconSpinner
+ form_dropzone.find(".div-dropzone-spinner").append uploadProgress
form_dropzone.find(".div-dropzone-spinner").css
"opacity": 0
"display": "none"
@@ -112,13 +114,18 @@ class @DropzoneInput
$(".div-dropzone-alert").append btnAlert + errorMessage
return
+ totaluploadprogress: (totalUploadProgress) ->
+ uploadProgress.text Math.round(totalUploadProgress) + "%"
+ return
+
sending: ->
form_dropzone.find(".div-dropzone-spinner").css
"opacity": 0.7
"display": "inherit"
return
- complete: ->
+ queuecomplete: ->
+ uploadProgress.text ""
$(".dz-preview").remove()
$(".markdown-area").trigger "input"
$(".div-dropzone-spinner").css
diff --git a/app/assets/stylesheets/generic/markdown_area.scss b/app/assets/stylesheets/generic/markdown_area.scss
index f94677d1925..a4fc82e90bf 100644
--- a/app/assets/stylesheets/generic/markdown_area.scss
+++ b/app/assets/stylesheets/generic/markdown_area.scss
@@ -40,6 +40,15 @@
font-size: inherit;
}
+ .div-dropzone-progress {
+ position: absolute;
+ top: 7px;
+ left: -40px;
+ width: 35px;
+ font-size: 13px;
+ text-align: right;
+ }
+
.dz-preview {
display: none;
}
diff --git a/app/services/post_commit_service.rb b/app/services/post_commit_service.rb
index 7d7e5fbc32e..8592c8d238b 100644
--- a/app/services/post_commit_service.rb
+++ b/app/services/post_commit_service.rb
@@ -1,8 +1,71 @@
class PostCommitService < BaseService
+ include Gitlab::Popen
+
+ attr_reader :changes, :repo_path
+
def execute(sha, branch)
commit = repository.commit(sha)
- full_ref = 'refs/heads/' + branch
+ full_ref = Gitlab::Git::BRANCH_REF_PREFIX + branch
old_sha = commit.parent_id || Gitlab::Git::BLANK_SHA
- GitPushService.new.execute(project, current_user, old_sha, sha, full_ref)
+ @changes = "#{old_sha} #{sha} #{full_ref}"
+ @repo_path = repository.path_to_repo
+
+ post_receive
+ end
+
+ private
+
+ def post_receive
+ hook = hook_file('post-receive', repo_path)
+ return true if hook.nil?
+ call_receive_hook(hook)
+ end
+
+ def call_receive_hook(hook)
+ # function will return true if succesful
+ exit_status = false
+
+ vars = {
+ 'GL_ID' => Gitlab::ShellEnv.gl_id(current_user),
+ 'PWD' => repo_path
+ }
+
+ options = {
+ chdir: repo_path
+ }
+
+ # we combine both stdout and stderr as we don't know what stream
+ # will be used by the custom hook
+ Open3.popen2e(vars, hook, options) do |stdin, stdout_stderr, wait_thr|
+ exit_status = true
+ stdin.sync = true
+
+ # in git, pre- and post- receive hooks may just exit without
+ # reading stdin. We catch the exception to avoid a broken pipe
+ # warning
+ begin
+ # inject all the changes as stdin to the hook
+ changes.lines do |line|
+ stdin.puts line
+ end
+ rescue Errno::EPIPE
+ end
+
+ # need to close stdin before reading stdout
+ stdin.close
+
+ # only output stdut_stderr if scripts doesn't return 0
+ unless wait_thr.value == 0
+ exit_status = false
+ end
+ end
+
+ exit_status
+ end
+
+ def hook_file(hook_type, repo_path)
+ hook_path = File.join(repo_path.strip, 'hooks')
+ hook_file = "#{hook_path}/#{hook_type}"
+ hook_file if File.exist?(hook_file)
end
end
diff --git a/app/views/events/_event.html.haml b/app/views/events/_event.html.haml
index 0377760a9b8..0faab4458e9 100644
--- a/app/views/events/_event.html.haml
+++ b/app/views/events/_event.html.haml
@@ -3,7 +3,7 @@
.event-item-timestamp
#{time_ago_with_tooltip(event.created_at)}
- = cache event, "v1" do
+ = cache [event, "v1"] do
= image_tag avatar_icon(event.author_email, 24), class: "avatar s24", alt:''
- if event.created_project?
= render "events/event/created_project", event: event
diff --git a/app/views/profiles/show.html.haml b/app/views/profiles/show.html.haml
index 37a3952635e..9fdeddfcc7a 100644
--- a/app/views/profiles/show.html.haml
+++ b/app/views/profiles/show.html.haml
@@ -82,12 +82,12 @@
You can change your avatar here
- if Gitlab.config.gravatar.enabled
%br
- or remove the current avatar to revert to #{link_to "gravatar.com", "http://gravatar.com"}
+ or remove the current avatar to revert to #{link_to Gitlab.config.gravatar.host, "http://" + Gitlab.config.gravatar.host}
- else
You can upload an avatar here
- if Gitlab.config.gravatar.enabled
%br
- or change it at #{link_to "gravatar.com", "http://gravatar.com"}
+ or change it at #{link_to Gitlab.config.gravatar.host, "http://" + Gitlab.config.gravatar.host}
%hr
%a.choose-btn.btn.btn-sm.js-choose-user-avatar-button
%i.fa.fa-paperclip
diff --git a/app/workers/post_receive.rb b/app/workers/post_receive.rb
index 33d8cc8861b..994b8e8ed38 100644
--- a/app/workers/post_receive.rb
+++ b/app/workers/post_receive.rb
@@ -45,7 +45,7 @@ class PostReceive
def utf8_encode_changes(changes)
changes = changes.dup
-
+
changes.force_encoding("UTF-8")
return changes if changes.valid_encoding?
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index bd76c918485..026c1a5792c 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -8,6 +8,15 @@ class Settings < Settingslogic
def gitlab_on_standard_port?
gitlab.port.to_i == (gitlab.https ? 443 : 80)
end
+
+ # get host without www, thanks to http://stackoverflow.com/a/6674363/1233435
+ def get_host_without_www(url)
+ url = URI.encode(url)
+ uri = URI.parse(url)
+ uri = URI.parse("http://#{url}") if uri.scheme.nil?
+ host = uri.host.downcase
+ host.start_with?('www.') ? host[4..-1] : host
+ end
private
@@ -147,6 +156,7 @@ Settings['gravatar'] ||= Settingslogic.new({})
Settings.gravatar['enabled'] = true if Settings.gravatar['enabled'].nil?
Settings.gravatar['plain_url'] ||= 'http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon'
Settings.gravatar['ssl_url'] ||= 'https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon'
+Settings.gravatar['host'] = Settings.get_host_without_www(Settings.gravatar['plain_url'])
#
# GitLab Shell
diff --git a/features/profile/profile.feature b/features/profile/profile.feature
index 7a1345f2b37..27c0bde364e 100644
--- a/features/profile/profile.feature
+++ b/features/profile/profile.feature
@@ -35,6 +35,7 @@ Feature: Profile
Then I change my avatar
And I should see new avatar
And I should see the "Remove avatar" button
+ And I should see the gravatar host link
Scenario: I remove my avatar
Given I visit profile page
@@ -42,6 +43,7 @@ Feature: Profile
When I remove my avatar
Then I should see my gravatar
And I should not see the "Remove avatar" button
+ And I should see the gravatar host link
Scenario: My password is expired
Given my password is expired
diff --git a/features/steps/profile/profile.rb b/features/steps/profile/profile.rb
index 2b6b8b167f6..8cf24705a5e 100644
--- a/features/steps/profile/profile.rb
+++ b/features/steps/profile/profile.rb
@@ -59,6 +59,10 @@ class Spinach::Features::Profile < Spinach::FeatureSteps
step 'I should not see the "Remove avatar" button' do
expect(page).not_to have_link("Remove avatar")
end
+
+ step 'I should see the gravatar host link' do
+ expect(page).to have_link("gravatar.com")
+ end
step 'I try change my password w/o old one' do
page.within '.update-password' do
diff --git a/lib/gitlab/markdown/commit_range_reference_filter.rb b/lib/gitlab/markdown/commit_range_reference_filter.rb
index 61591a9914b..a9f1ee9c161 100644
--- a/lib/gitlab/markdown/commit_range_reference_filter.rb
+++ b/lib/gitlab/markdown/commit_range_reference_filter.rb
@@ -57,10 +57,11 @@ module Gitlab
title = range.reference_title
klass = reference_class(:commit_range)
+ data = data_attribute(project.id)
project_ref += '@' if project_ref
- %(<a href="#{url}"
+ %(<a href="#{url}" #{data}
title="#{title}"
class="#{klass}">#{project_ref}#{range}</a>)
else
diff --git a/lib/gitlab/markdown/commit_reference_filter.rb b/lib/gitlab/markdown/commit_reference_filter.rb
index f6932e76e70..eacdf8a6d37 100644
--- a/lib/gitlab/markdown/commit_reference_filter.rb
+++ b/lib/gitlab/markdown/commit_reference_filter.rb
@@ -47,10 +47,11 @@ module Gitlab
title = escape_once(commit.link_title)
klass = reference_class(:commit)
+ data = data_attribute(project.id)
project_ref += '@' if project_ref
- %(<a href="#{url}"
+ %(<a href="#{url}" #{data}
title="#{title}"
class="#{klass}">#{project_ref}#{commit.short_id}</a>)
else
diff --git a/lib/gitlab/markdown/issue_reference_filter.rb b/lib/gitlab/markdown/issue_reference_filter.rb
index dea04761ead..ab6f6bc1cf7 100644
--- a/lib/gitlab/markdown/issue_reference_filter.rb
+++ b/lib/gitlab/markdown/issue_reference_filter.rb
@@ -49,8 +49,9 @@ module Gitlab
title = escape_once("Issue: #{issue.title}")
klass = reference_class(:issue)
+ data = data_attribute(project.id)
- %(<a href="#{url}"
+ %(<a href="#{url}" #{data}
title="#{title}"
class="#{klass}">#{match}</a>)
else
diff --git a/lib/gitlab/markdown/label_reference_filter.rb b/lib/gitlab/markdown/label_reference_filter.rb
index e022ca69c91..2186f36f854 100644
--- a/lib/gitlab/markdown/label_reference_filter.rb
+++ b/lib/gitlab/markdown/label_reference_filter.rb
@@ -43,8 +43,9 @@ module Gitlab
url = url_for_label(project, label)
klass = reference_class(:label)
+ data = data_attribute(project.id)
- %(<a href="#{url}"
+ %(<a href="#{url}" #{data}
class="#{klass}">#{render_colored_label(label)}</a>)
else
match
diff --git a/lib/gitlab/markdown/merge_request_reference_filter.rb b/lib/gitlab/markdown/merge_request_reference_filter.rb
index 80779819485..884f60f9d53 100644
--- a/lib/gitlab/markdown/merge_request_reference_filter.rb
+++ b/lib/gitlab/markdown/merge_request_reference_filter.rb
@@ -47,10 +47,11 @@ module Gitlab
title = escape_once("Merge Request: #{merge_request.title}")
klass = reference_class(:merge_request)
+ data = data_attribute(project.id)
url = url_for_merge_request(merge_request, project)
- %(<a href="#{url}"
+ %(<a href="#{url}" #{data}
title="#{title}"
class="#{klass}">#{match}</a>)
else
diff --git a/lib/gitlab/markdown/reference_filter.rb b/lib/gitlab/markdown/reference_filter.rb
index a84bacd3d4f..47ee1d99da3 100644
--- a/lib/gitlab/markdown/reference_filter.rb
+++ b/lib/gitlab/markdown/reference_filter.rb
@@ -21,6 +21,22 @@ module Gitlab
result[:references] = Hash.new { |hash, type| hash[type] = [] }
end
+ # Returns a data attribute String to attach to a reference link
+ #
+ # id - Object ID
+ # type - Object type (default: :project)
+ #
+ # Examples:
+ #
+ # data_attribute(1) # => "data-project-id=\"1\""
+ # data_attribute(2, :user) # => "data-user-id=\"2\""
+ # data_attribute(3, :group) # => "data-group-id=\"3\""
+ #
+ # Returns a String
+ def data_attribute(id, type = :project)
+ %Q(data-#{type}-id="#{id}")
+ end
+
def escape_once(html)
ERB::Util.html_escape_once(html)
end
diff --git a/lib/gitlab/markdown/snippet_reference_filter.rb b/lib/gitlab/markdown/snippet_reference_filter.rb
index 174ba58af6c..92979a356dc 100644
--- a/lib/gitlab/markdown/snippet_reference_filter.rb
+++ b/lib/gitlab/markdown/snippet_reference_filter.rb
@@ -47,10 +47,11 @@ module Gitlab
title = escape_once("Snippet: #{snippet.title}")
klass = reference_class(:snippet)
+ data = data_attribute(project.id)
url = url_for_snippet(snippet, project)
- %(<a href="#{url}"
+ %(<a href="#{url}" #{data}
title="#{title}"
class="#{klass}">#{match}</a>)
else
diff --git a/lib/gitlab/markdown/user_reference_filter.rb b/lib/gitlab/markdown/user_reference_filter.rb
index c9972957182..a4aec7a05d1 100644
--- a/lib/gitlab/markdown/user_reference_filter.rb
+++ b/lib/gitlab/markdown/user_reference_filter.rb
@@ -83,18 +83,20 @@ module Gitlab
push_result(:user, *namespace.users)
url = urls.group_url(group, only_path: context[:only_path])
+ data = data_attribute(namespace.id, :group)
text = Group.reference_prefix + group
- %(<a href="#{url}" class="#{link_class}">#{text}</a>)
+ %(<a href="#{url}" #{data} class="#{link_class}">#{text}</a>)
end
def link_to_user(user, namespace)
push_result(:user, namespace.owner)
url = urls.user_url(user, only_path: context[:only_path])
+ data = data_attribute(namespace.owner_id, :user)
text = User.reference_prefix + user
- %(<a href="#{url}" class="#{link_class}">#{text}</a>)
+ %(<a href="#{url}" #{data} class="#{link_class}">#{text}</a>)
end
def user_can_reference_group?(group)
diff --git a/spec/lib/gitlab/markdown/commit_range_reference_filter_spec.rb b/spec/lib/gitlab/markdown/commit_range_reference_filter_spec.rb
index e8391cc7aca..58155284486 100644
--- a/spec/lib/gitlab/markdown/commit_range_reference_filter_spec.rb
+++ b/spec/lib/gitlab/markdown/commit_range_reference_filter_spec.rb
@@ -80,6 +80,14 @@ module Gitlab::Markdown
expect(doc.css('a').first.attr('class')).to include 'custom'
end
+ it 'includes a data-project-id attribute' do
+ doc = filter("See #{reference}")
+ link = doc.css('a').first
+
+ expect(link).to have_attribute('data-project-id')
+ expect(link.attr('data-project-id')).to eq project.id.to_s
+ end
+
it 'supports an :only_path option' do
doc = filter("See #{reference}", only_path: true)
link = doc.css('a').first.attr('href')
diff --git a/spec/lib/gitlab/markdown/commit_reference_filter_spec.rb b/spec/lib/gitlab/markdown/commit_reference_filter_spec.rb
index a10d43c9a02..05a02de4669 100644
--- a/spec/lib/gitlab/markdown/commit_reference_filter_spec.rb
+++ b/spec/lib/gitlab/markdown/commit_reference_filter_spec.rb
@@ -76,6 +76,14 @@ module Gitlab::Markdown
expect(doc.css('a').first.attr('class')).to include 'custom'
end
+ it 'includes a data-project-id attribute' do
+ doc = filter("See #{reference}")
+ link = doc.css('a').first
+
+ expect(link).to have_attribute('data-project-id')
+ expect(link.attr('data-project-id')).to eq project.id.to_s
+ end
+
it 'supports an :only_path context' do
doc = filter("See #{reference}", only_path: true)
link = doc.css('a').first.attr('href')
diff --git a/spec/lib/gitlab/markdown/issue_reference_filter_spec.rb b/spec/lib/gitlab/markdown/issue_reference_filter_spec.rb
index fa43d33794d..35b1ba5f132 100644
--- a/spec/lib/gitlab/markdown/issue_reference_filter_spec.rb
+++ b/spec/lib/gitlab/markdown/issue_reference_filter_spec.rb
@@ -73,6 +73,14 @@ module Gitlab::Markdown
expect(doc.css('a').first.attr('class')).to include 'custom'
end
+ it 'includes a data-project-id attribute' do
+ doc = filter("Issue #{reference}")
+ link = doc.css('a').first
+
+ expect(link).to have_attribute('data-project-id')
+ expect(link.attr('data-project-id')).to eq project.id.to_s
+ end
+
it 'supports an :only_path context' do
doc = filter("Issue #{reference}", only_path: true)
link = doc.css('a').first.attr('href')
diff --git a/spec/lib/gitlab/markdown/label_reference_filter_spec.rb b/spec/lib/gitlab/markdown/label_reference_filter_spec.rb
index e9f8ed277a5..fabe0411e46 100644
--- a/spec/lib/gitlab/markdown/label_reference_filter_spec.rb
+++ b/spec/lib/gitlab/markdown/label_reference_filter_spec.rb
@@ -30,6 +30,14 @@ module Gitlab::Markdown
expect(doc.css('a').first.attr('class')).to include 'custom'
end
+ it 'includes a data-project-id attribute' do
+ doc = filter("Label #{reference}")
+ link = doc.css('a').first
+
+ expect(link).to have_attribute('data-project-id')
+ expect(link.attr('data-project-id')).to eq project.id.to_s
+ end
+
it 'supports an :only_path context' do
doc = filter("Label #{reference}", only_path: true)
link = doc.css('a').first.attr('href')
diff --git a/spec/lib/gitlab/markdown/merge_request_reference_filter_spec.rb b/spec/lib/gitlab/markdown/merge_request_reference_filter_spec.rb
index 5945302a2da..5cef52b1916 100644
--- a/spec/lib/gitlab/markdown/merge_request_reference_filter_spec.rb
+++ b/spec/lib/gitlab/markdown/merge_request_reference_filter_spec.rb
@@ -61,6 +61,14 @@ module Gitlab::Markdown
expect(doc.css('a').first.attr('class')).to include 'custom'
end
+ it 'includes a data-project-id attribute' do
+ doc = filter("Merge #{reference}")
+ link = doc.css('a').first
+
+ expect(link).to have_attribute('data-project-id')
+ expect(link.attr('data-project-id')).to eq project.id.to_s
+ end
+
it 'supports an :only_path context' do
doc = filter("Merge #{reference}", only_path: true)
link = doc.css('a').first.attr('href')
diff --git a/spec/lib/gitlab/markdown/snippet_reference_filter_spec.rb b/spec/lib/gitlab/markdown/snippet_reference_filter_spec.rb
index 38619a3c07f..678b171e99e 100644
--- a/spec/lib/gitlab/markdown/snippet_reference_filter_spec.rb
+++ b/spec/lib/gitlab/markdown/snippet_reference_filter_spec.rb
@@ -60,6 +60,14 @@ module Gitlab::Markdown
expect(doc.css('a').first.attr('class')).to include 'custom'
end
+ it 'includes a data-project-id attribute' do
+ doc = filter("Snippet #{reference}")
+ link = doc.css('a').first
+
+ expect(link).to have_attribute('data-project-id')
+ expect(link.attr('data-project-id')).to eq project.id.to_s
+ end
+
it 'supports an :only_path context' do
doc = filter("Snippet #{reference}", only_path: true)
link = doc.css('a').first.attr('href')
diff --git a/spec/lib/gitlab/markdown/user_reference_filter_spec.rb b/spec/lib/gitlab/markdown/user_reference_filter_spec.rb
index 9c55b4ff38f..a5405e14a73 100644
--- a/spec/lib/gitlab/markdown/user_reference_filter_spec.rb
+++ b/spec/lib/gitlab/markdown/user_reference_filter_spec.rb
@@ -64,6 +64,14 @@ module Gitlab::Markdown
expect(doc.css('a').length).to eq 1
end
+ it 'includes a data-user-id attribute' do
+ doc = filter("Hey #{reference}")
+ link = doc.css('a').first
+
+ expect(link).to have_attribute('data-user-id')
+ expect(link.attr('data-user-id')).to eq user.namespace.owner_id.to_s
+ end
+
it 'adds to the results hash' do
result = pipeline_result("Hey #{reference}")
expect(result[:references][:user]).to eq [user]
@@ -85,6 +93,14 @@ module Gitlab::Markdown
expect(doc.css('a').first.attr('href')).to eq urls.group_url(group)
end
+ it 'includes a data-group-id attribute' do
+ doc = filter("Hey #{reference}", current_user: user)
+ link = doc.css('a').first
+
+ expect(link).to have_attribute('data-group-id')
+ expect(link.attr('data-group-id')).to eq group.id.to_s
+ end
+
it 'adds to the results hash' do
result = pipeline_result("Hey #{reference}", current_user: user)
expect(result[:references][:user]).to eq group.users