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 # 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, # @return hash { id: @int, created_at: @date, updated_at: @date,
# nombre: @string, descripcion: @text, abordada: @bool } # nombre: @string, descripcion: @text, abordada: @bool }
def destroy def destroy
@barca = current_pirata.barcas.find(params[:id]) @barca = current_pirata.barcas.find(params[:id])
if @barca.destroy if @barca.consensos.count.zero? && @barca.destroy
notify(subject: :destroy, urgency: :high) notify(subject: :destroy, urgency: :high)
render status: :no_content render status: :no_content
else else

View file

@ -3,3 +3,4 @@
json.call(barca, :id, :created_at, :nombre, :descripcion) json.call(barca, :id, :created_at, :nombre, :descripcion)
json.abordada @current_pirata.barcas.pluck(:id).include?(barca.id) 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
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 test 'se pueden abandonar' do
barca = create :barca, piratas: [@pirata] barca = create :barca, piratas: [@pirata]