Skip to content
Snippets Groups Projects
Commit fcbb14f6 authored by Alexander Matyushentsev's avatar Alexander Matyushentsev
Browse files

Move issue rendering tests into separate contexts

parent 5328930e
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -5,42 +5,58 @@ describe "Dashboard Issues Feed", feature: true do
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
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment