Add more information into RSS fead for issues

parent c928accd
...@@ -123,6 +123,8 @@ v 8.8.1 ...@@ -123,6 +123,8 @@ v 8.8.1
v 8.8.0 v 8.8.0
- Implement GFM references for milestones (Alejandro Rodríguez) - 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) - Snippets tab under user profile. !4001 (Long Nguyen)
- Fix error when using link to uploads in global snippets - 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 - Fix Error 500 when attempting to retrieve project license when HEAD points to non-existent ref
......
...@@ -5,10 +5,28 @@ xml.entry do ...@@ -5,10 +5,28 @@ xml.entry do
xml.updated issue.created_at.xmlschema xml.updated issue.created_at.xmlschema
xml.media :thumbnail, width: "40", height: "40", url: image_url(avatar_icon(issue.author_email)) 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.name issue.author_name
xml.email issue.author_email xml.email issue.author_email
end end
xml.summary issue.title 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 end
...@@ -5,12 +5,15 @@ describe "Dashboard Issues Feed", feature: true do ...@@ -5,12 +5,15 @@ describe "Dashboard Issues Feed", feature: true do
let!(:user) { create(:user) } let!(:user) { create(:user) }
let!(:project1) { create(:project) } let!(:project1) { create(:project) }
let!(:project2) { create(:project) } let!(:project2) { create(:project) }
let!(:issue1) { create(:issue, author: user, assignee: user, project: project1) } let!(:milestone1) { create(:milestone, project: project1, title: 'v1') }
let!(:issue2) { create(:issue, author: user, assignee: user, project: project2) } 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 before do
project1.team << [user, :master] project1.team << [user, :master]
project2.team << [user, :master] project2.team << [user, :master]
issue1.labels << label1
end end
describe "atom feed" do describe "atom feed" do
...@@ -20,10 +23,24 @@ describe "Dashboard Issues Feed", feature: true do ...@@ -20,10 +23,24 @@ describe "Dashboard Issues Feed", feature: true do
expect(response_headers['Content-Type']). expect(response_headers['Content-Type']).
to have_content('application/atom+xml') to have_content('application/atom+xml')
expect(body).to have_selector('title', text: "#{user.name} issues") 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) entry_1 = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue1.title}')]")
expect(body).to have_selector('author email', text: issue2.author_email) expect(entry_1).to be_present
expect(body).to have_selector('entry summary', text: issue2.title)
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 end
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