diff --git a/app/serializers/api/v1/base_serializer.rb b/app/serializers/api/v1/base_serializer.rb new file mode 100644 index 0000000000..4689406779 --- /dev/null +++ b/app/serializers/api/v1/base_serializer.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module Api + module V1 + class BaseSerializer + include JSONAPI::Serializer + + def self.url_helpers + Rails.application.routes.url_helpers + end + end + end +end diff --git a/app/serializers/api/v1/customer_serializer.rb b/app/serializers/api/v1/customer_serializer.rb index cea4d53d2e..6f71b39159 100644 --- a/app/serializers/api/v1/customer_serializer.rb +++ b/app/serializers/api/v1/customer_serializer.rb @@ -2,12 +2,14 @@ module Api module V1 - class CustomerSerializer - include JSONAPI::Serializer - + class CustomerSerializer < BaseSerializer attributes :id, :enterprise_id, :first_name, :last_name, :code, :email - belongs_to :enterprise, record_type: :enterprise, serializer: :id + belongs_to :enterprise, links: { + related: ->(object) { + url_helpers.api_v1_enterprise_url(id: object.enterprise_id) + } + } end end end diff --git a/app/serializers/api/v1/enterprise_serializer.rb b/app/serializers/api/v1/enterprise_serializer.rb new file mode 100644 index 0000000000..abbb9cdd3c --- /dev/null +++ b/app/serializers/api/v1/enterprise_serializer.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Api + module V1 + class EnterpriseSerializer < BaseSerializer + attributes :id, :name + + has_many :customers, links: { + related: ->(object) { + url_helpers.api_v1_enterprise_customers_url(enterprise_id: object.id) + } + } + end + end +end diff --git a/spec/requests/api/v1/customers_spec.rb b/spec/requests/api/v1/customers_spec.rb index 9141a49c1e..58c9f7e60a 100644 --- a/spec/requests/api/v1/customers_spec.rb +++ b/spec/requests/api/v1/customers_spec.rb @@ -128,6 +128,9 @@ describe "Customers", type: :request do "data" => { "id" => customer1.enterprise_id.to_s, "type" => "enterprise" + }, + "links" => { + "related" => "http://test.host/api/v1/enterprises/#{customer1.enterprise_id}" } }