Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion lib/jsonapi/request_parser.rb
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,6 @@ def add_show_related_resources_operation(relationship_type)
source_klass: @source_klass,
source_id: @source_id,
filters: @source_klass.verify_filters(@filters, @context),
include_directives: @include_directives,
sort_criteria: @sort_criteria,
paginator: @paginator,
fields: @fields,
Expand Down
17 changes: 17 additions & 0 deletions test/controllers/controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3441,6 +3441,23 @@ def test_get_related_resources
}, json_response)
end

def test_get_related_resources_filtered
$test_user = Person.find(1)
get :get_related_resources, params: {moon_id: '1', relationship: 'craters', source: "api/v1/moons", filter: {description: 'Small crater'}}
assert_response :success
assert_hash_equals({
data: [
{
id:"A4D3",
type:"craters",
links:{self: "http://test.host/api/v1/craters/A4D3"},
attributes:{code: "A4D3", description: "Small crater"},
relationships:{moon: {links: {self: "http://test.host/api/v1/craters/A4D3/relationships/moon", related: "http://test.host/api/v1/craters/A4D3/moon"}}}
}
]
}, json_response)
end

def test_show_relationship
assert_cacheable_get :show_relationship, params: {crater_id: 'S56D', relationship: 'moon'}

Expand Down
8 changes: 8 additions & 0 deletions test/fixtures/active_record.rb
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,9 @@ class MoonsController < JSONAPI::ResourceController
end

class CratersController < JSONAPI::ResourceController
def context
{current_user: $test_user}
end
end

class LikesController < JSONAPI::ResourceController
Expand Down Expand Up @@ -1092,6 +1095,11 @@ class CraterResource < JSONAPI::Resource

has_one :moon

filter :description, apply: -> (records, value, options) {
fail "context not set" unless options[:context][:current_user] != nil && options[:context][:current_user] == $test_user
records.where(:description => value)
}

def self.verify_key(key, context = nil)
key && String(key)
end
Expand Down