From cd05053f109431e6c9adc6938d38dc78742b82cf Mon Sep 17 00:00:00 2001 From: Jonathan Wrobel Date: Fri, 1 Jun 2018 23:49:28 -0700 Subject: [PATCH] Allows for manual scope to be passed - Allows for manual scope to be used if passed as option --- lib/jsonapi_compliable/base.rb | 2 +- spec/jsonapi_compliable_spec.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/jsonapi_compliable/base.rb b/lib/jsonapi_compliable/base.rb index e9177d6..dd487e7 100644 --- a/lib/jsonapi_compliable/base.rb +++ b/lib/jsonapi_compliable/base.rb @@ -288,7 +288,7 @@ def render_jsonapi(scope, opts = {}) opts = default_jsonapi_render_options.merge(opts) opts = Util::RenderOptions.generate(scope, query_hash, opts) opts[:expose][:context] = self - opts[:include] = deserialized_params.include_directive if force_includes? + opts[:include] ||= deserialized_params.include_directive if force_includes? perform_render_jsonapi(opts) end diff --git a/spec/jsonapi_compliable_spec.rb b/spec/jsonapi_compliable_spec.rb index f7d116a..24fb917 100644 --- a/spec/jsonapi_compliable_spec.rb +++ b/spec/jsonapi_compliable_spec.rb @@ -124,5 +124,15 @@ def config(obj) instance.render_jsonapi(Author.all, scope: false) end end + context 'when passing manual scope' do + it 'passes the manually included scope' do + author = Author.create!(first_name: 'Stephen', last_name: 'King') + author.books.create(title: "The Shining", genre: Genre.new(name: 'horror')) + + expect(instance).to receive(:perform_render_jsonapi).with(hash_including(include: { foo: {}})) + instance.render_jsonapi(Author.all, { include: { foo: {} }, scope: false, meta: { foo: 'bar' } }) + end + end + end end