gitlab-org--gitlab-foss/features/steps/groups.rb

301 lines
9.8 KiB
Ruby
Raw Normal View History

class Spinach::Features::Groups < Spinach::FeatureSteps
2012-10-03 06:42:17 -04:00
include SharedAuthentication
include SharedPaths
2014-02-07 11:59:55 -05:00
include SharedGroup
include SharedUser
include Select2Helper
2012-10-03 06:42:17 -04:00
2015-03-30 17:17:49 -04:00
step 'gitlab user "Mike"' do
create(:user, name: "Mike")
end
step 'I click link "Add members"' do
find(:css, 'button.btn-new').click
end
step 'I select "Mike" as "Reporter"' do
user = User.find_by(name: "Mike")
page.within ".users-group-form" do
2015-03-30 17:17:49 -04:00
select2(user.id, from: "#user_ids", multiple: true)
select "Reporter", from: "access_level"
end
click_button "Add users to group"
end
step 'I should see "Mike" in team list as "Reporter"' do
page.within '.well-list' do
expect(page).to have_content('Mike')
expect(page).to have_content('Reporter')
2015-03-30 17:17:49 -04:00
end
end
step 'I select "sjobs@apple.com" as "Reporter"' do
page.within ".users-group-form" do
select2("sjobs@apple.com", from: "#user_ids", multiple: true)
select "Reporter", from: "access_level"
end
click_button "Add users to group"
end
step 'I should see "sjobs@apple.com" in team list as invited "Reporter"' do
page.within '.well-list' do
expect(page).to have_content('sjobs@apple.com')
expect(page).to have_content('invited')
expect(page).to have_content('Reporter')
end
end
step 'I should see group "Owned" projects list' do
2014-02-07 11:59:55 -05:00
Group.find_by(name: "Owned").projects.each do |project|
expect(page).to have_link project.name
2012-10-03 06:42:17 -04:00
end
end
step 'I should see projects activity feed' do
expect(page).to have_content 'closed issue'
2012-10-03 06:42:17 -04:00
end
step 'I should see issues from group "Owned" assigned to me' do
2012-10-22 14:42:06 -04:00
assigned_to_me(:issues).each do |issue|
expect(page).to have_content issue.title
2012-10-22 14:42:06 -04:00
end
end
step 'I should see merge requests from group "Owned" assigned to me' do
2012-10-22 14:42:06 -04:00
assigned_to_me(:merge_requests).each do |issue|
expect(page).to have_content issue.title[0..80]
2012-10-22 14:42:06 -04:00
end
end
step 'I select user "Mary Jane" from list with role "Reporter"' do
2014-02-07 11:59:55 -05:00
user = User.find_by(name: "Mary Jane") || create(:user, name: "Mary Jane")
2014-09-30 10:39:37 -04:00
click_button 'Add members'
page.within ".users-group-form" do
select2(user.id, from: "#user_ids", multiple: true)
select "Reporter", from: "access_level"
2012-12-25 17:52:49 -05:00
end
click_button "Add users to group"
2012-12-25 17:52:49 -05:00
end
step 'I should see user "John Doe" in team list' do
projects_with_access = find(".panel .well-list")
expect(projects_with_access).to have_content("John Doe")
2012-12-25 17:52:49 -05:00
end
step 'I should not see user "John Doe" in team list' do
projects_with_access = find(".panel .well-list")
expect(projects_with_access).not_to have_content("John Doe")
2014-02-07 11:59:55 -05:00
end
step 'I should see user "Mary Jane" in team list' do
projects_with_access = find(".panel .well-list")
expect(projects_with_access).to have_content("Mary Jane")
2014-02-07 11:59:55 -05:00
end
step 'I should not see user "Mary Jane" in team list' do
projects_with_access = find(".panel .well-list")
expect(projects_with_access).not_to have_content("Mary Jane")
2014-02-07 11:59:55 -05:00
end
step 'project from group "Owned" has issues assigned to me' do
2012-10-22 14:42:06 -04:00
create :issue,
project: project,
assignee: current_user,
author: current_user
end
step 'project from group "Owned" has merge requests assigned to me' do
2012-10-22 14:42:06 -04:00
create :merge_request,
Merge Request on forked projects The good: - You can do a merge request for a forked commit and it will merge properly (i.e. it does work). - Push events take into account merge requests on forked projects - Tests around merge_actions now present, spinach, and other rspec tests - Satellites now clean themselves up rather then recreate The questionable: - Events only know about target projects - Project's merge requests only hold on to MR's where they are the target - All operations performed in the satellite The bad: - Duplication between project's repositories and satellites (e.g. commits_between) (for reference: http://feedback.gitlab.com/forums/176466-general/suggestions/3456722-merge-requests-between-projects-repos) Fixes: Make test repos/satellites only create when needed -Spinach/Rspec now only initialize test directory, and setup stubs (things that are relatively cheap) -project_with_code, source_project_with_code, and target_project_with_code now create/destroy their repos individually -fixed remote removal -How to merge renders properly -Update emails to show project/branches -Edit MR doesn't set target branch -Fix some failures on editing/creating merge requests, added a test -Added back a test around merge request observer -Clean up project_transfer_spec, Remove duplicate enable/disable observers -Ensure satellite lock files are cleaned up, Attempted to add some testing around these as well -Signifant speed ups for tests -Update formatting ordering in notes_on_merge_requests -Remove wiki schema update Fixes for search/search results -Search results was using by_project for a list of projects, updated this to use in_projects -updated search results to reference the correct (target) project -udpated search results to print both sides of the merge request Change-Id: I19407990a0950945cc95d62089cbcc6262dab1a8
2013-04-25 10:15:33 -04:00
source_project: project,
target_project: project,
2012-10-22 14:42:06 -04:00
assignee: current_user,
author: current_user
end
step 'I change group "Owned" name to "new-name"' do
fill_in 'group_name', with: 'new-name'
fill_in 'group_path', with: 'new-name'
click_button "Save group"
end
step 'I should see new group "Owned" name' do
page.within ".navbar-gitlab" do
expect(page).to have_content "new-name"
end
end
2014-02-07 11:59:55 -05:00
step 'I change group "Owned" avatar' do
2014-01-27 16:34:05 -05:00
attach_file(:group_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png'))
click_button "Save group"
2014-02-07 11:59:55 -05:00
Group.find_by(name: "Owned").reload
2014-01-27 16:34:05 -05:00
end
2014-02-07 11:59:55 -05:00
step 'I should see new group "Owned" avatar' do
expect(Group.find_by(name: "Owned").avatar).to be_instance_of AvatarUploader
expect(Group.find_by(name: "Owned").avatar.url).to eq "/uploads/group/avatar/#{ Group.find_by(name:"Owned").id }/gitlab_logo.png"
2014-01-27 16:34:05 -05:00
end
step 'I should see the "Remove avatar" button' do
expect(page).to have_link("Remove avatar")
2014-01-27 16:34:05 -05:00
end
2014-02-07 11:59:55 -05:00
step 'I have group "Owned" avatar' do
2014-01-27 16:34:05 -05:00
attach_file(:group_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png'))
click_button "Save group"
2014-02-07 11:59:55 -05:00
Group.find_by(name: "Owned").reload
2014-01-27 16:34:05 -05:00
end
2014-02-07 11:59:55 -05:00
step 'I remove group "Owned" avatar' do
2014-01-27 16:34:05 -05:00
click_link "Remove avatar"
2014-02-07 11:59:55 -05:00
Group.find_by(name: "Owned").reload
2014-01-27 16:34:05 -05:00
end
2014-02-07 11:59:55 -05:00
step 'I should not see group "Owned" avatar' do
expect(Group.find_by(name: "Owned").avatar?).to be_false
2014-01-27 16:34:05 -05:00
end
step 'I should not see the "Remove avatar" button' do
expect(page).not_to have_link("Remove avatar")
2014-01-27 16:34:05 -05:00
end
2014-02-07 11:59:55 -05:00
step 'I click on the "Remove User From Group" button for "John Doe"' do
find(:css, 'li', text: "John Doe").find(:css, 'a.btn-remove').click
# poltergeist always confirms popups.
end
2012-10-03 06:42:17 -04:00
2014-02-07 11:59:55 -05:00
step 'I click on the "Remove User From Group" button for "Mary Jane"' do
find(:css, 'li', text: "Mary Jane").find(:css, 'a.btn-remove').click
# poltergeist always confirms popups.
2012-10-03 06:42:17 -04:00
end
2012-10-22 14:42:06 -04:00
2014-02-07 11:59:55 -05:00
step 'I should not see the "Remove User From Group" button for "John Doe"' do
expect(find(:css, 'li', text: "John Doe")).not_to have_selector(:css, 'a.btn-remove')
2014-02-07 11:59:55 -05:00
# poltergeist always confirms popups.
2012-10-22 14:42:06 -04:00
end
2014-02-07 11:59:55 -05:00
step 'I should not see the "Remove User From Group" button for "Mary Jane"' do
expect(find(:css, 'li', text: "Mary Jane")).not_to have_selector(:css, 'a.btn-remove')
2014-02-07 11:59:55 -05:00
# poltergeist always confirms popups.
end
step 'I search for \'Mary\' member' do
page.within '.member-search-form' do
fill_in 'search', with: 'Mary'
click_button 'Search'
end
end
2014-06-30 10:18:26 -04:00
step 'I click on group milestones' do
click_link 'Milestones'
end
step 'I should see group milestones index page has no milestones' do
expect(page).to have_content('No milestones to show')
2014-06-30 10:18:26 -04:00
end
step 'Group has projects with milestones' do
group_milestone
end
step 'I should see group milestones index page with milestones' do
expect(page).to have_content('Version 7.2')
expect(page).to have_content('GL-113')
expect(page).to have_link('2 Issues', href: issues_group_path("owned", milestone_title: "Version 7.2"))
expect(page).to have_link('3 Merge Requests', href: merge_requests_group_path("owned", milestone_title: "GL-113"))
2014-06-30 10:18:26 -04:00
end
step 'I click on one group milestone' do
click_link 'GL-113'
end
step 'I should see group milestone with descriptions and expiry date' do
expect(page).to have_content('expires at Aug 20, 2114')
end
2014-06-30 10:18:26 -04:00
step 'I should see group milestone with all issues and MRs assigned to that milestone' do
expect(page).to have_content('Milestone GL-113')
expect(page).to have_content('Progress: 0 closed 4 open')
expect(page).to have_link(@issue1.title, href: namespace_project_issue_path(@project1.namespace, @project1, @issue1))
expect(page).to have_link(@mr3.title, href: namespace_project_merge_request_path(@project3.namespace, @project3, @mr3))
2014-06-30 10:18:26 -04:00
end
2014-02-07 11:59:55 -05:00
protected
def assigned_to_me(key)
2012-10-22 14:42:06 -04:00
project.send(key).where(assignee_id: current_user.id)
end
2014-02-07 11:59:55 -05:00
def project
Group.find_by(name: "Owned").projects.first
end
2014-06-30 10:18:26 -04:00
def group_milestone
group = Group.find_by(name: "Owned")
@project1 = create :project,
group: group
project2 = create :project,
path: 'gitlab-ci',
group: group
@project3 = create :project,
path: 'cookbook-gitlab',
group: group
milestone1_project1 = create :milestone,
title: "Version 7.2",
project: @project1
milestone1_project2 = create :milestone,
title: "Version 7.2",
project: project2
milestone1_project3 = create :milestone,
title: "Version 7.2",
project: @project3
milestone2_project1 = create :milestone,
title: "GL-113",
project: @project1
milestone2_project2 = create :milestone,
title: "GL-113",
project: project2
milestone2_project3 = create :milestone,
title: "GL-113",
project: @project3,
2014-08-21 04:49:12 -04:00
due_date: '2114-08-20',
description: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry'
2014-06-30 10:18:26 -04:00
@issue1 = create :issue,
project: @project1,
assignee: current_user,
author: current_user,
milestone: milestone2_project1
issue2 = create :issue,
project: project2,
assignee: current_user,
author: current_user,
milestone: milestone1_project2
issue3 = create :issue,
project: @project3,
assignee: current_user,
author: current_user,
milestone: milestone1_project1
mr1 = create :merge_request,
source_project: @project1,
target_project: @project1,
assignee: current_user,
author: current_user,
milestone: milestone2_project1
mr2 = create :merge_request,
source_project: project2,
target_project: project2,
assignee: current_user,
author: current_user,
milestone: milestone2_project2
@mr3 = create :merge_request,
source_project: @project3,
target_project: @project3,
assignee: current_user,
author: current_user,
milestone: milestone2_project3
end
2012-10-03 06:42:17 -04:00
end