Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Matyushentsev <amatyushentsev@gmail.com>2016-05-15 10:22:01 +0300
committerAlexander Matyushentsev <amatyushentsev@gmail.com>2016-06-13 19:41:34 +0300
commitaf33338bbf752ab5f4dba5b981644b399ae3563b (patch)
tree7a1f0b17d4ec7fa01dd4e358659590540cbf04d4
parentc928accd954e5812ccc7d2b0887028da554f2ef3 (diff)
Add more information into RSS fead for issues
-rw-r--r--CHANGELOG2
-rw-r--r--app/views/issues/_issue.atom.builder20
-rw-r--r--spec/features/atom/dashboard_issues_spec.rb35
3 files changed, 47 insertions, 10 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 7a6a14919da..80b19bbd04e 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -123,6 +123,8 @@ v 8.8.1
v 8.8.0
- Implement GFM references for milestones (Alejandro Rodríguez)
+v 8.8.0 (unreleased)
+ - Add more information into RSS fead for issues.
- Snippets tab under user profile. !4001 (Long Nguyen)
- Fix error when using link to uploads in global snippets
- Fix Error 500 when attempting to retrieve project license when HEAD points to non-existent ref
diff --git a/app/views/issues/_issue.atom.builder b/app/views/issues/_issue.atom.builder
index 68a2d19e58d..96831874144 100644
--- a/app/views/issues/_issue.atom.builder
+++ b/app/views/issues/_issue.atom.builder
@@ -5,10 +5,28 @@ xml.entry do
xml.updated issue.created_at.xmlschema
xml.media :thumbnail, width: "40", height: "40", url: image_url(avatar_icon(issue.author_email))
- xml.author do |author|
+ xml.author do
xml.name issue.author_name
xml.email issue.author_email
end
xml.summary issue.title
+ xml.description issue.description if issue.description
+ xml.milestone issue.milestone.title if issue.milestone
+ xml.due_date issue.due_date if issue.due_date
+
+ unless issue.labels.empty?
+ xml.labels do
+ issue.labels.each do |label|
+ xml.label label.name
+ end
+ end
+ end
+
+ if issue.assignee
+ xml.assignee do
+ xml.name issue.assignee.name
+ xml.email issue.assignee.email
+ end
+ end
end
diff --git a/spec/features/atom/dashboard_issues_spec.rb b/spec/features/atom/dashboard_issues_spec.rb
index b710cb3c72f..87b478adb8f 100644
--- a/spec/features/atom/dashboard_issues_spec.rb
+++ b/spec/features/atom/dashboard_issues_spec.rb
@@ -2,15 +2,18 @@ require 'spec_helper'
describe "Dashboard Issues Feed", feature: true do
describe "GET /issues" do
- let!(:user) { create(:user) }
- let!(:project1) { create(:project) }
- let!(:project2) { create(:project) }
- let!(:issue1) { create(:issue, author: user, assignee: user, project: project1) }
- let!(:issue2) { create(:issue, author: user, assignee: user, project: project2) }
+ let!(:user) { create(:user) }
+ let!(:project1) { create(:project) }
+ let!(:project2) { create(:project) }
+ let!(:milestone1) { create(:milestone, project: project1, title: 'v1') }
+ let!(:label1) { create(:label, project: project1, title: 'label1') }
+ let!(:issue1) { create(:issue, author: user, assignee: user, project: project1, milestone: milestone1) }
+ let!(:issue2) { create(:issue, author: user, assignee: user, project: project2, description: 'test desc') }
before do
project1.team << [user, :master]
project2.team << [user, :master]
+ issue1.labels << label1
end
describe "atom feed" do
@@ -20,10 +23,24 @@ describe "Dashboard Issues Feed", feature: true do
expect(response_headers['Content-Type']).
to have_content('application/atom+xml')
expect(body).to have_selector('title', text: "#{user.name} issues")
- expect(body).to have_selector('author email', text: issue1.author_email)
- expect(body).to have_selector('entry summary', text: issue1.title)
- expect(body).to have_selector('author email', text: issue2.author_email)
- expect(body).to have_selector('entry summary', text: issue2.title)
+
+ entry_1 = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue1.title}')]")
+ expect(entry_1).to be_present
+
+ entry_2 = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue2.title}')]")
+ expect(entry_2).to be_present
+
+ expect(entry_1).to have_selector('author email', text: issue1.author_email)
+ expect(entry_1).to have_selector('assignee email', text: issue1.author_email)
+ expect(entry_1).to have_selector('labels label', text: label1.title)
+ expect(entry_1).to have_selector('milestone', text: milestone1.title)
+ expect(entry_1).not_to have_selector('description')
+
+ expect(entry_2).to have_selector('author email', text: issue2.author_email)
+ expect(entry_2).to have_selector('assignee email', text: issue2.author_email)
+ expect(entry_2).not_to have_selector('labels')
+ expect(entry_2).not_to have_selector('milestone')
+ expect(entry_2).to have_selector('description', text: issue1.description)
end
end
end