jsonapi-serializers 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96dd9615a9ec47ce6f61ba580121e59c363f9ecb
4
- data.tar.gz: c73a9d9a8562c78be05103036321ccd65beb6000
3
+ metadata.gz: 83d249f8286496af92b2caa669aede02fae2def8
4
+ data.tar.gz: 660a8816d3b5fa6bb4c1d173cc7aceabca5c0550
5
5
  SHA512:
6
- metadata.gz: fbe1da4cf4f43dc2a65aa4e7961a51f93a36e4df79c2c40cfd954d21dff648bce5f7ded25a963cc116cbba65d6e6c883d68524f0b79179642fb825024cfba7c7
7
- data.tar.gz: e3c49d17d6cfbc2560369f2aec9f045d568daf78a63234d914979e5d56fb1deb2858bf8a52cf7994bb5a1978799f18f706f22ce38c0ec59fb0974e46ad8dc5c7
6
+ metadata.gz: 1843eb6c3c067686497e28efc782328d1bbaf4571d25bc7fd87bf7bb46188119894db28f4d7072adaa5de3c823881a5b09699b3dcd5e7b5e6dd835f0882b7a9f
7
+ data.tar.gz: 3de93fc69bd9a1350d7246054858c4b623c3b9a7cb84057ba2d322042b6b32937e275f01f8eeb79a5fc98e7a4b6ed72a5d18e6b870f80d90563af83d061ed537
data/README.md CHANGED
@@ -439,6 +439,8 @@ end
439
439
 
440
440
  ## Release notes
441
441
 
442
+ * v0.2.5: Allow disabling ambiguous collection checks for Sequel support.
443
+ * v0.2.4: Improve handling for nil relationship links.
442
444
  * v0.2.3: Support serializers with no attributes.
443
445
  * v0.2.2: Compliance fix for excluding empty relationship objects.
444
446
  * v0.2.1: Compliance fix for self links.
@@ -213,6 +213,7 @@ module JSONAPI
213
213
  options[:include] = options.delete('include') || options[:include]
214
214
  options[:serializer] = options.delete('serializer') || options[:serializer]
215
215
  options[:context] = options.delete('context') || options[:context] || {}
216
+ options[:skip_collection_check] = options.delete('skip_collection_check') || options[:skip_collection_check] || false
216
217
 
217
218
  # Normalize includes.
218
219
  includes = options[:include]
@@ -225,7 +226,7 @@ module JSONAPI
225
226
  include: includes
226
227
  }
227
228
 
228
- if options[:is_collection] && !objects.respond_to?(:each)
229
+ if !options[:skip_collection_check] && options[:is_collection] && !objects.respond_to?(:each)
229
230
  raise JSONAPI::Serializer::AmbiguousCollectionError.new(
230
231
  'Attempted to serialize a single object as a collection.')
231
232
  end
@@ -252,7 +253,7 @@ module JSONAPI
252
253
  # Duck-typing check for a collection being passed without is_collection true.
253
254
  # We always must be told if serializing a collection because the JSON:API spec distinguishes
254
255
  # how to serialize null single resources vs. empty collections.
255
- if objects.respond_to?(:each)
256
+ if !options[:skip_collection_check] && objects.respond_to?(:each)
256
257
  raise JSONAPI::Serializer::AmbiguousCollectionError.new(
257
258
  'Must provide `is_collection: true` to `serialize` when serializing collections.')
258
259
  end
@@ -444,4 +445,4 @@ module JSONAPI
444
445
  end
445
446
  class << self; protected :merge_relationship_path; end
446
447
  end
447
- end
448
+ end
@@ -1,5 +1,5 @@
1
1
  module JSONAPI
2
2
  module Serializer
3
- VERSION = '0.2.4'
3
+ VERSION = '0.2.5'
4
4
  end
5
5
  end
@@ -333,6 +333,15 @@ describe JSONAPI::Serializer do
333
333
  'data' => serialize_primary(post, {serializer: MyApp::PostSerializer}),
334
334
  })
335
335
  end
336
+ it 'can serialize a single object with an `each` method by passing skip_collection_check: true' do
337
+ post = create(:post)
338
+ post.define_singleton_method(:each) do
339
+ "defining this just to defeat the duck-type check"
340
+ end
341
+ expect(JSONAPI::Serializer.serialize(post, skip_collection_check: true)).to eq({
342
+ 'data' => serialize_primary(post, {serializer: MyApp::PostSerializer}),
343
+ })
344
+ end
336
345
  it 'can serialize a collection' do
337
346
  posts = create_list(:post, 2)
338
347
  expect(JSONAPI::Serializer.serialize(posts, is_collection: true)).to eq({
@@ -696,4 +705,4 @@ describe JSONAPI::Serializer do
696
705
  xit 'is correctly passed through all serializers' do
697
706
  end
698
707
  end
699
- end
708
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi-serializers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Fotinakis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-08 00:00:00.000000000 Z
11
+ date: 2015-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport