eliminar consensos si están vacíos
This commit is contained in:
parent
ebc41a9b77
commit
d4a7a2466a
4 changed files with 47 additions and 1 deletions
|
@ -50,4 +50,27 @@ class ConsensosController < ApplicationController
|
||||||
status: :unprocessable_entity
|
status: :unprocessable_entity
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# DELETE /consensos/:id
|
||||||
|
#
|
||||||
|
# Eliminar un consenso, solo si no tiene posiciones!
|
||||||
|
#
|
||||||
|
# @param :id [Integer] El ID del consenso a eliminar
|
||||||
|
# @return [Hash] { id: @int, created_at: @date,
|
||||||
|
# titulo: @string, texto: @string,
|
||||||
|
# posiciones: [] }
|
||||||
|
def destroy
|
||||||
|
begin
|
||||||
|
@consenso = Consenso.find(params[:id])
|
||||||
|
rescue ActiveRecord::RecordNotFound
|
||||||
|
render json: {}, status: :not_found
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if @consenso.posiciones.empty? && @consenso.destroy
|
||||||
|
render status: :ok
|
||||||
|
else
|
||||||
|
render json: {}, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
3
app/views/consensos/destroy.json.jbuilder
Normal file
3
app/views/consensos/destroy.json.jbuilder
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
json.partial! @consenso, as: :consenso
|
|
@ -4,7 +4,7 @@ Rails.application.routes.draw do
|
||||||
# No queremos un índice de piratas
|
# No queremos un índice de piratas
|
||||||
resources :piratas, only: %i[create]
|
resources :piratas, only: %i[create]
|
||||||
# Podemos crear consensos pero no modificarlos
|
# Podemos crear consensos pero no modificarlos
|
||||||
resources :consensos, only: %i[index show create] do
|
resources :consensos, only: %i[index show create destroy] do
|
||||||
# Y solo le podemos agregar posiciones
|
# Y solo le podemos agregar posiciones
|
||||||
resources :posiciones, only: %i[create]
|
resources :posiciones, only: %i[create]
|
||||||
end
|
end
|
||||||
|
|
|
@ -43,4 +43,24 @@ class ConsensosControllerTest < ActionDispatch::IntegrationTest
|
||||||
assert_equal 'hola', consenso.titulo
|
assert_equal 'hola', consenso.titulo
|
||||||
assert_equal 'chau', consenso.texto
|
assert_equal 'chau', consenso.texto
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test 'se pueden borrar si están vacíos' do
|
||||||
|
consenso = create :consenso
|
||||||
|
|
||||||
|
delete consenso_url(consenso), as: :json, headers: @auth
|
||||||
|
|
||||||
|
assert_equal 200, @response.status
|
||||||
|
|
||||||
|
body = JSON.parse(@response.body)
|
||||||
|
assert_raise(ActiveRecord::RecordNotFound) { Consenso.find(body['id']) }
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'no se pueden borrar si no están vacíos' do
|
||||||
|
consenso = create :consenso
|
||||||
|
create :posicion, consenso: consenso
|
||||||
|
|
||||||
|
delete consenso_url(consenso), as: :json, headers: @auth
|
||||||
|
|
||||||
|
assert_equal 422, @response.status
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue