methods index show create pour le controller JoinedTeamUser
This commit is contained in:
parent
5de0989e3f
commit
4d1ff2a451
7 changed files with 107 additions and 5 deletions
35
app/controllers/api/v1/joined_team_users_controller.rb
Normal file
35
app/controllers/api/v1/joined_team_users_controller.rb
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
class Api::V1::JoinedTeamUsersController < ApplicationController
|
||||
before_action :set_joinedTeamUsers, only: %i[show update destroy]
|
||||
before_action :check_login
|
||||
|
||||
def index
|
||||
render json: JoinedTeamUserSerializer.new(JoinedTeamUser.all).serializable_hash.to_json
|
||||
end
|
||||
|
||||
def show
|
||||
render json: JoinedTeamUserSerializer.new(@joinedTeamUser).serializable_hash.to_json
|
||||
end
|
||||
|
||||
def create
|
||||
userId = User.find_by(username: params[:joinedTeamUser][:username]).id
|
||||
teamId = Team.find_by(name: params[:joinedTeamUser][:team_name]).id
|
||||
jtu = JoinedTeamUser.new(team_id: teamId, user_id: userId, can_edit: false)
|
||||
|
||||
if jtu.save
|
||||
render json: JoinedTeamUserSerializer.new(jtu).serializable_hash.to_json, status: :created
|
||||
else
|
||||
render json: { errors: jtu.errors }, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def joinedTeamUsers_params
|
||||
params.require(:joinedTeamUser).permit(:team_id, :user_id, :can_edit, :created_at, :updated_at)
|
||||
end
|
||||
|
||||
def set_joinedTeamUsers
|
||||
@joinedTeamUser = JoinedTeamUser.find(params[:id])
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
class JoinedTeamUser < ApplicationRecord
|
||||
# validates_associated :team, on: :create
|
||||
# validates_associated :user, on: :create
|
||||
validates_uniqueness_of :user_id, scope: :team_id, message: "user already part of this team"
|
||||
|
||||
belongs_to :user
|
||||
belongs_to :team
|
||||
|
||||
validates_associated :user, on: :create
|
||||
validates_associated :team, on: :create
|
||||
end
|
||||
|
|
|
|||
6
app/serializers/joined_team_user_serializer.rb
Normal file
6
app/serializers/joined_team_user_serializer.rb
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
class JoinedTeamUserSerializer
|
||||
include JSONAPI::Serializer
|
||||
attributes :team_id, :user_id, :can_edit
|
||||
|
||||
cache_options store: Rails.cache, namespace: 'jsonapi-serializer', expires_in: 1.hour
|
||||
end
|
||||
|
|
@ -4,6 +4,7 @@ Rails.application.routes.draw do
|
|||
resources :users
|
||||
resources :tokens, only: %i[create]
|
||||
resources :teams
|
||||
resources :joined_team_users
|
||||
resources :activities do
|
||||
resources :tasks
|
||||
end
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ end
|
|||
team_id: Team.all.sample.id,
|
||||
can_edit: true
|
||||
)
|
||||
puts "USER ##{joined_team_users.user_id} joined TEAM ##{joined_team_users.team_id}"
|
||||
# puts "USER ##{joined_team_users.user_id} joined TEAM ##{joined_team_users.team_id}"
|
||||
end
|
||||
|
||||
User.create! username: "admin", email: "admin@email.com", password: "azerty", is_admin: true
|
||||
|
|
|
|||
59
test/controllers/api/v1/joined_team_users_controller_test.rb
Normal file
59
test/controllers/api/v1/joined_team_users_controller_test.rb
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
require "test_helper"
|
||||
|
||||
class Api::V1::JoinedTeamUsersControllerTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@joinedTeamUser = joined_team_users(:one)
|
||||
@user = users(:one)
|
||||
@team = teams(:one)
|
||||
end
|
||||
|
||||
# INDEX
|
||||
test "should access JoinedTeamUser index" do
|
||||
get api_v1_joined_team_users_url,
|
||||
headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
|
||||
as: :json
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should forbid JoinedTeamUser index" do
|
||||
get api_v1_joined_team_users_url,
|
||||
as: :json
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
# SHOW
|
||||
test "should show JoinedTeamUser" do
|
||||
get api_v1_joined_team_users_url(@joinedTeamUser),
|
||||
headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
|
||||
as: :json
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should forbid show JoinedTeamUser" do
|
||||
get api_v1_joined_team_users_url(@joinedTeamUser),
|
||||
as: :json
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
# CREATE
|
||||
test "should create joinedTeamUser" do
|
||||
assert_difference("JoinedTeamUser.count") do
|
||||
post api_v1_joined_team_users_url,
|
||||
params: { joinedTeamUser: { team_id: @team.id, user_id: @user.id, can_edit: false } },
|
||||
headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
|
||||
as: :json
|
||||
end
|
||||
assert_response :created
|
||||
end
|
||||
|
||||
test "should forbid create joinedTeamUser" do
|
||||
assert_no_difference("JoinedTeamUser.count") do
|
||||
post api_v1_joined_team_users_url,
|
||||
params: { joinedTeamUser: { team_id: @team.id, user_id: @user.id, can_edit: false } },
|
||||
as: :json
|
||||
end
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
@ -44,7 +44,7 @@ class Api::V1::TeamsControllerTest < ActionDispatch::IntegrationTest
|
|||
assert_response :created
|
||||
end
|
||||
|
||||
test "should forbid create team when not logged in" do
|
||||
test "should forbid create team" do
|
||||
assert_no_difference('Team.count') do
|
||||
post api_v1_teams_url,
|
||||
params: { team: { name: "Random name", description: "Random description" } },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue