Move issue rendering tests into separate contexts

This commit is contained in:
Alexander Matyushentsev 2016-06-11 20:03:39 -07:00
parent 5328930e3f
commit fcbb14f6b7
1 changed files with 37 additions and 21 deletions

View File

@ -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') }
entry_2 = find(:xpath, "//feed/entry[contains(summary/text(),'#{issue2.title}')]") it "should render issue fields" 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(),'#{issue2.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: issue2.author_email)
expect(entry_2).not_to have_selector('labels') expect(entry).to have_selector('assignee email', text: issue2.author_email)
expect(entry_2).not_to have_selector('milestone') expect(entry).not_to have_selector('labels')
expect(entry_2).to have_selector('description', text: issue1.description) 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) }
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