# Copyright (C) 2024 Manuel Bustillo

# Copyright (C) 2024-2025 LibreWeddingPlanner contributors

# frozen_string_literal: true

require 'swagger_helper'

RSpec.describe 'tables_arrangements' do
  path '/{slug}/tables_arrangements' do
    get('list tables arrangements') do
      tags 'Tables Arrangements'
      produces 'application/json'
      parameter Swagger::Schema::SLUG
      response(200, 'successful') do
        schema type: :array,
               items: {
                 type: :object,
                 required: %i[id name discomfort],
                 properties: {
                   id: { type: :string, format: :uuid },
                   name: { type: :string },
                   discomfort: { type: :integer }
                 }
               }
        xit
      end
      regular_api_responses
    end
  end

  path '/{slug}/tables_arrangements/{id}' do
    get('show tables arrangement') do
      tags 'Tables Arrangements'
      produces 'application/json'
      parameter Swagger::Schema::SLUG
      parameter Swagger::Schema::ID
      response(200, 'successful') do
        schema type: :object,
               required: %i[id tables],
               properties: {
                 id: { type: :string, format: :uuid },
                 tables: {

                   type: :array,
                   items: {
                     type: :object,
                     required: %i[number guests discomfort],
                     properties: {
                       number: { type: :integer },
                       guests: {
                         type: :array,
                         items: {
                           type: :object,
                           required: %i[id name color],
                           properties: {
                             id: { type: :string, format: :uuid },
                             name: { type: :string },
                             color: { type: :string }
                           }
                         }
                       },
                       discomfort: {
                         type: :object,
                         required: %i[discomfort breakdown],
                         properties: {
                           discomfort: { type: :number },
                           breakdown: {
                             type: :object,
                             required: %i[table_size_penalty cohesion_penalty],
                             properties: {
                               table_size_penalty: { type: :number },
                               cohesion_penalty: { type: :number }
                             }
                           }
                         }
                       }
                     }
                   }
                 }
               }
        xit
      end
      regular_api_responses
    end
  end
end