Issues cucumber. refactored step_definitoons
This commit is contained in:
parent
b846ac1059
commit
1281c122c7
14 changed files with 115 additions and 206 deletions
|
@ -7,6 +7,32 @@ Feature: Issues
|
||||||
And I visit project "Shop" issues page
|
And I visit project "Shop" issues page
|
||||||
|
|
||||||
Scenario: I should see open issues
|
Scenario: I should see open issues
|
||||||
Given I should see "Release 0.4" open issue
|
Given I should see "Release 0.4" in issues
|
||||||
And I should not see "Release 0.3" closed issue
|
And I should not see "Release 0.3" in issues
|
||||||
|
|
||||||
|
Scenario: I should see closed issues
|
||||||
|
Given I click link "Closed"
|
||||||
|
Then I should see "Release 0.3" in issues
|
||||||
|
And I should not see "Release 0.4" in issues
|
||||||
|
|
||||||
|
Scenario: I should see all issues
|
||||||
|
Given I click link "All"
|
||||||
|
Then I should see "Release 0.3" in issues
|
||||||
|
And I should see "Release 0.4" in issues
|
||||||
|
|
||||||
|
Scenario: I visit issue page
|
||||||
|
Given I click link "Release 0.4"
|
||||||
|
Then I should see issue "Release 0.4"
|
||||||
|
|
||||||
|
@javascript
|
||||||
|
Scenario: I submit new unassigned issue
|
||||||
|
Given I click link "New Issue"
|
||||||
|
And I submit new issue "500 error on profile"
|
||||||
|
Given I click link "500 error on profile"
|
||||||
|
Then I should see issue "500 error on profile"
|
||||||
|
|
||||||
|
@javascript
|
||||||
|
Scenario: I comment issue
|
||||||
|
Given I visit issue page "Release 0.4"
|
||||||
|
And I leave a comment like "XML attached"
|
||||||
|
Then I should see commetn "XML attached"
|
||||||
|
|
47
features/step_definitions/project/project_issues_steps.rb
Normal file
47
features/step_definitions/project/project_issues_steps.rb
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
Given /^project "(.*?)" have "(.*?)" open issue$/ do |arg1, arg2|
|
||||||
|
project = Project.find_by_name(arg1)
|
||||||
|
Factory.create(:issue, :title => arg2, :project => project, :author => project.users.first)
|
||||||
|
end
|
||||||
|
|
||||||
|
Given /^project "(.*?)" have "(.*?)" closed issue$/ do |arg1, arg2|
|
||||||
|
project = Project.find_by_name(arg1)
|
||||||
|
Factory.create(:issue, :title => arg2, :project => project, :author => project.users.first, :closed => true)
|
||||||
|
end
|
||||||
|
|
||||||
|
Given /^I visit project "(.*?)" issues page$/ do |arg1|
|
||||||
|
visit project_issues_path(Project.find_by_name(arg1))
|
||||||
|
end
|
||||||
|
|
||||||
|
Given /^I should see "(.*?)" in issues$/ do |arg1|
|
||||||
|
page.should have_content arg1
|
||||||
|
end
|
||||||
|
|
||||||
|
Given /^I should not see "(.*?)" in issues$/ do |arg1|
|
||||||
|
page.should_not have_content arg1
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^I should see issue "(.*?)"$/ do |arg1|
|
||||||
|
issue = Issue.find_by_title(arg1)
|
||||||
|
page.should have_content issue.title
|
||||||
|
page.should have_content issue.author_name
|
||||||
|
page.should have_content issue.project.name
|
||||||
|
end
|
||||||
|
|
||||||
|
Given /^I visit issue page "(.*?)"$/ do |arg1|
|
||||||
|
issue = Issue.find_by_title(arg1)
|
||||||
|
visit project_issue_path(issue.project, issue)
|
||||||
|
end
|
||||||
|
|
||||||
|
Given /^I leave a comment like "(.*?)"$/ do |arg1|
|
||||||
|
fill_in "note_note", :with => arg1
|
||||||
|
click_button "Add Comment"
|
||||||
|
end
|
||||||
|
|
||||||
|
Then /^I should see commetn "(.*?)"$/ do |arg1|
|
||||||
|
page.should have_content(arg1)
|
||||||
|
end
|
||||||
|
|
||||||
|
Given /^I submit new issue "(.*?)"$/ do |arg1|
|
||||||
|
fill_in "issue_title", :with => arg1
|
||||||
|
click_button "Submit new issue"
|
||||||
|
end
|
|
@ -1,22 +0,0 @@
|
||||||
Given /^project "(.*?)" have "(.*?)" open issue$/ do |arg1, arg2|
|
|
||||||
project = Project.find_by_name(arg1)
|
|
||||||
Factory.create(:issue, :title => arg2, :project => project, :author => project.users.first)
|
|
||||||
end
|
|
||||||
|
|
||||||
Given /^project "(.*?)" have "(.*?)" closed issue$/ do |arg1, arg2|
|
|
||||||
project = Project.find_by_name(arg1)
|
|
||||||
Factory.create(:issue, :title => arg2, :project => project, :author => project.users.first, :closed => true)
|
|
||||||
end
|
|
||||||
|
|
||||||
Given /^I visit project "(.*?)" issues page$/ do |arg1|
|
|
||||||
visit project_issues_path(Project.find_by_name(arg1))
|
|
||||||
end
|
|
||||||
|
|
||||||
Given /^I should see "(.*?)" open issue$/ do |arg1|
|
|
||||||
page.should have_content arg1
|
|
||||||
end
|
|
||||||
|
|
||||||
Given /^I should not see "(.*?)" closed issue$/ do |arg1|
|
|
||||||
page.should_not have_content arg1
|
|
||||||
end
|
|
||||||
|
|
40
spec/requests/atom/issues_spec.rb
Normal file
40
spec/requests/atom/issues_spec.rb
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe "Issues" do
|
||||||
|
let(:project) { Factory :project }
|
||||||
|
|
||||||
|
before do
|
||||||
|
login_as :user
|
||||||
|
project.add_access(@user, :read, :write)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "GET /issues" do
|
||||||
|
before do
|
||||||
|
@issue = Factory :issue,
|
||||||
|
:author => @user,
|
||||||
|
:assignee => @user,
|
||||||
|
:project => project
|
||||||
|
|
||||||
|
visit project_issues_path(project)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should render atom feed" do
|
||||||
|
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
|
||||||
|
|
||||||
|
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
|
|
@ -1,27 +0,0 @@
|
||||||
require 'spec_helper'
|
|
||||||
|
|
||||||
describe "Issues" do
|
|
||||||
let(:project) { Factory :project }
|
|
||||||
|
|
||||||
before do
|
|
||||||
login_as :user
|
|
||||||
project.add_access(@user, :read, :write)
|
|
||||||
|
|
||||||
@issue = Factory :issue,
|
|
||||||
:author => @user,
|
|
||||||
:assignee => @user,
|
|
||||||
:project => project
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "add new note", :js => true do
|
|
||||||
before do
|
|
||||||
visit project_issue_path(project, @issue)
|
|
||||||
fill_in "note_note", :with => "I commented this issue"
|
|
||||||
click_button "Add Comment"
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should conatin new note" do
|
|
||||||
page.should have_content("I commented this issue")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -11,161 +11,6 @@ describe "Issues" do
|
||||||
project.add_access(@user2, :read, :write)
|
project.add_access(@user2, :read, :write)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "GET /issues" do
|
|
||||||
before do
|
|
||||||
@issue = Factory :issue,
|
|
||||||
:author => @user,
|
|
||||||
:assignee => @user,
|
|
||||||
:project => project
|
|
||||||
|
|
||||||
visit project_issues_path(project)
|
|
||||||
end
|
|
||||||
|
|
||||||
subject { page }
|
|
||||||
|
|
||||||
it { should have_content(@issue.title[0..20]) }
|
|
||||||
it { should have_content(@issue.project.name) }
|
|
||||||
it { should have_content(@issue.assignee.name) }
|
|
||||||
|
|
||||||
it "should render atom feed" do
|
|
||||||
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
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
describe "statuses" do
|
|
||||||
before do
|
|
||||||
@closed_issue = Factory :issue,
|
|
||||||
:author => @user,
|
|
||||||
:assignee => @user,
|
|
||||||
:project => project,
|
|
||||||
:closed => true
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should show only open" do
|
|
||||||
should have_content(@issue.title[0..25])
|
|
||||||
should have_no_content(@closed_issue.title)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should show only closed" do
|
|
||||||
click_link "Closed"
|
|
||||||
should have_no_content(@issue.title)
|
|
||||||
should have_content(@closed_issue.title[0..25])
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should show all" do
|
|
||||||
click_link "All"
|
|
||||||
should have_content(@issue.title[0..25])
|
|
||||||
should have_content(@closed_issue.title[0..25])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "New issue", :js => true do
|
|
||||||
before do
|
|
||||||
visit project_issues_path(project)
|
|
||||||
click_link "New Issue"
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should open new issue form" do
|
|
||||||
page.should have_content("New Issue")
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "fill in" do
|
|
||||||
describe 'assign to me' do
|
|
||||||
before do
|
|
||||||
fill_in "issue_title", :with => "bug 345"
|
|
||||||
page.execute_script("$('#issue_assignee_id').show();")
|
|
||||||
select @user.name, :from => "issue_assignee_id"
|
|
||||||
end
|
|
||||||
|
|
||||||
it { expect { click_button "Submit new issue" }.to change {Issue.count}.by(1) }
|
|
||||||
|
|
||||||
it "should add new issue to table" do
|
|
||||||
click_button "Submit new issue"
|
|
||||||
|
|
||||||
page.should_not have_content("Add new issue")
|
|
||||||
page.should have_content @user.name
|
|
||||||
page.should have_content "bug 345"
|
|
||||||
page.should have_content project.name
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should call send mail" do
|
|
||||||
Notify.should_not_receive(:new_issue_email)
|
|
||||||
click_button "Submit new issue"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe 'assign to other' do
|
|
||||||
before do
|
|
||||||
fill_in "issue_title", :with => "bug 345"
|
|
||||||
page.execute_script("$('#issue_assignee_id').show();")
|
|
||||||
select @user2.name, :from => "issue_assignee_id"
|
|
||||||
end
|
|
||||||
|
|
||||||
it { expect { click_button "Submit new issue" }.to change {Issue.count}.by(1) }
|
|
||||||
|
|
||||||
it "should add new issue to table" do
|
|
||||||
click_button "Submit new issue"
|
|
||||||
|
|
||||||
page.should_not have_content("Add new issue")
|
|
||||||
page.should have_content @user2.name
|
|
||||||
page.should have_content "bug 345"
|
|
||||||
page.should have_content project.name
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should call send mail" do
|
|
||||||
Issue.observers.enable :issue_observer do
|
|
||||||
Notify.should_receive(:new_issue_email).and_return(stub(:deliver => true))
|
|
||||||
click_button "Submit new issue"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should send valid email to user" do
|
|
||||||
Issue.observers.enable :issue_observer do
|
|
||||||
with_resque do
|
|
||||||
click_button "Submit new issue"
|
|
||||||
end
|
|
||||||
issue = Issue.last
|
|
||||||
email = ActionMailer::Base.deliveries.last
|
|
||||||
email.subject.should have_content("New Issue was created")
|
|
||||||
email.body.should have_content(issue.title)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "Show issue" do
|
|
||||||
before do
|
|
||||||
@issue = Factory :issue,
|
|
||||||
:author => @user,
|
|
||||||
:assignee => @user,
|
|
||||||
:project => project
|
|
||||||
|
|
||||||
visit project_issue_path(project, @issue)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should have valid show page for issue" do
|
|
||||||
page.should have_content @issue.title
|
|
||||||
page.should have_content @user.name
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "Edit issue", :js => true do
|
describe "Edit issue", :js => true do
|
||||||
before do
|
before do
|
||||||
@issue = Factory :issue,
|
@issue = Factory :issue,
|
||||||
|
|
Loading…
Reference in a new issue