las barcas pueden o no estar abordadas

This commit is contained in:
fauno 2019-08-31 12:11:06 -03:00
parent b0ccf4f688
commit f44abbc7c5
No known key found for this signature in database
GPG key ID: 456032D717A4CD9C
3 changed files with 24 additions and 6 deletions

View file

@ -26,7 +26,7 @@ class BarcasController < ApplicationController
#
# @param :id [Integer] El ID de la barca
# @return Hash { id: @int, created_at: @date, updated_at: @date,
# nombre: @string, descripcion: @text }
# nombre: @string, descripcion: @text, abordada: @bool }
def show
@barca = Barca.find(params[:id])
return if @barca
@ -40,7 +40,7 @@ class BarcasController < ApplicationController
#
# @param barca [Hash] { barca: { nombre: @string, descripcion: @text } }
# @return Hash { id: @int, created_at: @date, updated_at: @date,
# nombre: @string, descripcion: @text }
# nombre: @string, descripcion: @text, abordada: @bool }
def create
@barca = Barca.new(barca_params)
# La pirata se une a la barca que crea
@ -62,7 +62,7 @@ class BarcasController < ApplicationController
#
# @param barca [Hash] { barca: { nombre: @string, descripcion: @text } }
# @return hash { id: @int, created_at: @date, updated_at: @date,
# nombre: @string, descripcion: @text }
# nombre: @string, descripcion: @text, abordada: @bool }
def update
# Las piratas solo pueden modificar sus propias barcas
@barca = current_pirata.barcas.find(params[:id])
@ -81,7 +81,7 @@ class BarcasController < ApplicationController
# Elimina una barca y su tripulación
#
# @return hash { id: @int, created_at: @date, updated_at: @date,
# nombre: @string, descripcion: @text }
# nombre: @string, descripcion: @text, abordada: @bool }
def destroy
@barca = current_pirata.barcas.find(params[:id])

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
json.call(barca, :id, :created_at, :nombre, :descripcion)
json.abordada @current_pirata.barcas.pluck(:id).include?(barca.id)

View file

@ -53,8 +53,13 @@ class BarcasControllerTest < ActionDispatch::IntegrationTest
barca = create :barca, piratas: [@pirata]
nombre = SecureRandom.hex
put barca_url(barca), as: :json, headers: @auth,
params: { barca: { id: barca.id, nombre: nombre, descripcion: nombre } }
put barca_url(barca),
as: :json, headers: @auth,
params: {
barca: {
id: barca.id, nombre: nombre, descripcion: nombre
}
}
assert_equal 204, @response.status
end
@ -87,4 +92,15 @@ class BarcasControllerTest < ActionDispatch::IntegrationTest
assert_equal 204, @response.status
assert barca.reload.piratas.include?(@pirata)
end
test 'hay barcas abordadas' do
create :barca, piratas: [@pirata]
create :barca
get barcas_todas_url, as: :json, headers: @auth
body = JSON.parse @response.body
assert body['barcas'].first['abordada']
assert_not body['barcas'].last['abordada']
end
end