Skip to content

Commit 8ce528c

Browse files
authored
Merge pull request #215 from devforce/params-context
Make context accessible when customizing relationship params
2 parents aa36551 + 0286ce4 commit 8ce528c

File tree

3 files changed

+24
-10
lines changed

3 files changed

+24
-10
lines changed

lib/graphiti/sideload.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ def load(parents, query, graph_parent)
197197

198198
with_error_handling Errors::SideloadParamsError do
199199
params = load_params(parents, query)
200-
params_proc&.call(params, parents)
200+
params_proc&.call(params, parents, context)
201201
return [] if blank_query?(params)
202202
opts = load_options(parents, query)
203203
opts[:sideload] = self
@@ -434,5 +434,9 @@ def evaluate_flag(flag)
434434
!!flag
435435
end
436436
end
437+
438+
def context
439+
Graphiti.context[:object]
440+
end
437441
end
438442
end

lib/graphiti/util/link.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def params
6363
params[:filter] = @sideload.base_filter([@model])
6464
end
6565

66-
@sideload.params_proc&.call(params, [@model])
66+
@sideload.params_proc&.call(params, [@model], context)
6767
end
6868
end
6969

@@ -75,6 +75,10 @@ def path
7575
end
7676
path
7777
end
78+
79+
def context
80+
Graphiti.context[:object]
81+
end
7882
end
7983
end
8084
end

spec/sideload_spec.rb

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -566,16 +566,16 @@ def self.name
566566

567567
describe ".params" do
568568
before do
569-
instance.class.params do |hash, parents, query|
569+
instance.class.params do |hash, parents, context|
570570
hash[:parents] = parents
571-
hash[:query] = query
571+
hash[:context] = context
572572
end
573573
end
574574

575575
it "sets params proc" do
576-
hash, parents, query = {}, [double("parent")], double("query")
577-
instance.params_proc.call(hash, parents, query)
578-
expect(hash).to eq(parents: parents, query: query)
576+
hash, parents, context = {}, [double("parent")], double("context")
577+
instance.params_proc.call(hash, parents, context)
578+
expect(hash).to eq(parents: parents, context: context)
579579
end
580580
end
581581

@@ -655,19 +655,25 @@ def self.name
655655

656656
context "when params customization" do
657657
before do
658-
instance.class.params do |hash, parents|
658+
instance.class.params do |hash, parents, context|
659659
hash[:a] = parents
660+
hash[:b] = context.current_user
660661
end
661662
end
662663

663664
it "is respected" do
665+
current_user = double
664666
expected = {
665667
foo: "bar",
666-
a: parents
668+
a: parents,
669+
b: current_user
667670
}
668671
expect(resource_class).to receive(:_all)
669672
.with(expected, anything, {type: :positions})
670-
instance.load(parents, query, nil)
673+
674+
Graphiti.with_context(OpenStruct.new(current_user: current_user)) do
675+
instance.load(parents, query, nil)
676+
end
671677
end
672678
end
673679

0 commit comments

Comments
 (0)