diff --git a/app/controllers/api/v1/base_controller.rb b/app/controllers/api/v1/base_controller.rb index 4c43813e9..96744578e 100644 --- a/app/controllers/api/v1/base_controller.rb +++ b/app/controllers/api/v1/base_controller.rb @@ -5,12 +5,12 @@ module Api class BaseController < ApiController rescue_from ActionController::ParameterMissing do |e| logger.error e.message - render json: {}, status: :bad_request + render jsonapi: {}, status: :bad_request end rescue_from ActiveRecord::RecordNotFound do |e| logger.error e.message - render json: {}, status: :not_found + render jsonapi: {}, status: :not_found end end end diff --git a/app/controllers/api/v1/inventories_controller.rb b/app/controllers/api/v1/inventories_controller.rb index 136801caa..e8c8ad6b4 100644 --- a/app/controllers/api/v1/inventories_controller.rb +++ b/app/controllers/api/v1/inventories_controller.rb @@ -9,18 +9,18 @@ module Api def index inventories = @team.repositories.page(params[:page]).per(params[:page_size]) - render json: inventories, each_serializer: InventorySerializer + render jsonapi: inventories, each_serializer: InventorySerializer end def show - render json: @inventory, serializer: InventorySerializer + render jsonapi: @inventory, serializer: InventorySerializer end private def load_team @team = Team.find(params.require(:team_id)) - return render json: {}, status: :forbidden unless can_read_team?(@team) + return render jsonapi: {}, status: :forbidden unless can_read_team?(@team) end def load_inventory diff --git a/app/controllers/api/v1/inventory_items_controller.rb b/app/controllers/api/v1/inventory_items_controller.rb index 6edf63454..0971c1d78 100644 --- a/app/controllers/api/v1/inventory_items_controller.rb +++ b/app/controllers/api/v1/inventory_items_controller.rb @@ -15,7 +15,7 @@ module Api repository_cells: Extends::REPOSITORY_SEARCH_INCLUDES ).page(params.dig(:page, :number)) .per(params.dig(:page, :size)) - render json: items, + render jsonapi: items, each_serializer: InventoryItemSerializer, include: :inventory_cells end @@ -43,7 +43,7 @@ module Api else item = @inventory.repository_rows.create!(attributes) end - render json: item, + render jsonapi: item, serializer: InventoryItemSerializer, include: :inventory_cells, status: :created @@ -53,7 +53,7 @@ module Api def load_team @team = Team.find(params.require(:team_id)) - return render json: {}, status: :forbidden unless can_read_team?(@team) + return render jsonapi: {}, status: :forbidden unless can_read_team?(@team) end def load_inventory diff --git a/app/controllers/api/v1/teams_controller.rb b/app/controllers/api/v1/teams_controller.rb index fdf00d14e..2c8630098 100644 --- a/app/controllers/api/v1/teams_controller.rb +++ b/app/controllers/api/v1/teams_controller.rb @@ -5,18 +5,18 @@ module Api def index teams = current_user.teams.page(params[:page]).per(params[:page_size]) - render json: teams, each_serializer: TeamSerializer + render jsonapi: teams, each_serializer: TeamSerializer end def show - render json: @team, serializer: TeamSerializer + render jsonapi: @team, serializer: TeamSerializer end private def load_team @team = Team.find(params.require(:id)) - return render json: {}, status: :forbidden unless can_read_team?(@team) + return render jsonapi: {}, status: :forbidden unless can_read_team?(@team) end end end diff --git a/config/initializers/active_model_serializer.rb b/config/initializers/active_model_serializer.rb index 692906d54..0258f46a7 100644 --- a/config/initializers/active_model_serializer.rb +++ b/config/initializers/active_model_serializer.rb @@ -1,4 +1,6 @@ # frozen_string_literal: true +require 'active_model_serializers/register_jsonapi_renderer' + ActiveModelSerializers.config.adapter = :json_api ActiveModelSerializers.config.key_transform = :unaltered diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb index 72b582a0a..dc1899682 100644 --- a/config/initializers/mime_types.rb +++ b/config/initializers/mime_types.rb @@ -2,4 +2,3 @@ # Add new mime types for use in respond_to blocks: # Mime::Type.register "text/richtext", :rtf -Mime::Type.register 'application/vnd.api+json', :json diff --git a/config/routes.rb b/config/routes.rb index 750fe3950..5c3819723 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -545,7 +545,10 @@ Rails.application.routes.draw do resources :teams, only: %i(index show) do resources :inventories, only: %i(index show) do get 'columns', to: 'inventory_columns#index' - resources :inventory_items, only: %i(index create), path: 'items' + resources :inventory_items, + only: %i(index create), + path: 'items', + as: :items end end resources :users, only: %i(show) do diff --git a/spec/requests/api/v1/inventory_items_controller_spec.rb b/spec/requests/api/v1/inventory_items_controller_spec.rb index 80e28fc80..5da4f1cae 100644 --- a/spec/requests/api/v1/inventory_items_controller_spec.rb +++ b/spec/requests/api/v1/inventory_items_controller_spec.rb @@ -75,7 +75,7 @@ RSpec.describe 'Api::V1::InventoryItemsController', type: :request do get api_v1_team_inventory_items_path( team_id: @teams.first.id, inventory_id: @teams.first.repositories.first.id - ), params: { page_size: 100 }, headers: @valid_headers + ), params: { page: { size: 100 } }, headers: @valid_headers expect { hash_body = json }.not_to raise_exception expect(hash_body[:data]).to match( ActiveModelSerializers::SerializableResource