Ressource User

This commit is contained in:
Jérémy Lecour 2022-01-22 18:27:00 +01:00 committed by Jérémy Lecour
parent c15fbf8e41
commit 94590699b9
13 changed files with 129 additions and 6 deletions

View File

@ -0,0 +1,70 @@
class UsersController < ApplicationController
before_action :set_user, only: %i[ show edit update destroy ]
# GET /users or /users.json
def index
@users = User.all
end
# GET /users/1 or /users/1.json
def show
end
# GET /users/new
def new
@user = User.new
end
# GET /users/1/edit
def edit
end
# POST /users or /users.json
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to user_url(@user), notice: "User was successfully created." }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new, status: :unprocessable_entity }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /users/1 or /users/1.json
def update
respond_to do |format|
if @user.update(user_params)
format.html { redirect_to user_url(@user), notice: "User was successfully updated." }
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit, status: :unprocessable_entity }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# DELETE /users/1 or /users/1.json
def destroy
@user.destroy
respond_to do |format|
format.html { redirect_to users_url, notice: "User was successfully destroyed." }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_user
@user = User.find(params[:id])
end
# Only allow a list of trusted parameters through.
def user_params
params.fetch(:user, {})
end
end

View File

@ -5,7 +5,7 @@
<% end %>
<% if controller_name == "users" %>
<%#= link_to "Users", users_path, class: common_classes + " " + active_classes %>
<%= link_to "Users", users_path, class: common_classes + " " + active_classes %>
<% else %>
<%#= link_to "Users", users_path, class: common_classes + " " + inactive_classes %>
<%= link_to "Users", users_path, class: common_classes + " " + inactive_classes %>
<% end %>

View File

@ -1,5 +1,3 @@
<div class="w-full">
<div class="flex justify-between items-center">
@ -15,11 +13,14 @@
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Gravatar
</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Email
</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Display name
Name
</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Created at
@ -35,11 +36,14 @@
<tbody>
<% @users.each do |user| %>
<tr class="<%= cycle("bg-white", "bg-gray-50") %>">
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">
<%= user_gravatar current_user, class: "h-10 w-10 rounded-full", size: 80 %>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">
<%= user.email %>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">
<%= user.display_name %>
<%= user.name %>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<%= user.created_at %>

View File

@ -19,4 +19,5 @@ Rails.application.routes.draw do
resources :passwords, only: [:create, :edit, :new, :update], param: :password_reset_token
resources :checks
resources :users
end

View File

@ -0,0 +1,48 @@
require "test_helper"
class UsersControllerTest < ActionDispatch::IntegrationTest
setup do
@user = users(:one)
end
test "should get index" do
get users_url
assert_response :success
end
test "should get new" do
get new_user_url
assert_response :success
end
test "should create user" do
assert_difference("User.count") do
post users_url, params: { user: { } }
end
assert_redirected_to user_url(User.last)
end
test "should show user" do
get user_url(@user)
assert_response :success
end
test "should get edit" do
get edit_user_url(@user)
assert_response :success
end
test "should update user" do
patch user_url(@user), params: { user: { } }
assert_redirected_to user_url(@user)
end
test "should destroy user" do
assert_difference("User.count", -1) do
delete user_url(@user)
end
assert_redirected_to users_url
end
end