diff --git a/app/controllers/api/availabilities_controller.rb b/app/controllers/api/availabilities_controller.rb index 15b25fb6b..053142214 100644 --- a/app/controllers/api/availabilities_controller.rb +++ b/app/controllers/api/availabilities_controller.rb @@ -51,6 +51,7 @@ class API::AvailabilitiesController < API::ApiController end end + # This endpoint is used to remove a machine or a plan from the given availability def update authorize Availability if @availability.update(availability_params) diff --git a/test/integration/availabilities/update_test.rb b/test/integration/availabilities/update_test.rb new file mode 100644 index 000000000..2c03f23cd --- /dev/null +++ b/test/integration/availabilities/update_test.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'test_helper' + +# module definition +module Availabilities; end + +class Availabilities::UpdateTest < ActionDispatch::IntegrationTest + setup do + admin = User.with_role(:admin).first + login_as(admin, scope: :user) + end + + test 'update an availability to remove an associated machine' do + availability = Availability.find(4) + machine = Machine.find(2) + patch "/api/availabilities/#{availability.id}", + params: { + availability: { + machines_attributes: [ + { id: machine.id, _destroy: true } + ] + } + } + + assert_response :success + assert_equal Mime[:json], response.content_type + + res = json_response(response.body) + assert_not_includes res[:machine_ids], machine.id + + availability.reload + + assert_empty availability.machines_availabilities.where(machine: machine) + end +end