<%= render partial: 'users/tabs/delete' %>
diff --git a/app/views/users/tabs/_rename.html.erb b/app/views/users/tabs/_rename.html.erb
new file mode 100644
index 000000000..1094bc358
--- /dev/null
+++ b/app/views/users/tabs/_rename.html.erb
@@ -0,0 +1,14 @@
+
+
+ <%= form_with url: rename_user_admin_users_path, method: :patch, autocomplete: :off do |f| %>
+ <%= f.hidden_field :id, value: @repo_user.id %>
+
+ <%= f.label :rename, 'Rename user to:', class: 'col-form-label col-lg-auto' %>
+
+ <%= f.text_field :rename, placeholder: @repo_user.username, autocomplete: :off, class: 'form-control' %>
+ <%= f.submit 'Update username', class: 'btn btn-primary' %>
+
+
+ <% end %>
+
+
diff --git a/config/routes.rb b/config/routes.rb
index debccbcb0..0c93173f3 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -273,6 +273,7 @@
patch "restore_user"
put "toggle_lock_user"
get "manage_roles"
+ patch :rename_user
# patch "mass_update_roles", to: "users#mass_update_roles"
end
# member do
diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb
index 95914fdff..3064af8e8 100644
--- a/spec/controllers/admin/users_controller_spec.rb
+++ b/spec/controllers/admin/users_controller_spec.rb
@@ -160,5 +160,28 @@
expect(@user_two.staff_spaces.pluck :space_id).to eq []
end
end
+
+ context "renaming users" do
+ it "should rename users" do
+ @user = create :user
+ new_name = "newName"
+ patch :rename_user, params: { id: @user.id, rename: new_name }
+ expect(response).not_to have_http_status :not_found
+ expect(response).to redirect_to user_path(new_name)
+ expect(flash[:alert]).to be_nil
+ expect(@user.reload.username).to eq new_name
+ end
+
+ it "should error if username is already in use" do
+ @user = create :user
+ existing_username = "existingUsername"
+ @prev_user = create :user, username: existing_username
+ patch :rename_user, params: { id: @user.id, rename: existing_username }
+ expect(response).to redirect_to(user_path(@user.username))
+ expect(flash[:alert]).not_to be_nil
+ expect(flash[:notice]).to be_nil
+ expect(@user.reload.username).not_to eq existing_username
+ end
+ end
end
end