jsonapi-resources 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5f77e572b55d7703ae7464eb2cc9d90c6d70a9c7
4
- data.tar.gz: 0d7e83c12752c0956068b8e6087174518d27ef8d
3
+ metadata.gz: 7354d2936f1ae7ba14a27b816ba9e9a0b34b0b13
4
+ data.tar.gz: 5dc38e6256771df238ddefd326eae64c72955113
5
5
  SHA512:
6
- metadata.gz: 060bbad86c169a604f0a98f316023fa8d632fd3df406a35b37bf7c4db2d7d770b74c5172aa3270a70a04a091e5126a291f2517d586ee5a32d0f198372e353b27
7
- data.tar.gz: 3c58a190c4d755d322c6643f00450a65308ee21c514ae1c89cd466f8e4adfa20976ab1fbd115c5dcb31d4c352ad5afae932fbf3ca0e030027cd32c75eae524f8
6
+ metadata.gz: 8ffb7b64c39241f8579ca839c46926c2f90a83335bcff101b46b8eb708f4478c8c9b80ba493aa1991a46a0f995b7d395367372d71b6c01ab97edb7266c1674dc
7
+ data.tar.gz: 73b910fe3ef9a75f4b10b2a4bd576e68c42cdcb33224d3f72dc38743cd7808c5b8d54722ca9502787f66183e5a9f28d6131e4afebdda927f3427edabe2fd8349
@@ -284,6 +284,11 @@ module JSONAPI
284
284
  attr_accessor :messages
285
285
  def initialize(messages)
286
286
  @messages = messages
287
+ @key_formatter = JSONAPI.configuration.key_formatter
288
+ end
289
+
290
+ def format_key(key)
291
+ @key_formatter.format(key)
287
292
  end
288
293
 
289
294
  def errors
@@ -292,7 +297,7 @@ module JSONAPI
292
297
  element[1].map do |message|
293
298
  JSONAPI::Error.new(code: JSONAPI::VALIDATION_ERROR,
294
299
  status: :unprocessable_entity,
295
- title: "#{element[0]} - #{message}",
300
+ title: "#{format_key(element[0])} - #{message}",
296
301
  detail: message,
297
302
  path: "/#{element[0]}")
298
303
  end
@@ -309,7 +309,7 @@ module JSONAPI
309
309
  if links_object.length == 0
310
310
  checked_has_many_associations[param] = []
311
311
  else
312
- if links_object.length > 1 || !links_object.has_key?(format_key(association.type))
312
+ if links_object.length > 1 || !links_object.has_key?(unformat_key(association.type).to_s)
313
313
  raise JSONAPI::Exceptions::TypeMismatch.new(links_object[:type])
314
314
  end
315
315
 
@@ -1,5 +1,5 @@
1
1
  module JSONAPI
2
2
  module Resources
3
- VERSION = "0.3.2"
3
+ VERSION = "0.3.3"
4
4
  end
5
5
  end
@@ -1684,7 +1684,7 @@ class PeopleControllerTest < ActionController::TestCase
1684
1684
  assert_equal 2, json_response['errors'].size
1685
1685
  assert_equal JSONAPI::VALIDATION_ERROR, json_response['errors'][0]['code']
1686
1686
  assert_equal JSONAPI::VALIDATION_ERROR, json_response['errors'][1]['code']
1687
- assert_match /date_joined - can't be blank/, response.body
1687
+ assert_match /dateJoined - can't be blank/, response.body
1688
1688
  assert_match /name - can't be blank/, response.body
1689
1689
  end
1690
1690
 
@@ -136,6 +136,15 @@ ActiveRecord::Schema.define do
136
136
  t.timestamps null: false
137
137
  end
138
138
 
139
+ create_table :order_flags, force: true do |t|
140
+ t.string :name
141
+ end
142
+
143
+ create_table :purchase_orders_order_flags, force: true do |t|
144
+ t.references :purchase_order, :order_flag, index: true
145
+ end
146
+ add_index :purchase_orders_order_flags, [:purchase_order_id, :order_flag_id], unique: true, name: "po_flags_idx"
147
+
139
148
  create_table :line_items, force: true do |t|
140
149
  t.integer :purchase_order_id
141
150
  t.string :part_number
@@ -277,12 +286,22 @@ class BreedData
277
286
  end
278
287
 
279
288
  class CustomerOrder < ActiveRecord::Base
289
+ has_many :purchase_orders
280
290
  end
281
291
 
282
292
  class PurchaseOrder < ActiveRecord::Base
293
+ belongs_to :customer
294
+ has_many :line_items
295
+
296
+ has_and_belongs_to_many :order_flags, join_table: :purchase_orders_order_flags
297
+ end
298
+
299
+ class OrderFlag < ActiveRecord::Base
300
+ has_and_belongs_to_many :purchase_orders, join_table: :purchase_orders_order_flags
283
301
  end
284
302
 
285
303
  class LineItem < ActiveRecord::Base
304
+ belongs_to :purchase_order
286
305
  end
287
306
 
288
307
  ### PORO Data - don't do this in a production app
@@ -422,6 +441,9 @@ module Api
422
441
 
423
442
  class LineItemsController < JSONAPI::ResourceController
424
443
  end
444
+
445
+ class OrderFlagsController < JSONAPI::ResourceController
446
+ end
425
447
  end
426
448
 
427
449
  module V7
@@ -433,6 +455,9 @@ module Api
433
455
 
434
456
  class LineItemsController < JSONAPI::ResourceController
435
457
  end
458
+
459
+ class OrderFlagsController < JSONAPI::ResourceController
460
+ end
436
461
  end
437
462
  end
438
463
 
@@ -817,6 +842,13 @@ module Api
817
842
 
818
843
  has_one :customer
819
844
  has_many :line_items
845
+ has_many :order_flags, acts_as_set: true
846
+ end
847
+
848
+ class OrderFlagResource < JSONAPI::Resource
849
+ attributes :name
850
+
851
+ has_many :purchase_orders
820
852
  end
821
853
 
822
854
  class LineItemResource < JSONAPI::Resource
@@ -831,6 +863,7 @@ module Api
831
863
  module V7
832
864
  CustomerResource = V6::CustomerResource.dup
833
865
  PurchaseOrderResource = V6::PurchaseOrderResource.dup
866
+ OrderFlagResource = V6::OrderFlagResource.dup
834
867
  LineItemResource = V6::LineItemResource.dup
835
868
  end
836
869
  end
@@ -1,11 +1,25 @@
1
1
  po_1_li_1:
2
+ id: 1
2
3
  purchase_order_id: 1
3
4
  part_number: 556324
4
5
  quantity: 1
5
6
  item_cost: 45.67
6
7
 
7
8
  po_1_li_2:
9
+ id: 2
8
10
  purchase_order_id: 1
9
11
  part_number: 79324231A
10
12
  quantity: 3
11
- item_cost: 19.99
13
+ item_cost: 19.99
14
+
15
+ li_3:
16
+ id: 3
17
+ part_number: 79324231A
18
+ quantity: 67
19
+ item_cost: 19.99
20
+
21
+ li_4:
22
+ id: 4
23
+ part_number: 5678
24
+ quantity: 2
25
+ item_cost: 199.99
@@ -0,0 +1,7 @@
1
+ rush_order_flag:
2
+ id: 1
3
+ name: Rush
4
+
5
+ ship_together_order_flag:
6
+ id: 2
7
+ name: Ship Together
@@ -564,4 +564,51 @@ class RequestTest < ActionDispatch::IntegrationTest
564
564
  assert_equal 200, status
565
565
  end
566
566
 
567
+ def test_patch_formatted_dasherized_links
568
+ JSONAPI.configuration.route_format = :dasherized_route
569
+ JSONAPI.configuration.json_key_format = :dasherized_key
570
+ patch '/api/v6/line-items/1',
571
+ {
572
+ 'data' => {
573
+ 'id' => '1',
574
+ 'type' => 'line-items',
575
+ 'item-cost' => '23.57',
576
+ 'links' => {
577
+ 'purchase-order' => {
578
+ 'linkage' => {'type' => 'purchase-orders', 'id' => '2'}
579
+ }
580
+ }
581
+ }
582
+ }.to_json, "CONTENT_TYPE" => JSONAPI::MEDIA_TYPE
583
+
584
+ assert_equal 200, status
585
+ end
586
+
587
+ def test_patch_formatted_dasherized_replace_has_many
588
+ JSONAPI.configuration.route_format = :dasherized_route
589
+ JSONAPI.configuration.json_key_format = :dasherized_key
590
+ patch '/api/v6/purchase-orders/2?include=line-items,order-flags',
591
+ {
592
+ 'data' => {
593
+ 'id' => '2',
594
+ 'type' => 'purchase-orders',
595
+ 'links' => {
596
+ 'line-items' => {
597
+ 'linkage' => [
598
+ {'type' => 'line-items', 'id' => '3'},
599
+ {'type' => 'line-items', 'id' => '4'}
600
+ ]
601
+ },
602
+ 'order-flags' => {
603
+ 'linkage' => [
604
+ {'type' => 'order-flags', 'id' => '1'},
605
+ {'type' => 'order-flags', 'id' => '2'}
606
+ ]
607
+ }
608
+ }
609
+ }
610
+ }.to_json, "CONTENT_TYPE" => JSONAPI::MEDIA_TYPE
611
+
612
+ assert_equal 200, status
613
+ end
567
614
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi-resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Gebhardt
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-24 00:00:00.000000000 Z
12
+ date: 2015-04-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -158,6 +158,7 @@ files:
158
158
  - test/fixtures/hair_cuts.yml
159
159
  - test/fixtures/iso_currencies.yml
160
160
  - test/fixtures/line_items.yml
161
+ - test/fixtures/order_flags.yml
161
162
  - test/fixtures/people.yml
162
163
  - test/fixtures/posts.yml
163
164
  - test/fixtures/posts_tags.yml
@@ -214,6 +215,7 @@ test_files:
214
215
  - test/fixtures/hair_cuts.yml
215
216
  - test/fixtures/iso_currencies.yml
216
217
  - test/fixtures/line_items.yml
218
+ - test/fixtures/order_flags.yml
217
219
  - test/fixtures/people.yml
218
220
  - test/fixtures/posts.yml
219
221
  - test/fixtures/posts_tags.yml