Skip to content

Commit

Permalink
Merge pull request #1511 from senid231/fix-admin-cdr-api-get-related-…
Browse files Browse the repository at this point in the history
…resources

fix admin cdr api get related resources
  • Loading branch information
dmitry-sinina authored Jul 18, 2024
2 parents 2ddf250 + b401581 commit 2002936
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 1 deletion.
22 changes: 22 additions & 0 deletions config/initializers/jsonapi_resources.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,28 @@ def resource_for(type)
end
end

ActionDispatch::Routing::Mapper::Resources.class_eval do
def patched_jsonapi_relationships(options = {})
overrides = options.delete(:overrides) || {}
res = JSONAPI::Resource.resource_for(resource_type_with_module_prefix(@resource_type))
res._relationships.each do |relationship_name, relationship|
related_resource = JSONAPI::Resource.resource_for(resource_type_with_module_prefix(relationship.class_name.underscore))
opts = options.merge(
overrides[relationship_name] || {
controller: "/#{related_resource.to_s.sub(/Resource\z/, '').underscore.pluralize}"
}
)
if relationship.is_a?(JSONAPI::Relationship::ToMany)
jsonapi_links(relationship_name, opts)
jsonapi_related_resources(relationship_name, opts)
else
jsonapi_link(relationship_name, opts)
jsonapi_related_resource(relationship_name, opts)
end
end
end
end

JSONAPI::Resource.singleton_class.prepend(JsonapiResourceClassPatch)

JSONAPI::Resource.register_resource_override 'api/rest/admin', 'Pop', 'Api::Rest::Admin::Pop'
Expand Down
3 changes: 2 additions & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,8 @@ def dasherized_resources(name, options = {}, &block)
namespace :cdr do
jsonapi_resources :cdrs, only: %i[index show] do
member { get :recording }
jsonapi_relationships
# jsonapi_relationships
patched_jsonapi_relationships
end
jsonapi_resources :auth_logs, only: %i[index show] do
end
Expand Down
27 changes: 27 additions & 0 deletions spec/requests/api/rest/admin/cdr/cdrs_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,31 @@
end
end
end

describe 'GET /api/rest/admin/cdr/cdrs/:id/vendor' do
subject do
get json_api_request_path, params: json_api_request_params, headers: json_api_request_headers
end

let(:json_api_request_path) { "#{super()}/#{record_id}/vendor" }
let(:record_id) { cdr.id.to_s }
let(:json_api_request_params) { nil }

let!(:cdr) do
create :cdr, :with_id
end

it 'responds correctly', :aggregate_failures do
subject
expect(response).to have_http_status(200)
expect(response_json).to match(
data: hash_including(
id: cdr.vendor.id.to_s,
type: 'contractors',
attributes: be_present,
relationships: be_present
)
)
end
end
end

0 comments on commit 2002936

Please sign in to comment.