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
entry_1 = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue1.title}')]") context "issue with basic fields" do
expect(entry_1).to be_present 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_2 = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue2.title}')]") entry = 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).to be_present
expect(entry_1).to have_selector('assignee email', text: issue1.author_email) expect(entry).to have_selector('author email', text: issue2.author_email)
expect(entry_1).to have_selector('labels label', text: label1.title) expect(entry).to have_selector('assignee email', text: issue2.author_email)
expect(entry_1).to have_selector('milestone', text: milestone1.title) expect(entry).not_to have_selector('labels')
expect(entry_1).not_to have_selector('description') expect(entry).not_to have_selector('milestone')
expect(entry).to have_selector('description', text: issue2.description)
end
end
expect(entry_2).to have_selector('author email', text: issue2.author_email) context "issue with label and milestone" do
expect(entry_2).to have_selector('assignee email', text: issue2.author_email) let!(:milestone1) { create(:milestone, project: project1, title: 'v1') }
expect(entry_2).not_to have_selector('labels') let!(:label1) { create(:label, project: project1, title: 'label1') }
expect(entry_2).not_to have_selector('milestone') let!(:issue1) { create(:issue, author: user, assignee: user, project: project1, milestone: milestone1) }
expect(entry_2).to have_selector('description', text: issue1.description)
before do
issue1.labels << label1
end
it "should render issue label and milestone info" do
visit issues_dashboard_path(:atom, private_token: user.private_token)
entry = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue1.title}')]")
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 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