Read about our upcoming Code of Conduct on this issue

Commit fcbb14f6 authored by Alexander Matyushentsev's avatar Alexander Matyushentsev
Browse files

Move issue rendering tests into separate contexts

parent 0439030a0166
......@@ -5,42 +5,58 @@
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
it "should render atom feed via private token" do
visit issues_dashboard_path(:atom, private_token: user.private_token)
expect(response_headers['Content-Type']).
to have_content('application/atom+xml')
expect(response_headers['Content-Type']).to have_content('application/atom+xml')
expect(body).to have_selector('title', text: "#{user.name} issues")
end
context "issue with basic fields" do
let!(:issue2) { create(:issue, author: user, assignee: user, project: project2, description: 'test desc') }
it "should render issue fields" do
visit issues_dashboard_path(:atom, private_token: user.private_token)
entry = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue2.title}')]")
expect(entry).to be_present
expect(entry).to have_selector('author email', text: issue2.author_email)
expect(entry).to have_selector('assignee email', text: issue2.author_email)
expect(entry).not_to have_selector('labels')
expect(entry).not_to have_selector('milestone')
expect(entry).to have_selector('description', text: issue2.description)
end
end
context "issue with label and milestone" do
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) }
entry_1 = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue1.title}')]")
expect(entry_1).to be_present
before do
issue1.labels << label1
end
entry_2 = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue2.title}')]")
expect(entry_2).to be_present
it "should render issue label and milestone info" do
visit issues_dashboard_path(:atom, private_token: user.private_token)
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')
entry = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue1.title}')]")
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)
expect(entry).to be_present
expect(entry).to have_selector('author email', text: issue1.author_email)
expect(entry).to have_selector('assignee email', text: issue1.author_email)
expect(entry).to have_selector('labels label', text: label1.title)
expect(entry).to have_selector('milestone', text: milestone1.title)
expect(entry).not_to have_selector('description')
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