refactor feature steps
This commit is contained in:
parent
ef4e9c24d3
commit
79eb5ab396
34 changed files with 270 additions and 376 deletions
22
features/steps/project/create_project.rb
Normal file
22
features/steps/project/create_project.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
class CreateProject < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedPaths
|
||||
|
||||
And 'fill project form with valid data' do
|
||||
fill_in 'project_name', :with => 'NewProject'
|
||||
fill_in 'project_code', :with => 'NPR'
|
||||
fill_in 'project_path', :with => 'newproject'
|
||||
click_button "Create project"
|
||||
end
|
||||
|
||||
Then 'I should see project page' do
|
||||
current_path.should == project_path(Project.last)
|
||||
page.should have_content "NewProject"
|
||||
end
|
||||
|
||||
And 'I should see empty project instuctions' do
|
||||
page.should have_content "git init"
|
||||
page.should have_content "git remote"
|
||||
page.should have_content Project.last.url_to_repo
|
||||
end
|
||||
end
|
5
features/steps/project/project.rb
Normal file
5
features/steps/project/project.rb
Normal file
|
@ -0,0 +1,5 @@
|
|||
class Projects < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedPaths
|
||||
end
|
35
features/steps/project/project_browse_branches.rb
Normal file
35
features/steps/project/project_browse_branches.rb
Normal file
|
@ -0,0 +1,35 @@
|
|||
class ProjectBrowseBranches < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedPaths
|
||||
|
||||
Then 'I should see "Shop" recent branches list' do
|
||||
page.should have_content "Branches"
|
||||
page.should have_content "master"
|
||||
end
|
||||
|
||||
Given 'I click link "All"' do
|
||||
click_link "All"
|
||||
end
|
||||
|
||||
Then 'I should see "Shop" all branches list' do
|
||||
page.should have_content "Branches"
|
||||
page.should have_content "master"
|
||||
end
|
||||
|
||||
Given 'I click link "Protected"' do
|
||||
click_link "Protected"
|
||||
end
|
||||
|
||||
Then 'I should see "Shop" protected branches list' do
|
||||
within "table" do
|
||||
page.should have_content "stable"
|
||||
page.should_not have_content "master"
|
||||
end
|
||||
end
|
||||
|
||||
And 'project "Shop" has protected branches' do
|
||||
project = Project.find_by_name("Shop")
|
||||
project.protected_branches.create(:name => "stable")
|
||||
end
|
||||
end
|
47
features/steps/project/project_browse_commits.rb
Normal file
47
features/steps/project/project_browse_commits.rb
Normal file
|
@ -0,0 +1,47 @@
|
|||
class ProjectBrowseCommits < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedPaths
|
||||
|
||||
Then 'I see project commits' do
|
||||
current_path.should == project_commits_path(@project)
|
||||
|
||||
commit = @project.commit
|
||||
page.should have_content(@project.name)
|
||||
page.should have_content(commit.message)
|
||||
page.should have_content(commit.id.to_s[0..5])
|
||||
end
|
||||
|
||||
Given 'I click atom feed link' do
|
||||
click_link "Feed"
|
||||
end
|
||||
|
||||
Then 'I see commits atom feed' do
|
||||
commit = CommitDecorator.decorate(@project.commit)
|
||||
page.response_headers['Content-Type'].should have_content("application/atom+xml")
|
||||
page.body.should have_selector("title", :text => "Recent commits to #{@project.name}")
|
||||
page.body.should have_selector("author email", :text => commit.author_email)
|
||||
page.body.should have_selector("entry summary", :text => commit.description)
|
||||
end
|
||||
|
||||
Given 'I click on commit link' do
|
||||
visit project_commit_path(@project, ValidCommit::ID)
|
||||
end
|
||||
|
||||
Then 'I see commit info' do
|
||||
page.should have_content ValidCommit::MESSAGE
|
||||
page.should have_content "Showing 1 changed file"
|
||||
end
|
||||
|
||||
And 'I fill compare fields with refs' do
|
||||
fill_in "from", :with => "master"
|
||||
fill_in "to", :with => "stable"
|
||||
click_button "Compare"
|
||||
end
|
||||
|
||||
And 'I see compared refs' do
|
||||
page.should have_content "Commits (27)"
|
||||
page.should have_content "Compare View"
|
||||
page.should have_content "Showing 73 changed files"
|
||||
end
|
||||
end
|
34
features/steps/project/project_browse_files.rb
Normal file
34
features/steps/project/project_browse_files.rb
Normal file
|
@ -0,0 +1,34 @@
|
|||
class ProjectBrowseFiles < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedPaths
|
||||
|
||||
Then 'I should see files from repository' do
|
||||
page.should have_content "app"
|
||||
page.should have_content "History"
|
||||
page.should have_content "Gemfile"
|
||||
end
|
||||
|
||||
Then 'I should see files from repository for "8470d70"' do
|
||||
current_path.should == tree_project_ref_path(@project, "8470d70")
|
||||
page.should have_content "app"
|
||||
page.should have_content "History"
|
||||
page.should have_content "Gemfile"
|
||||
end
|
||||
|
||||
Given 'I click on "Gemfile" file in repo' do
|
||||
click_link "Gemfile"
|
||||
end
|
||||
|
||||
Then 'I should see it content' do
|
||||
page.should have_content "rubygems.org"
|
||||
end
|
||||
|
||||
And 'I click link "raw"' do
|
||||
click_link "raw"
|
||||
end
|
||||
|
||||
Then 'I should see raw file content' do
|
||||
page.source.should == ValidCommit::BLOB_FILE
|
||||
end
|
||||
end
|
19
features/steps/project/project_browse_git_repo.rb
Normal file
19
features/steps/project/project_browse_git_repo.rb
Normal file
|
@ -0,0 +1,19 @@
|
|||
class ProjectBrowseGitRepo < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedPaths
|
||||
|
||||
Given 'I click on "Gemfile" file in repo' do
|
||||
click_link "Gemfile"
|
||||
end
|
||||
|
||||
And 'I click blame button' do
|
||||
click_link "blame"
|
||||
end
|
||||
|
||||
Then 'I should see git file blame' do
|
||||
page.should have_content "rubygems.org"
|
||||
page.should have_content "Dmitriy Zaporozhets"
|
||||
page.should have_content "bc3735004cb Moving to rails 3.2"
|
||||
end
|
||||
end
|
10
features/steps/project/project_browse_tags.rb
Normal file
10
features/steps/project/project_browse_tags.rb
Normal file
|
@ -0,0 +1,10 @@
|
|||
class ProjectBrowseTags < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedPaths
|
||||
|
||||
Then 'I should see "Shop" all tags list' do
|
||||
page.should have_content "Tags"
|
||||
page.should have_content "v1.2.1"
|
||||
end
|
||||
end
|
6
features/steps/project/project_comment_commit.rb
Normal file
6
features/steps/project/project_comment_commit.rb
Normal file
|
@ -0,0 +1,6 @@
|
|||
class ProjectCommentCommit < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedNote
|
||||
include SharedPaths
|
||||
end
|
134
features/steps/project/project_issues.rb
Normal file
134
features/steps/project/project_issues.rb
Normal file
|
@ -0,0 +1,134 @@
|
|||
class ProjectIssues < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedNote
|
||||
include SharedPaths
|
||||
|
||||
Given 'I should see "Release 0.4" in issues' do
|
||||
page.should have_content "Release 0.4"
|
||||
end
|
||||
|
||||
And 'I should not see "Release 0.3" in issues' do
|
||||
page.should_not have_content "Release 0.3"
|
||||
end
|
||||
|
||||
Given 'I click link "Closed"' do
|
||||
click_link "Closed"
|
||||
end
|
||||
|
||||
Then 'I should see "Release 0.3" in issues' do
|
||||
page.should have_content "Release 0.3"
|
||||
end
|
||||
|
||||
And 'I should not see "Release 0.4" in issues' do
|
||||
page.should_not have_content "Release 0.4"
|
||||
end
|
||||
|
||||
Given 'I click link "All"' do
|
||||
click_link "All"
|
||||
end
|
||||
|
||||
Given 'I click link "Release 0.4"' do
|
||||
click_link "Release 0.4"
|
||||
end
|
||||
|
||||
Then 'I should see issue "Release 0.4"' do
|
||||
page.should have_content "Release 0.4"
|
||||
end
|
||||
|
||||
Given 'I click link "New Issue"' do
|
||||
click_link "New Issue"
|
||||
end
|
||||
|
||||
And 'I submit new issue "500 error on profile"' do
|
||||
fill_in "issue_title", :with => "500 error on profile"
|
||||
click_button "Submit new issue"
|
||||
end
|
||||
|
||||
Given 'I click link "500 error on profile"' do
|
||||
click_link "500 error on profile"
|
||||
end
|
||||
|
||||
Then 'I should see issue "500 error on profile"' do
|
||||
issue = Issue.find_by_title("500 error on profile")
|
||||
page.should have_content issue.title
|
||||
page.should have_content issue.author_name
|
||||
page.should have_content issue.project.name
|
||||
end
|
||||
|
||||
Given 'I fill in issue search with "Release"' do
|
||||
fill_in 'issue_search', with: "Release"
|
||||
end
|
||||
|
||||
Given 'I fill in issue search with "Bug"' do
|
||||
fill_in 'issue_search', with: "Bug"
|
||||
end
|
||||
|
||||
And 'I fill in issue search with "0.3"' do
|
||||
fill_in 'issue_search', with: "0.3"
|
||||
end
|
||||
|
||||
And 'I fill in issue search with "Something"' do
|
||||
fill_in 'issue_search', with: "Something"
|
||||
end
|
||||
|
||||
And 'I fill in issue search with ""' do
|
||||
page.execute_script("$('.issue_search').val('').keyup();");
|
||||
fill_in 'issue_search', with: ""
|
||||
end
|
||||
|
||||
Given 'project "Shop" has milestone "v2.2"' do
|
||||
project = Project.find_by_name("Shop")
|
||||
milestone = Factory :milestone, :title => "v2.2", :project => project
|
||||
|
||||
3.times { Factory :issue, :project => project, :milestone => milestone }
|
||||
end
|
||||
|
||||
And 'project "Shop" has milestone "v3.0"' do
|
||||
project = Project.find_by_name("Shop")
|
||||
milestone = Factory :milestone, :title => "v3.0", :project => project
|
||||
|
||||
3.times { Factory :issue, :project => project, :milestone => milestone }
|
||||
end
|
||||
|
||||
When 'I select milestone "v3.0"' do
|
||||
select "v3.0", from: "milestone_id"
|
||||
end
|
||||
|
||||
Then 'I should see selected milestone with title "v3.0"' do
|
||||
issues_milestone_selector = "#issue_milestone_id_chzn/a"
|
||||
wait_until { page.has_content?("Details") }
|
||||
page.find(issues_milestone_selector).should have_content("v3.0")
|
||||
end
|
||||
|
||||
When 'I select first assignee from "Shop" project' do
|
||||
project = Project.find_by_name "Shop"
|
||||
first_assignee = project.users.first
|
||||
select first_assignee.name, from: "assignee_id"
|
||||
end
|
||||
|
||||
Then 'I should see first assignee from "Shop" as selected assignee' do
|
||||
issues_assignee_selector = "#issue_assignee_id_chzn/a"
|
||||
wait_until { page.has_content?("Details") }
|
||||
project = Project.find_by_name "Shop"
|
||||
assignee_name = project.users.first.name
|
||||
page.find(issues_assignee_selector).should have_content(assignee_name)
|
||||
end
|
||||
|
||||
And 'project "Shop" have "Release 0.4" open issue' do
|
||||
project = Project.find_by_name("Shop")
|
||||
Factory.create(:issue,
|
||||
:title => "Release 0.4",
|
||||
:project => project,
|
||||
:author => project.users.first)
|
||||
end
|
||||
|
||||
And 'project "Shop" have "Release 0.3" closed issue' do
|
||||
project = Project.find_by_name("Shop")
|
||||
Factory.create(:issue,
|
||||
:title => "Release 0.3",
|
||||
:project => project,
|
||||
:author => project.users.first,
|
||||
:closed => true)
|
||||
end
|
||||
end
|
24
features/steps/project/project_labels.rb
Normal file
24
features/steps/project/project_labels.rb
Normal file
|
@ -0,0 +1,24 @@
|
|||
class ProjectLabels < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedPaths
|
||||
|
||||
Then 'I should see label "bug"' do
|
||||
within ".labels-table" do
|
||||
page.should have_content "bug"
|
||||
end
|
||||
end
|
||||
|
||||
And 'I should see label "feature"' do
|
||||
within ".labels-table" do
|
||||
page.should have_content "feature"
|
||||
end
|
||||
end
|
||||
|
||||
And 'project "Shop" have issues tags: "bug", "feature"' do
|
||||
project = Project.find_by_name("Shop")
|
||||
['bug', 'feature'].each do |label|
|
||||
Factory :issue, project: project, label_list: label
|
||||
end
|
||||
end
|
||||
end
|
80
features/steps/project/project_merge_requests.rb
Normal file
80
features/steps/project/project_merge_requests.rb
Normal file
|
@ -0,0 +1,80 @@
|
|||
class ProjectMergeRequests < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedNote
|
||||
include SharedPaths
|
||||
|
||||
Then 'I should see "Bug NS-04" in merge requests' do
|
||||
page.should have_content "Bug NS-04"
|
||||
end
|
||||
|
||||
And 'I should not see "Feature NS-03" in merge requests' do
|
||||
page.should_not have_content "Feature NS-03"
|
||||
end
|
||||
|
||||
Given 'I click link "Closed"' do
|
||||
click_link "Closed"
|
||||
end
|
||||
|
||||
Then 'I should see "Feature NS-03" in merge requests' do
|
||||
page.should have_content "Feature NS-03"
|
||||
end
|
||||
|
||||
And 'I should not see "Bug NS-04" in merge requests' do
|
||||
page.should_not have_content "Bug NS-04"
|
||||
end
|
||||
|
||||
Given 'I click link "All"' do
|
||||
click_link "All"
|
||||
end
|
||||
|
||||
Given 'I click link "Bug NS-04"' do
|
||||
click_link "Bug NS-04"
|
||||
end
|
||||
|
||||
Then 'I should see merge request "Bug NS-04"' do
|
||||
page.should have_content "Bug NS-04"
|
||||
end
|
||||
|
||||
And 'I click link "Close"' do
|
||||
click_link "Close"
|
||||
end
|
||||
|
||||
Then 'I should see closed merge request "Bug NS-04"' do
|
||||
mr = MergeRequest.find_by_title("Bug NS-04")
|
||||
mr.closed.should be_true
|
||||
page.should have_content "Closed by"
|
||||
end
|
||||
|
||||
Given 'I click link "New Merge Request"' do
|
||||
click_link "New Merge Request"
|
||||
end
|
||||
|
||||
And 'I submit new merge request "Wiki Feature"' do
|
||||
fill_in "merge_request_title", :with => "Wiki Feature"
|
||||
select "master", :from => "merge_request_source_branch"
|
||||
select "stable", :from => "merge_request_target_branch"
|
||||
click_button "Save"
|
||||
end
|
||||
|
||||
Then 'I should see merge request "Wiki Feature"' do
|
||||
page.should have_content "Wiki Feature"
|
||||
end
|
||||
|
||||
And 'project "Shop" have "Bug NS-04" open merge request' do
|
||||
project = Project.find_by_name("Shop")
|
||||
Factory.create(:merge_request,
|
||||
:title => "Bug NS-04",
|
||||
:project => project,
|
||||
:author => project.users.first)
|
||||
end
|
||||
|
||||
And 'project "Shop" have "Feature NS-03" closed merge request' do
|
||||
project = Project.find_by_name("Shop")
|
||||
Factory.create(:merge_request,
|
||||
:title => "Feature NS-03",
|
||||
:project => project,
|
||||
:author => project.users.first,
|
||||
:closed => true)
|
||||
end
|
||||
end
|
39
features/steps/project/project_milestones.rb
Normal file
39
features/steps/project/project_milestones.rb
Normal file
|
@ -0,0 +1,39 @@
|
|||
class ProjectMilestones < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedPaths
|
||||
|
||||
Then 'I should see milestone "v2.2"' do
|
||||
milestone = @project.milestones.find_by_title("v2.2")
|
||||
page.should have_content(milestone.title[0..10])
|
||||
page.should have_content(milestone.expires_at)
|
||||
page.should have_content("Browse Issues")
|
||||
end
|
||||
|
||||
Given 'I click link "v2.2"' do
|
||||
click_link "v2.2"
|
||||
end
|
||||
|
||||
Given 'I click link "New Milestone"' do
|
||||
click_link "New Milestone"
|
||||
end
|
||||
|
||||
And 'I submit new milestone "v2.3"' do
|
||||
fill_in "milestone_title", :with => "v2.3"
|
||||
click_button "Create milestone"
|
||||
end
|
||||
|
||||
Then 'I should see milestone "v2.3"' do
|
||||
milestone = @project.milestones.find_by_title("v2.3")
|
||||
page.should have_content(milestone.title[0..10])
|
||||
page.should have_content(milestone.expires_at)
|
||||
page.should have_content("Browse Issues")
|
||||
end
|
||||
|
||||
And 'project "Shop" has milestone "v2.2"' do
|
||||
project = Project.find_by_name("Shop")
|
||||
milestone = Factory :milestone, :title => "v2.2", :project => project
|
||||
|
||||
3.times { Factory :issue, :project => project, :milestone => milestone }
|
||||
end
|
||||
end
|
22
features/steps/project/project_network_graph.rb
Normal file
22
features/steps/project/project_network_graph.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
class ProjectNetworkGraph < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
|
||||
Then 'page should have network graph' do
|
||||
page.should have_content "Project Network Graph"
|
||||
within ".graph" do
|
||||
page.should have_content "master"
|
||||
page.should have_content "scss_refactor..."
|
||||
end
|
||||
end
|
||||
|
||||
And 'I visit project "Shop" network page' do
|
||||
project = Project.find_by_name("Shop")
|
||||
|
||||
# Stub out find_all to speed this up (10 commits vs. 650)
|
||||
commits = Grit::Commit.find_all(project.repo, nil, {max_count: 10})
|
||||
Grit::Commit.stub(:find_all).and_return(commits)
|
||||
|
||||
visit graph_project_path(project)
|
||||
end
|
||||
end
|
89
features/steps/project/project_team_management.rb
Normal file
89
features/steps/project/project_team_management.rb
Normal file
|
@ -0,0 +1,89 @@
|
|||
class ProjectTeamManagement < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedPaths
|
||||
|
||||
Then 'I should be able to see myself in team' do
|
||||
page.should have_content(@user.name)
|
||||
page.should have_content(@user.email)
|
||||
end
|
||||
|
||||
And 'I should see "Sam" in team list' do
|
||||
user = User.find_by_name("Sam")
|
||||
page.should have_content(user.name)
|
||||
page.should have_content(user.email)
|
||||
end
|
||||
|
||||
Given 'I click link "New Team Member"' do
|
||||
click_link "New Team Member"
|
||||
end
|
||||
|
||||
And 'I select "Mike" as "Reporter"' do
|
||||
user = User.find_by_name("Mike")
|
||||
within "#new_team_member" do
|
||||
select user.name, :from => "user_ids"
|
||||
select "Reporter", :from => "project_access"
|
||||
end
|
||||
click_button "Save"
|
||||
end
|
||||
|
||||
Then 'I should see "Mike" in team list as "Reporter"' do
|
||||
user = User.find_by_name("Mike")
|
||||
role_id = find(".user_#{user.id} #team_member_project_access").value
|
||||
role_id.should == UsersProject.access_roles["Reporter"].to_s
|
||||
end
|
||||
|
||||
Given 'I should see "Sam" in team list as "Developer"' do
|
||||
user = User.find_by_name("Sam")
|
||||
role_id = find(".user_#{user.id} #team_member_project_access").value
|
||||
role_id.should == UsersProject.access_roles["Developer"].to_s
|
||||
end
|
||||
|
||||
And 'I change "Sam" role to "Reporter"' do
|
||||
user = User.find_by_name("Sam")
|
||||
within ".user_#{user.id}" do
|
||||
select "Reporter", :from => "team_member_project_access"
|
||||
end
|
||||
end
|
||||
|
||||
And 'I should see "Sam" in team list as "Reporter"' do
|
||||
user = User.find_by_name("Sam")
|
||||
role_id = find(".user_#{user.id} #team_member_project_access").value
|
||||
role_id.should == UsersProject.access_roles["Reporter"].to_s
|
||||
end
|
||||
|
||||
Given 'I click link "Sam"' do
|
||||
click_link "Sam"
|
||||
end
|
||||
|
||||
Then 'I should see "Sam" team profile' do
|
||||
user = User.find_by_name("Sam")
|
||||
page.should have_content(user.name)
|
||||
page.should have_content(user.email)
|
||||
page.should have_content("To team list")
|
||||
end
|
||||
|
||||
And 'I click link "Remove from team"' do
|
||||
click_link "Remove from team"
|
||||
end
|
||||
|
||||
And 'I should not see "Sam" in team list' do
|
||||
user = User.find_by_name("Sam")
|
||||
page.should_not have_content(user.name)
|
||||
page.should_not have_content(user.email)
|
||||
end
|
||||
|
||||
And 'gitlab user "Mike"' do
|
||||
Factory :user, :name => "Mike"
|
||||
end
|
||||
|
||||
And 'gitlab user "Sam"' do
|
||||
Factory :user, :name => "Sam"
|
||||
end
|
||||
|
||||
And '"Sam" is "Shop" developer' do
|
||||
user = User.find_by_name("Sam")
|
||||
project = Project.find_by_name("Shop")
|
||||
project.add_access(user, :write)
|
||||
end
|
||||
end
|
6
features/steps/project/project_wall.rb
Normal file
6
features/steps/project/project_wall.rb
Normal file
|
@ -0,0 +1,6 @@
|
|||
class ProjectWall < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedNote
|
||||
include SharedPaths
|
||||
end
|
20
features/steps/project/project_wiki.rb
Normal file
20
features/steps/project/project_wiki.rb
Normal file
|
@ -0,0 +1,20 @@
|
|||
class ProjectWiki < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
include SharedProject
|
||||
include SharedNote
|
||||
include SharedPaths
|
||||
|
||||
Given 'I create Wiki page' do
|
||||
fill_in "Title", :with => 'Test title'
|
||||
fill_in "Content", :with => '[link test](test)'
|
||||
click_on "Save"
|
||||
end
|
||||
|
||||
Then 'I should see newly created wiki page' do
|
||||
page.should have_content "Test title"
|
||||
page.should have_content "link test"
|
||||
|
||||
click_link "link test"
|
||||
page.should have_content "Editing page"
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue