group.rb
5.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
class Groups < Spinach::FeatureSteps
  include SharedAuthentication
  include SharedPaths
  include SharedGroup
  include SharedUser
  include Select2Helper
  Then 'I should see group "Owned" projects list' do
    Group.find_by(name: "Owned").projects.each do |project|
      page.should have_link project.name
    end
  end
  And 'I should see projects activity feed' do
    page.should have_content 'closed issue'
  end
  Then 'I should see issues from group "Owned" assigned to me' do
    assigned_to_me(:issues).each do |issue|
      page.should have_content issue.title
    end
  end
  Then 'I should see merge requests from group "Owned" assigned to me' do
    assigned_to_me(:merge_requests).each do |issue|
      page.should have_content issue.title[0..80]
    end
  end
  And 'I select user "Mary Jane" from list with role "Reporter"' do
    user = User.find_by(name: "Mary Jane") || create(:user, name: "Mary Jane")
    within ".users-group-form" do
      select2(user.id, from: "#user_ids", multiple: true)
      select "Reporter", from: "group_access"
    end
    click_button "Add users into group"
  end
  Then 'I should see user "John Doe" in team list' do
    projects_with_access = find(".ui-box .well-list")
    projects_with_access.should have_content("John Doe")
  end
  Then 'I should not see user "John Doe" in team list' do
    projects_with_access = find(".ui-box .well-list")
    projects_with_access.should_not have_content("John Doe")
  end
  Then 'I should see user "Mary Jane" in team list' do
    projects_with_access = find(".ui-box .well-list")
    projects_with_access.should have_content("Mary Jane")
  end
  Then 'I should not see user "Mary Jane" in team list' do
    projects_with_access = find(".ui-box .well-list")
    projects_with_access.should_not have_content("Mary Jane")
  end
  Given 'project from group "Owned" has issues assigned to me' do
    create :issue,
      project: project,
      assignee: current_user,
      author: current_user
  end
  Given 'project from group "Owned" has merge requests assigned to me' do
    create :merge_request,
      source_project: project,
      target_project: project,
      assignee: current_user,
      author: current_user
  end
  When 'I click new group link' do
    click_link "New group"
  end
  And 'submit form with new group "Samurai" info' do
    fill_in 'group_name', with: 'Samurai'
    fill_in 'group_description', with: 'Tokugawa Shogunate'
    click_button "Create group"
  end
  Then 'I should be redirected to group "Samurai" page' do
    current_path.should == group_path(Group.last)
  end
  Then 'I should see newly created group "Samurai"' do
    page.should have_content "Samurai"
    page.should have_content "Tokugawa Shogunate"
    page.should have_content "You will only see events from projects in this group"
  end
  And 'I change group "Owned" name to "new-name"' do
    fill_in 'group_name', with: 'new-name'
    click_button "Save group"
  end
  Then 'I should see new group "Owned" name' do
    within ".navbar-gitlab" do
      page.should have_content "group: new-name"
    end
  end
  step 'I change group "Owned" avatar' do
    attach_file(:group_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png'))
    click_button "Save group"
    Group.find_by(name: "Owned").reload
  end
  step 'I should see new group "Owned" avatar' do
    Group.find_by(name: "Owned").avatar.should be_instance_of AttachmentUploader
    Group.find_by(name: "Owned").avatar.url.should == "/uploads/group/avatar/#{ Group.find_by(name:"Owned").id }/gitlab_logo.png"
  end
  step 'I should see the "Remove avatar" button' do
    page.should have_link("Remove avatar")
  end
  step 'I have group "Owned" avatar' do
    attach_file(:group_avatar, File.join(Rails.root, 'public', 'gitlab_logo.png'))
    click_button "Save group"
    Group.find_by(name: "Owned").reload
  end
  step 'I remove group "Owned" avatar' do
    click_link "Remove avatar"
    Group.find_by(name: "Owned").reload
  end
  step 'I should not see group "Owned" avatar' do
    Group.find_by(name: "Owned").avatar?.should be_false
  end
  step 'I should not see the "Remove avatar" button' do
    page.should_not have_link("Remove avatar")
  end
  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
  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.
  end
  step 'I should not see the "Remove User From Group" button for "John Doe"' do
    find(:css, 'li', text: "John Doe").should_not have_selector(:css, 'a.btn-remove')
    # poltergeist always confirms popups.
  end
  step 'I should not see the "Remove User From Group" button for "Mary Jane"' do
    find(:css, 'li', text: "Mary Jane").should_not have_selector(:css, 'a.btn-remove')
    # poltergeist always confirms popups.
  end
  protected
  def assigned_to_me key
    project.send(key).where(assignee_id: current_user.id)
  end
  def project
    Group.find_by(name: "Owned").projects.first
  end
end