No se pueden eliminar barcas si tienen consensos

This commit is contained in:
fauno 2019-08-31 12:27:56 -03:00
parent a7dd195c20
commit 2bbe338065
No known key found for this signature in database
GPG key ID: 456032D717A4CD9C
3 changed files with 13 additions and 2 deletions

View file

@ -78,14 +78,14 @@ class BarcasController < ApplicationController
# DELETE /barcas/:id
#
# Elimina una barca y su tripulación
# Elimina una barca y su tripulación, solo si no tiene consensos
#
# @return hash { id: @int, created_at: @date, updated_at: @date,
# nombre: @string, descripcion: @text, abordada: @bool }
def destroy
@barca = current_pirata.barcas.find(params[:id])
if @barca.destroy
if @barca.consensos.count.zero? && @barca.destroy
notify(subject: :destroy, urgency: :high)
render status: :no_content
else

View file

@ -3,3 +3,4 @@
json.call(barca, :id, :created_at, :nombre, :descripcion)
json.abordada @current_pirata.barcas.pluck(:id).include?(barca.id)
json.eliminable barca.consensos.count.zero?

View file

@ -75,6 +75,16 @@ class BarcasControllerTest < ActionDispatch::IntegrationTest
end
end
test 'no se pueden eliminar si ya tienen consensos' do
barca = create :barca, piratas: [@pirata]
barca.consensos << create(:consenso)
delete barca_url(barca), as: :json, headers: @auth
assert_equal 422, @response.status
assert barca.reload
end
test 'se pueden abandonar' do
barca = create :barca, piratas: [@pirata]