summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-10-14 12:25:56 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-10-14 12:25:56 +0000
commit48d223d7c944b99d6aca960a9e10ffe6e7f7cb78 (patch)
treeaae3bed427375bba507c7a97d10d2c22c658386d
parent66855f62622e9fb87ae12de53c7912c4b79baa47 (diff)
parentd7324f0ed5181f0eb765871a35eaee587bf25fa9 (diff)
downloadgitlab-ce-48d223d7c944b99d6aca960a9e10ffe6e7f7cb78.tar.gz
Merge branch 'issue-23306-fix' into 'master'
Add missing routes to make group edits work 6b90ccb9fd changed the routes so that users/groups can be accessed via`/:id`, but the Rails `form_for` method expects to use the `groups#show` path helper for the form action URL. This causes group edits and deletes to fail because the PUT/PATCH/DELETE methods did not exist for `/:id`. This MR adds these methods so that `form_for` continues to work. Closes #23306 See merge request !6874
-rw-r--r--config/routes/group.rb3
-rw-r--r--features/groups.feature5
-rw-r--r--features/steps/groups.rb12
-rw-r--r--spec/features/groups_spec.rb82
4 files changed, 60 insertions, 42 deletions
diff --git a/config/routes/group.rb b/config/routes/group.rb
index 47a8a0a53d4..33143f0dfa2 100644
--- a/config/routes/group.rb
+++ b/config/routes/group.rb
@@ -3,6 +3,9 @@ require 'constraints/group_url_constrainer'
constraints(GroupUrlConstrainer.new) do
scope(path: ':id', as: :group, controller: :groups) do
get '/', action: :show
+ patch '/', action: :update
+ put '/', action: :update
+ delete '/', action: :destroy
end
end
diff --git a/features/groups.feature b/features/groups.feature
index 49e939807b5..4044bd9be79 100644
--- a/features/groups.feature
+++ b/features/groups.feature
@@ -39,11 +39,6 @@ Feature: Groups
When I visit group "Owned" merge requests page
Then I should not see merge requests from the archived project
- Scenario: I should see edit group "Owned" page
- When I visit group "Owned" settings page
- And I change group "Owned" name to "new-name"
- Then I should see new group "Owned" name
-
Scenario: I edit group "Owned" avatar
When I visit group "Owned" settings page
And I change group "Owned" avatar
diff --git a/features/steps/groups.rb b/features/steps/groups.rb
index 4fa7d7c6567..0e81e99120b 100644
--- a/features/steps/groups.rb
+++ b/features/steps/groups.rb
@@ -73,18 +73,6 @@ class Spinach::Features::Groups < Spinach::FeatureSteps
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
-
step 'I change group "Owned" avatar' do
attach_file(:group_avatar, File.join(Rails.root, 'spec', 'fixtures', 'banana_sample.gif'))
click_button "Save group"
diff --git a/spec/features/groups_spec.rb b/spec/features/groups_spec.rb
index c54ec2563ad..13bfe90302c 100644
--- a/spec/features/groups_spec.rb
+++ b/spec/features/groups_spec.rb
@@ -11,67 +11,99 @@ feature 'Group', feature: true do
end
end
- describe 'creating a group with space in group path' do
- it 'renders new group form with validation errors' do
- visit new_group_path
- fill_in 'Group path', with: 'space group'
+ describe 'create a group' do
+ before { visit new_group_path }
- click_button 'Create group'
+ describe 'with space in group path' do
+ it 'renders new group form with validation errors' do
+ fill_in 'Group path', with: 'space group'
+ click_button 'Create group'
- expect(current_path).to eq(groups_path)
- expect(page).to have_namespace_error_message
+ expect(current_path).to eq(groups_path)
+ expect(page).to have_namespace_error_message
+ end
end
- end
-
- describe 'creating a group with .atom at end of group path' do
- it 'renders new group form with validation errors' do
- visit new_group_path
- fill_in 'Group path', with: 'atom_group.atom'
- click_button 'Create group'
+ describe 'with .atom at end of group path' do
+ it 'renders new group form with validation errors' do
+ fill_in 'Group path', with: 'atom_group.atom'
+ click_button 'Create group'
- expect(current_path).to eq(groups_path)
- expect(page).to have_namespace_error_message
+ expect(current_path).to eq(groups_path)
+ expect(page).to have_namespace_error_message
+ end
+ end
+
+ describe 'with .git at end of group path' do
+ it 'renders new group form with validation errors' do
+ fill_in 'Group path', with: 'git_group.git'
+ click_button 'Create group'
+
+ expect(current_path).to eq(groups_path)
+ expect(page).to have_namespace_error_message
+ end
end
end
-
- describe 'creating a group with .git at end of group path' do
- it 'renders new group form with validation errors' do
- visit new_group_path
- fill_in 'Group path', with: 'git_group.git'
- click_button 'Create group'
+ describe 'group edit' do
+ let(:group) { create(:group) }
+ let(:path) { edit_group_path(group) }
+ let(:new_name) { 'new-name' }
+
+ before { visit path }
+
+ it 'saves new settings' do
+ fill_in 'group_name', with: new_name
+ click_button 'Save group'
+
+ expect(page).to have_content 'successfully updated'
+ expect(find('#group_name').value).to eq(new_name)
- expect(current_path).to eq(groups_path)
- expect(page).to have_namespace_error_message
+ page.within ".navbar-gitlab" do
+ expect(page).to have_content new_name
+ end
+ end
+
+ it 'removes group' do
+ click_link 'Remove Group'
+
+ expect(page).to have_content "scheduled for deletion"
end
end
- describe 'description' do
+ describe 'group page with markdown description' do
let(:group) { create(:group) }
let(:path) { group_path(group) }
it 'parses Markdown' do
group.update_attribute(:description, 'This is **my** group')
+
visit path
+
expect(page).to have_css('.description > p > strong')
end
it 'passes through html-pipeline' do
group.update_attribute(:description, 'This group is the :poop:')
+
visit path
+
expect(page).to have_css('.description > p > img')
end
it 'sanitizes unwanted tags' do
group.update_attribute(:description, '# Group Description')
+
visit path
+
expect(page).not_to have_css('.description h1')
end
it 'permits `rel` attribute on links' do
group.update_attribute(:description, 'https://google.com/')
+
visit path
+
expect(page).to have_css('.description a[rel]')
end
end