Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kumanyaev <me@zzet.org>2013-01-19 21:32:09 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-01-25 00:31:23 +0400
commit695becc4cb017d76329efb55aae7ddb9a208895b (patch)
treea52b9cd18b729be8a3df7bf5b16cd46877d7f7bf /features
parent82499a4cbfdd9605312322fea80b76f034230b1b (diff)
Add teams into Public sections
Diffstat (limited to 'features')
-rw-r--r--features/steps/userteams/userteams.rb250
-rw-r--r--features/teams/team.feature75
2 files changed, 325 insertions, 0 deletions
diff --git a/features/steps/userteams/userteams.rb b/features/steps/userteams/userteams.rb
new file mode 100644
index 00000000000..59ec3d2de6e
--- /dev/null
+++ b/features/steps/userteams/userteams.rb
@@ -0,0 +1,250 @@
+class Userteams < Spinach::FeatureSteps
+ include SharedAuthentication
+ include SharedPaths
+ include SharedProject
+
+ When 'I do not have teams with me' do
+ UserTeam.with_member(current_user).destroy_all
+ end
+
+ Then 'I should see dashboard page without teams info block' do
+ page.has_no_css?(".teams_box").must_equal true
+ end
+
+ When 'I have teams with my membership' do
+ team = create :user_team
+ team.add_member(current_user, UserTeam.access_roles["Master"], true)
+ end
+
+ Then 'I should see dashboard page with teams information block' do
+ page.should have_css(".teams_box")
+ end
+
+ When 'exist user teams' do
+ team = create :user_team
+ team.add_member(current_user, UserTeam.access_roles["Master"], true)
+ end
+
+ And 'I click on "All teams" link' do
+ click_link("All Teams")
+ end
+
+ Then 'I should see "All teams" page' do
+ current_path.should == teams_path
+ end
+
+ And 'I should see exist teams in teams list' do
+ team = UserTeam.last
+ find_in_list(".teams_list tr", team).must_equal true
+ end
+
+ When 'I click to "New team" link' do
+ click_link("New Team")
+ end
+
+ And 'I submit form with new team info' do
+ fill_in 'name', with: 'gitlab'
+ click_button 'Create team'
+ end
+
+ Then 'I should be redirected to new team page' do
+ team = UserTeam.last
+ current_path.should == team_path(team)
+ end
+
+ When 'I have teams with projects and members' do
+ team = create :user_team
+ @project = create :project
+ team.add_member(current_user, UserTeam.access_roles["Master"], true)
+ team.assign_to_project(@project, UserTeam.access_roles["Master"])
+ @event = create(:closed_issue_event, project: @project)
+ end
+
+ When 'I visit team page' do
+ visit team_path(UserTeam.last)
+ end
+
+ Then 'I should see projects list' do
+ page.should have_css(".projects_box")
+ projects_box = find(".projects_box")
+ projects_box.should have_content(@project.name)
+ end
+
+ And 'project from team has issues assigned to me' do
+ team = UserTeam.last
+ team.projects.each do |project|
+ project.issues << create(:issue, assignee: current_user)
+ end
+ end
+
+ When 'I visit team issues page' do
+ team = UserTeam.last
+ visit issues_team_path(team)
+ end
+
+ Then 'I should see issues from this team assigned to me' do
+ team = UserTeam.last
+ team.projects.each do |project|
+ project.issues.assigned(current_user).each do |issue|
+ page.should have_content issue.title
+ end
+ end
+ end
+
+ Given 'I have team with projects and members' do
+ team = create :user_team
+ project = create :project
+ user = create :user
+ team.add_member(current_user, UserTeam.access_roles["Master"], true)
+ team.add_member(user, UserTeam.access_roles["Developer"], false)
+ team.assign_to_project(project, UserTeam.access_roles["Master"])
+ end
+
+ Given 'project from team has issues assigned to teams members' do
+ team = UserTeam.last
+ team.projects.each do |project|
+ team.members.each do |member|
+ project.issues << create(:issue, assignee: member)
+ end
+ end
+ end
+
+ Then 'I should see issues from this team assigned to teams members' do
+ team = UserTeam.last
+ team.projects.each do |project|
+ team.members.each do |member|
+ project.issues.assigned(member).each do |issue|
+ page.should have_content issue.title
+ end
+ end
+ end
+ end
+
+ Given 'project from team has merge requests assigned to me' do
+ team = UserTeam.last
+ team.projects.each do |project|
+ team.members.each do |member|
+ 3.times { project.merge_requests << create(:merge_request, assignee: member) }
+ end
+ end
+ end
+
+ When 'I visit team merge requests page' do
+ team = UserTeam.last
+ visit merge_requests_team_path(team)
+ end
+
+ Then 'I should see merge requests from this team assigned to me' do
+ team = UserTeam.last
+ team.projects.each do |project|
+ team.members.each do |member|
+ project.issues.assigned(member).each do |merge_request|
+ page.should have_content merge_request.title
+ end
+ end
+ end
+ end
+
+ Given 'project from team has merge requests assigned to team members' do
+ team = UserTeam.last
+ team.projects.each do |project|
+ team.members.each do |member|
+ 3.times { project.merge_requests << create(:merge_request, assignee: member) }
+ end
+ end
+ end
+
+ Then 'I should see merge requests from this team assigned to me' do
+ team = UserTeam.last
+ team.projects.each do |project|
+ team.members.each do |member|
+ project.issues.assigned(member).each do |merge_request|
+ page.should have_content merge_request.title
+ end
+ end
+ end
+ end
+
+ Given 'I have new user "John"' do
+ create :user, name: "John"
+ end
+
+ When 'I visit team people page' do
+ team = UserTeam.last
+ visit team_members_path(team)
+ end
+
+ And 'I select user "John" from list with role "Reporter"' do
+ pending 'step not implemented'
+ end
+
+ Then 'I should see user "John" in team list' do
+ user = User.find_by_name("John")
+ team_members_list = find(".team-table")
+ team_members_list.should have_content user.name
+ end
+
+ And 'I have my own project without teams' do
+ project = create :project, creator: current_user
+ end
+
+ And 'I visit my team page' do
+ team = UserTeam.last
+ visit team_path(team)
+ end
+
+ When 'I click on link "Projects"' do
+ click_link "Projects"
+ end
+
+ Then 'I should see form with my own project in avaliable projects list' do
+ project = current_user.projects.first
+ projects_select = find("#project_ids")
+ projects_select.should have_content(project.name)
+ end
+
+ When 'I submit form with selected project and max access' do
+ project = current_user.projects.first
+ within "#team_projects" do
+ select project.name, :from => "project_ids"
+ select "Reporter", :from => "greatest_project_access"
+ end
+ click_button "Add"
+ end
+
+ Then 'I should see my own project in team projects list' do
+ project = current_user.projects.first
+ projects = all("table .project")
+ projects.each do |project_row|
+ project_row.should have_content(project.name)
+ end
+ end
+
+ When 'I click link "New Team Member"' do
+ click_link "New Team Member"
+ end
+
+ protected
+
+ def current_team
+ @user_team ||= Team.first
+ end
+
+ def project
+ current_team.projects.first
+ end
+
+ def assigned_to_user key, user
+ project.send(key).where(assignee_id: user)
+ end
+
+ def find_in_list(selector, item)
+ members_list = all(selector)
+ entered = false
+ members_list.each do |member_item|
+ entered = true if member_item.has_content?(item.name)
+ end
+ entered
+ end
+
+end
diff --git a/features/teams/team.feature b/features/teams/team.feature
new file mode 100644
index 00000000000..d914313efb6
--- /dev/null
+++ b/features/teams/team.feature
@@ -0,0 +1,75 @@
+Feature: UserTeams
+ Background:
+ Given I sign in as a user
+ And I own project "Shop"
+ And project "Shop" has push event
+
+ Scenario: No teams, no dashboard info block
+ When I do not have teams with me
+ And I visit dashboard page
+ Then I should see dashboard page without teams info block
+
+ Scenario: I should see teams info block
+ When I have teams with my membership
+ And I visit dashboard page
+ Then I should see dashboard page with teams information block
+
+ Scenario: I should see all teams list
+ When exist user teams
+ And I visit dashboard page
+ And I click on "All teams" link
+ Then I should see "All teams" page
+ And I should see exist teams in teams list
+
+ Scenario: I should can create new team
+ When I have teams with my membership
+ And I visit dashboard page
+ When I click to "New team" link
+ And I submit form with new team info
+ Then I should be redirected to new team page
+
+ Scenario: I should see team dashboard list
+ When I have teams with projects and members
+ When I visit team page
+ Then I should see projects list
+
+ Scenario: I should see team issues list
+ Given I have team with projects and members
+ And project from team has issues assigned to me
+ When I visit team issues page
+ Then I should see issues from this team assigned to me
+
+ Scenario: I should see teams members issues list
+ Given I have team with projects and members
+ Given project from team has issues assigned to teams members
+ When I visit team issues page
+ Then I should see issues from this team assigned to teams members
+
+ Scenario: I should see team merge requests list
+ Given I have team with projects and members
+ Given project from team has merge requests assigned to me
+ When I visit team merge requests page
+ Then I should see merge requests from this team assigned to me
+
+ Scenario: I should see teams members merge requests list
+ Given I have team with projects and members
+ Given project from team has merge requests assigned to team members
+ When I visit team merge requests page
+ Then I should see merge requests from this team assigned to me
+
+ Scenario: I should add user to projects in Team
+ Given I have team with projects and members
+ Given I have new user "John"
+ When I visit team people page
+ When I click link "New Team Member"
+ And I select user "John" from list with role "Reporter"
+ Then I should see user "John" in team list
+
+ Scenario: I should assign my team to my own project
+ Given I have team with projects and members
+ And I have my own project without teams
+ And I visit my team page
+ When I click on link "Projects"
+ Then I should see form with my own project in avaliable projects list
+ When I submit form with selected project and max access
+ Then I should see my own project in team projects list