From f44abbc7c5c8b8f4057f8fcd72b21ad4e24a723f Mon Sep 17 00:00:00 2001 From: fauno Date: Sat, 31 Aug 2019 12:11:06 -0300 Subject: [PATCH] las barcas pueden o no estar abordadas --- app/controllers/barcas_controller.rb | 8 ++++---- app/views/barcas/_barca.json.jbuilder | 2 ++ test/controllers/barcas_controller_test.rb | 20 ++++++++++++++++++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/app/controllers/barcas_controller.rb b/app/controllers/barcas_controller.rb index b1828ab..a52e839 100644 --- a/app/controllers/barcas_controller.rb +++ b/app/controllers/barcas_controller.rb @@ -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]) diff --git a/app/views/barcas/_barca.json.jbuilder b/app/views/barcas/_barca.json.jbuilder index c99f4c1..8aa5feb 100644 --- a/app/views/barcas/_barca.json.jbuilder +++ b/app/views/barcas/_barca.json.jbuilder @@ -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) diff --git a/test/controllers/barcas_controller_test.rb b/test/controllers/barcas_controller_test.rb index 839c150..f03dac5 100644 --- a/test/controllers/barcas_controller_test.rb +++ b/test/controllers/barcas_controller_test.rb @@ -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