barcas
This commit is contained in:
parent
c4003deba3
commit
9dec04fe88
8 changed files with 161 additions and 0 deletions
88
app/controllers/barcas_controller.rb
Normal file
88
app/controllers/barcas_controller.rb
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# API de Barcas
|
||||||
|
class BarcasController < ApplicationController
|
||||||
|
before_action :authenticate!
|
||||||
|
|
||||||
|
# GET /barcas
|
||||||
|
#
|
||||||
|
# Devuelve todas las barcas
|
||||||
|
#
|
||||||
|
# @return Array [ barcas ]
|
||||||
|
def index
|
||||||
|
@barcas = Barca.all
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /barcas/:id
|
||||||
|
#
|
||||||
|
# Ver los detalles de una barca
|
||||||
|
#
|
||||||
|
# @param :id [Integer] El ID de la barca
|
||||||
|
# @return Hash { id: @int, created_at: @date, updated_at: @date,
|
||||||
|
# nombre: @string, descripcion: @text }
|
||||||
|
def show
|
||||||
|
@barca = Barca.find(params[:id])
|
||||||
|
return if @barca
|
||||||
|
|
||||||
|
render json: {}, status: :not_found
|
||||||
|
end
|
||||||
|
|
||||||
|
# POST /barcas
|
||||||
|
#
|
||||||
|
# Crear una barca
|
||||||
|
#
|
||||||
|
# @param barca [Hash] { barca: { nombre: @string, descripcion: @text } }
|
||||||
|
# @return Hash { id: @int, created_at: @date, updated_at: @date,
|
||||||
|
# nombre: @string, descripcion: @text }
|
||||||
|
def create
|
||||||
|
@barca = Barca.new(barca_params)
|
||||||
|
|
||||||
|
if @barca.save
|
||||||
|
render status: :created
|
||||||
|
else
|
||||||
|
render json: { errors: @barca.errors.messages },
|
||||||
|
status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# PUT /barcas/:id
|
||||||
|
#
|
||||||
|
# Actualizar una barca
|
||||||
|
#
|
||||||
|
# @param barca [Hash] { barca: { nombre: @string, descripcion: @text } }
|
||||||
|
# @return hash { id: @int, created_at: @date, updated_at: @date,
|
||||||
|
# nombre: @string, descripcion: @text }
|
||||||
|
def update
|
||||||
|
@barca = Barca.find(params[:id])
|
||||||
|
|
||||||
|
if @barca.update_attributes barca_params
|
||||||
|
render status: :no_content
|
||||||
|
else
|
||||||
|
render json: { errors: @barca.errors.messages },
|
||||||
|
status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# DELETE /barcas/:id
|
||||||
|
#
|
||||||
|
# Elimina una barca y su tripulación
|
||||||
|
#
|
||||||
|
# @return hash { id: @int, created_at: @date, updated_at: @date,
|
||||||
|
# nombre: @string, descripcion: @text }
|
||||||
|
def destroy
|
||||||
|
@barca = Barca.find(params[:id])
|
||||||
|
|
||||||
|
if @barca.destroy
|
||||||
|
render status: :no_content
|
||||||
|
else
|
||||||
|
render json: { errors: @barca.errors.messages },
|
||||||
|
status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def barca_params
|
||||||
|
params.require(:barca).permit(:nombre, :descripcion)
|
||||||
|
end
|
||||||
|
end
|
3
app/views/barcas/_barca.json.jbuilder
Normal file
3
app/views/barcas/_barca.json.jbuilder
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
json.call(barca, :id, :created_at, :nombre, :descripcion)
|
3
app/views/barcas/create.json.jbuilder
Normal file
3
app/views/barcas/create.json.jbuilder
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
json.partial! @barca, as: :barca
|
3
app/views/barcas/destroy.json.jbuilder
Normal file
3
app/views/barcas/destroy.json.jbuilder
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
json.partial! @barca, as: :barca
|
3
app/views/barcas/index.json.jbuilder
Normal file
3
app/views/barcas/index.json.jbuilder
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
json.barcas @barcas, partial: 'barcas/barca', as: :barca
|
3
app/views/barcas/show.json.jbuilder
Normal file
3
app/views/barcas/show.json.jbuilder
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
json.partial! @barca, as: :barca
|
3
app/views/barcas/update.json.jbuilder
Normal file
3
app/views/barcas/update.json.jbuilder
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
json.partial! @barca, as: :barca
|
55
test/controllers/barcas_controller_test.rb
Normal file
55
test/controllers/barcas_controller_test.rb
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class BarcasControllerTest < ActionDispatch::IntegrationTest
|
||||||
|
setup do
|
||||||
|
@pirata = create :pirata
|
||||||
|
@auth = { Authorization: ActionController::HttpAuthentication::Basic
|
||||||
|
.encode_credentials(@pirata.email, @pirata.password) }
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'se pueden ver todas' do
|
||||||
|
2.times do
|
||||||
|
create :barca
|
||||||
|
end
|
||||||
|
|
||||||
|
get barcas_url, as: :json, headers: @auth
|
||||||
|
|
||||||
|
body = JSON.parse(@response.body)
|
||||||
|
|
||||||
|
assert_equal 200, @response.status
|
||||||
|
assert_equal 2, body['barcas'].size
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'se pueden crear' do
|
||||||
|
nombre = SecureRandom.hex
|
||||||
|
post barcas_url, as: :json, headers: @auth,
|
||||||
|
params: { barca: { nombre: nombre, descripcion: nombre } }
|
||||||
|
|
||||||
|
body = JSON.parse(@response.body)
|
||||||
|
|
||||||
|
assert_equal 201, @response.status
|
||||||
|
assert_equal nombre, body['nombre']
|
||||||
|
assert_equal nombre, body['descripcion']
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'se pueden editar' do
|
||||||
|
barca = create :barca
|
||||||
|
nombre = SecureRandom.hex
|
||||||
|
|
||||||
|
put barca_url(barca), as: :json, headers: @auth,
|
||||||
|
params: { barca: { id: barca.id, nombre: nombre, descripcion: nombre } }
|
||||||
|
|
||||||
|
assert_equal 204, @response.status
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'se pueden eliminar' do
|
||||||
|
barca = create :barca
|
||||||
|
|
||||||
|
delete barca_url(barca), as: :json, headers: @auth
|
||||||
|
|
||||||
|
assert_equal 204, @response.status
|
||||||
|
assert_raise ActiveRecord::RecordNotFound do
|
||||||
|
barca.reload
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue