require 'swagger_helper' describe 'House of Code API' do

path '/api/<%= "#{api_version}/"%><%= "#{plural_parent_name}/:#{singular_parent_name}_id/" if is_nested?%><%= plural_table_name %>' do
  get 'Get <%= plural_table_name %>' do
    tags '<%= plural_table_name.camelize %>'
    description 'Gets <%= plural_table_name %>'
    produces 'application/json'
    consumes 'application/json'

    parameter name: :all, in: :query, type: :boolean
    parameter name: :page, in: :query, type: :integer
    parameter name: :Authorization, in: :header, required: true, type: :string
    <%= "parameter name: :#{singular_parent_name}_id, in: :path, required:true, type: :integer" if is_nested? %>
    response '200', '<%= plural_table_name.camelize %>' do
      schema '$ref' => '#/definitions/<%= plural_table_name %>'
      run_test!
    end
    response '401', 'Not authorized' do
      schema '$ref' => '#/definitions/error'
      run_test!
    end
  end

  post 'creates a profile' do
    tags '<%= plural_table_name.camelize %>'
    description 'Creates <%= singular_table_name %> with given input'
    produces 'application/json'
    consumes 'application/json'
    <%= "parameter name: :#{singular_parent_name}_id, in: :path, required:true, type: :integer" if is_nested? %>
    parameter name: :<%= singular_table_name %>, in: :body, schema: {
      '$ref' => '#/definitions/<%= singular_table_name %>_input'
    }

    response '201', '<%= singular_table_name.camelize %> created' do
      schema '$ref' => '#/definitions/<%= singular_table_name %>'
      run_test!
    end
    response '401', 'Not authorized' do
      schema '$ref' => '#/definitions/error'
      run_test!
    end
  end
end
path '/api/<%= "#{api_version}/"%><%= "#{plural_parent_name}/:#{singular_parent_name}_id/" if is_nested?%><%= plural_table_name %>/{id}' do
  get 'Get <%= singular_table_name %>' do
    tags '<%= plural_table_name.camelize %>'
    description 'Gets <%= singular_table_name %> with :id'
    produces 'application/json'
    consumes 'application/json'
    <%= "parameter name: :#{singular_parent_name}_id, in: :path, required:true, type: :integer" if is_nested? %>
    parameter name: :id, in: :path, type: :integer, required: true
    parameter name: :Authorization, in: :header, required: true, type: :string
    response '200', '<%= singular_table_name.camelize %>' do
      schema '$ref' => '#/definitions/<%= singular_table_name %>'
      run_test!
    end
    response '401', 'Not authorized' do
      schema '$ref' => '#/definitions/error'
      run_test!
    end
  end

  put 'Update <%= singular_table_name %>' do
    tags '<%= plural_table_name.camelize %>'
    description 'Updates <%= singular_table_name %> with :id'
    produces 'application/json'
    consumes 'application/json'
    <%= "parameter name: :#{singular_parent_name}_id, in: :path, required:true, type: :integer" if is_nested? %>
    parameter name: :id, in: :path, type: :integer, required: true
    parameter name: :Authorization, in: :header, required: true, type: :string
    response '200', '<%= singular_table_name.camelize %>' do
      schema '$ref' => '#/definitions/<%= singular_table_name %>_input'
      run_test!
    end
    response '401', 'Not authorized' do
      schema '$ref' => '#/definitions/error'
      run_test!
    end
  end

  delete 'Delete <%= singular_table_name %> with :id' do
    tags '<%= plural_table_name.camelize %>'
    description 'Deletes <%= singular_table_name %> with :id'
    produces 'application/json'
    consumes 'application/json'
    <%= "parameter name: :#{singular_parent_name}_id, in: :path, required:true, type: :integer" if is_nested? %>
    parameter name: :Authorization, in: :header, required: true, type: :string
    parameter name: :id, in: :path, type: :integer, required: true
    response '200', '<%= singular_table_name.camelize %> deleted' do
      run_test!
    end
    response '401', 'Not authorized' do
      schema '$ref' => '#/definitions/error'
      run_test!
    end
  end
end

end