remove duplicate code from atom request specs

This commit is contained in:
Nihad Abbasov 2012-09-12 05:01:50 -07:00
parent 46b9aafc39
commit a87c268f7d
3 changed files with 50 additions and 81 deletions

View file

@ -1,42 +1,23 @@
require 'spec_helper' require 'spec_helper'
describe "User Issues Dashboard" do describe "Dashboard Issues Feed" do
describe "GET /issues" do describe "GET /issues" do
before do let!(:user) { Factory :user }
let!(:project1) { Factory :project }
let!(:project2) { Factory :project }
let!(:issue1) { Factory :issue, author: user, assignee: user, project: project1 }
let!(:issue2) { Factory :issue, author: user, assignee: user, project: project2 }
login_as :user describe "atom feed" do
@project1 = Factory :project
@project2 = Factory :project
@project1.add_access(@user, :read, :write)
@project2.add_access(@user, :read, :write)
@issue1 = Factory :issue,
author: @user,
assignee: @user,
project: @project1
@issue2 = Factory :issue,
author: @user,
assignee: @user,
project: @project2
visit dashboard_issues_path
end
describe "atom feed", js: false do
it "should render atom feed via private token" do it "should render atom feed via private token" do
logout visit dashboard_issues_path(:atom, private_token: user.private_token)
visit dashboard_issues_path(:atom, private_token: @user.private_token)
page.response_headers['Content-Type'].should have_content("application/atom+xml") page.response_headers['Content-Type'].should have_content("application/atom+xml")
page.body.should have_selector("title", text: "#{@user.name} issues") page.body.should have_selector("title", text: "#{user.name} issues")
page.body.should have_selector("author email", text: @issue1.author_email) page.body.should have_selector("author email", text: issue1.author_email)
page.body.should have_selector("entry summary", text: @issue1.title) page.body.should have_selector("entry summary", text: issue1.title)
page.body.should have_selector("author email", text: @issue2.author_email) page.body.should have_selector("author email", text: issue2.author_email)
page.body.should have_selector("entry summary", text: @issue2.title) page.body.should have_selector("entry summary", text: issue2.title)
end end
end end
end end

View file

@ -1,27 +1,21 @@
require 'spec_helper' require 'spec_helper'
describe "User Dashboard" do describe "Dashboard Feed" do
before { login_as :user }
describe "GET /" do describe "GET /" do
before do let!(:user) { Factory :user }
@project = Factory :project, owner: @user
@project.add_access(@user, :read) context "projects atom feed via private token" do
visit dashboard_path it "should render projects atom feed" do
visit dashboard_path(:atom, private_token: user.private_token)
page.body.should have_selector("feed title")
end
end end
it "should render projects atom feed via private token" do context "projects page via private token" do
logout it "should redirect to login page" do
visit dashboard_path(private_token: user.private_token)
visit dashboard_path(:atom, private_token: @user.private_token) current_path.should == new_user_session_path
page.body.should have_selector("feed title") end
end
it "should not render projects page via private token" do
logout
visit dashboard_path(private_token: @user.private_token)
current_path.should == new_user_session_path
end end
end end
end end

View file

@ -1,40 +1,34 @@
require 'spec_helper' require 'spec_helper'
describe "Issues" do describe "Issues Feed" do
let(:project) { Factory :project }
before do
login_as :user
project.add_access(@user, :read, :write)
end
describe "GET /issues" do describe "GET /issues" do
before do let!(:user) { Factory :user }
@issue = Factory :issue, let!(:project) { Factory :project, owner: user }
author: @user, let!(:issue) { Factory :issue, author: user, project: project }
assignee: @user,
project: project
visit project_issues_path(project) before { project.add_access(user, :read, :write) }
context "when authenticated" do
it "should render atom feed" do
login_with user
visit project_issues_path(project, :atom)
page.response_headers['Content-Type'].should have_content("application/atom+xml")
page.body.should have_selector("title", text: "#{project.name} issues")
page.body.should have_selector("author email", text: issue.author_email)
page.body.should have_selector("entry summary", text: issue.title)
end
end end
it "should render atom feed" do context "when authenticated via private token" do
visit project_issues_path(project, :atom) it "should render atom feed" do
visit project_issues_path(project, :atom, private_token: user.private_token)
page.response_headers['Content-Type'].should have_content("application/atom+xml") page.response_headers['Content-Type'].should have_content("application/atom+xml")
page.body.should have_selector("title", text: "#{project.name} issues") page.body.should have_selector("title", text: "#{project.name} issues")
page.body.should have_selector("author email", text: @issue.author_email) page.body.should have_selector("author email", text: issue.author_email)
page.body.should have_selector("entry summary", text: @issue.title) page.body.should have_selector("entry summary", text: issue.title)
end end
it "should render atom feed via private token" do
logout
visit project_issues_path(project, :atom, private_token: @user.private_token)
page.response_headers['Content-Type'].should have_content("application/atom+xml")
page.body.should have_selector("title", text: "#{project.name} issues")
page.body.should have_selector("author email", text: @issue.author_email)
page.body.should have_selector("entry summary", text: @issue.title)
end end
end end
end end