jsonapi-resources 0.6.2 → 0.7.0

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.
@@ -116,6 +116,7 @@ end
116
116
  JSONAPI.configuration.route_format = :underscored_route
117
117
  TestApp.routes.draw do
118
118
  jsonapi_resources :people
119
+ jsonapi_resources :special_people
119
120
  jsonapi_resources :comments
120
121
  jsonapi_resources :firms
121
122
  jsonapi_resources :tags
@@ -142,6 +143,9 @@ TestApp.routes.draw do
142
143
  jsonapi_resources :boats
143
144
  jsonapi_resources :flat_posts
144
145
 
146
+ jsonapi_resources :books
147
+ jsonapi_resources :authors
148
+
145
149
  namespace :api do
146
150
  namespace :v1 do
147
151
  jsonapi_resources :people
@@ -225,6 +229,9 @@ TestApp.routes.draw do
225
229
  jsonapi_resources :customers
226
230
  jsonapi_resources :purchase_orders
227
231
  jsonapi_resources :line_items
232
+ jsonapi_resources :categories
233
+
234
+ jsonapi_resources :clients
228
235
  end
229
236
 
230
237
  namespace :v8 do
@@ -63,6 +63,20 @@ end
63
63
 
64
64
  module MyModule
65
65
  class MyNamespacedResource < JSONAPI::Resource
66
+ model_name "Person"
67
+ has_many :related
68
+ end
69
+
70
+ class RelatedResource < JSONAPI::Resource
71
+ model_name "Comment"
72
+ end
73
+ end
74
+
75
+ module MyAPI
76
+ class MyNamespacedResource < MyModule::MyNamespacedResource
77
+ end
78
+
79
+ class RelatedResource < MyModule::RelatedResource
66
80
  end
67
81
  end
68
82
 
@@ -72,7 +86,11 @@ class ResourceTest < ActiveSupport::TestCase
72
86
  end
73
87
 
74
88
  def test_model_name
75
- assert_equal(PostResource._model_name, 'Post')
89
+ assert_equal("Post", PostResource._model_name)
90
+ end
91
+
92
+ def test_model_name_of_subclassed_non_abstract_resource
93
+ assert_equal("Firm", FirmResource._model_name)
76
94
  end
77
95
 
78
96
  def test_model
@@ -83,6 +101,47 @@ class ResourceTest < ActiveSupport::TestCase
83
101
  assert_equal(MyModule::MyNamespacedResource.module_path, 'my_module/')
84
102
  end
85
103
 
104
+ def test_resource_for_root_resource
105
+ assert_raises NameError do
106
+ JSONAPI::Resource.resource_for('related')
107
+ end
108
+ end
109
+
110
+ def test_resource_for_with_namespaced_paths
111
+ assert_equal(JSONAPI::Resource.resource_for('my_module/related'), MyModule::RelatedResource)
112
+ assert_equal(PostResource.resource_for('my_module/related'), MyModule::RelatedResource)
113
+ assert_equal(MyModule::MyNamespacedResource.resource_for('my_module/related'), MyModule::RelatedResource)
114
+ end
115
+
116
+ def test_resource_for_resource_does_not_exist_at_root
117
+ assert_raises NameError do
118
+ ArticleResource.resource_for('related')
119
+ end
120
+ assert_raises NameError do
121
+ JSONAPI::Resource.resource_for('related')
122
+ end
123
+ end
124
+
125
+ def test_resource_for_namespaced_resource
126
+ assert_equal(MyModule::MyNamespacedResource.resource_for('related'), MyModule::RelatedResource)
127
+ end
128
+
129
+ def test_relationship_parent_point_to_correct_resource
130
+ assert_equal MyModule::MyNamespacedResource, MyModule::MyNamespacedResource._relationships[:related].parent_resource
131
+ end
132
+
133
+ def test_relationship_parent_option_point_to_correct_resource
134
+ assert_equal MyModule::MyNamespacedResource, MyModule::MyNamespacedResource._relationships[:related].options[:parent_resource]
135
+ end
136
+
137
+ def test_derived_resources_relationships_parent_point_to_correct_resource
138
+ assert_equal MyAPI::MyNamespacedResource, MyAPI::MyNamespacedResource._relationships[:related].parent_resource
139
+ end
140
+
141
+ def test_derived_resources_relationships_parent_options_point_to_correct_resource
142
+ assert_equal MyAPI::MyNamespacedResource, MyAPI::MyNamespacedResource._relationships[:related].options[:parent_resource]
143
+ end
144
+
86
145
  def test_base_resource_abstract
87
146
  assert BaseResource._abstract
88
147
  end
@@ -240,7 +299,7 @@ class ResourceTest < ActiveSupport::TestCase
240
299
 
241
300
  # define apply_filters method on post resource to not respect filters
242
301
  PostResource.instance_eval do
243
- def apply_sort(records, criteria)
302
+ def apply_sort(records, criteria, context = {})
244
303
  # :nocov:
245
304
  records
246
305
  # :nocov:
@@ -253,7 +312,7 @@ class ResourceTest < ActiveSupport::TestCase
253
312
  ensure
254
313
  # reset method to original implementation
255
314
  PostResource.instance_eval do
256
- def apply_sort(records, criteria)
315
+ def apply_sort(records, criteria, context = {})
257
316
  # :nocov:
258
317
  super
259
318
  # :nocov:
@@ -471,4 +530,11 @@ class ResourceTest < ActiveSupport::TestCase
471
530
  end
472
531
  assert_equal(err.error_messages[:base], ['Boom! Error added in after_save callback.'])
473
532
  end
533
+
534
+ def test_resource_for_model_use_hint
535
+ special_person = Person.create!(name: 'Special', date_joined: Date.today, special: true)
536
+ special_resource = SpecialPersonResource.new(special_person, nil)
537
+ resource_model = SpecialPersonResource.records({}).first # simulate a find
538
+ assert_equal(SpecialPersonResource, SpecialPersonResource.resource_for_model(resource_model))
539
+ end
474
540
  end
@@ -1742,7 +1742,7 @@ class SerializerTest < ActionDispatch::IntegrationTest
1742
1742
  def meta(options)
1743
1743
  {
1744
1744
  fixed: 'Hardcoded value',
1745
- computed: "#{self.class._type.to_s}: #{options[:serializer].url_generator.self_link(self)}"
1745
+ computed: "#{self.class._type.to_s}: #{options[:serializer].link_builder.self_link(self)}"
1746
1746
  }
1747
1747
  end
1748
1748
  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.6.2
4
+ version: 0.7.0
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-11-18 00:00:00.000000000 Z
12
+ date: 2015-12-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -157,6 +157,7 @@ files:
157
157
  - test/controllers/controller_test.rb
158
158
  - test/fixtures/active_record.rb
159
159
  - test/fixtures/author_details.yml
160
+ - test/fixtures/book_authors.yml
160
161
  - test/fixtures/book_comments.yml
161
162
  - test/fixtures/books.yml
162
163
  - test/fixtures/categories.yml
@@ -238,6 +239,7 @@ test_files:
238
239
  - test/controllers/controller_test.rb
239
240
  - test/fixtures/active_record.rb
240
241
  - test/fixtures/author_details.yml
242
+ - test/fixtures/book_authors.yml
241
243
  - test/fixtures/book_comments.yml
242
244
  - test/fixtures/books.yml
243
245
  - test/fixtures/categories.yml