Move issue rendering tests into separate contexts

parent 5328930e
...@@ -5,42 +5,58 @@ describe "Dashboard Issues Feed", feature: true do ...@@ -5,42 +5,58 @@ 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!(: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 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
it "should render atom feed via private token" do it "should render atom feed via private token" do
visit issues_dashboard_path(:atom, private_token: user.private_token) visit issues_dashboard_path(:atom, private_token: user.private_token)
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")
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}')]") before do
expect(entry_1).to be_present issue1.labels << label1
end
entry_2 = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue2.title}')]") it "should render issue label and milestone info" do
expect(entry_2).to be_present visit issues_dashboard_path(:atom, private_token: user.private_token)
expect(entry_1).to have_selector('author email', text: issue1.author_email) entry = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue1.title}')]")
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).to be_present
expect(entry_2).to have_selector('assignee email', text: issue2.author_email) expect(entry).to have_selector('author email', text: issue1.author_email)
expect(entry_2).not_to have_selector('labels') expect(entry).to have_selector('assignee email', text: issue1.author_email)
expect(entry_2).not_to have_selector('milestone') expect(entry).to have_selector('labels label', text: label1.title)
expect(entry_2).to have_selector('description', text: issue1.description) expect(entry).to have_selector('milestone', text: milestone1.title)
expect(entry).not_to have_selector('description')
end
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