contentful 2.1.3 → 2.2.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.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/Gemfile.lock +24 -26
  4. data/README.md +5 -0
  5. data/coverage/.last_run.json +1 -1
  6. data/coverage/.resultset.json +2399 -460
  7. data/coverage/assets/{0.10.1 → 0.10.2}/application.css +0 -0
  8. data/coverage/assets/{0.10.1 → 0.10.2}/application.js +0 -0
  9. data/coverage/assets/{0.10.1 → 0.10.2}/colorbox/border.png +0 -0
  10. data/coverage/assets/{0.10.1 → 0.10.2}/colorbox/controls.png +0 -0
  11. data/coverage/assets/{0.10.1 → 0.10.2}/colorbox/loading.gif +0 -0
  12. data/coverage/assets/{0.10.1 → 0.10.2}/colorbox/loading_background.png +0 -0
  13. data/coverage/assets/{0.10.1 → 0.10.2}/favicon_green.png +0 -0
  14. data/coverage/assets/{0.10.1 → 0.10.2}/favicon_red.png +0 -0
  15. data/coverage/assets/{0.10.1 → 0.10.2}/favicon_yellow.png +0 -0
  16. data/coverage/assets/{0.10.1 → 0.10.2}/loading.gif +0 -0
  17. data/coverage/assets/{0.10.1 → 0.10.2}/magnify.png +0 -0
  18. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  19. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  20. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  21. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  22. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  23. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  24. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  25. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  26. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-icons_222222_256x240.png +0 -0
  27. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  28. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-icons_454545_256x240.png +0 -0
  29. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-icons_888888_256x240.png +0 -0
  30. data/coverage/assets/{0.10.1 → 0.10.2}/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  31. data/coverage/index.html +17490 -3213
  32. data/doc/Contentful.html +3 -3
  33. data/doc/Contentful/AccessDenied.html +1 -1
  34. data/doc/Contentful/Array.html +1 -1
  35. data/doc/Contentful/ArrayCoercion.html +7 -7
  36. data/doc/Contentful/ArrayLike.html +1 -1
  37. data/doc/Contentful/Asset.html +1 -1
  38. data/doc/Contentful/BadGateway.html +159 -0
  39. data/doc/Contentful/BadRequest.html +1 -1
  40. data/doc/Contentful/BaseCoercion.html +1 -1
  41. data/doc/Contentful/BaseResource.html +2 -2
  42. data/doc/Contentful/BooleanCoercion.html +1 -1
  43. data/doc/Contentful/Client.html +20 -26
  44. data/doc/Contentful/ContentType.html +7 -1
  45. data/doc/Contentful/ContentTypeCache.html +1 -1
  46. data/doc/Contentful/DateCoercion.html +1 -1
  47. data/doc/Contentful/DeletedAsset.html +1 -1
  48. data/doc/Contentful/DeletedEntry.html +1 -1
  49. data/doc/Contentful/Entry.html +1 -1
  50. data/doc/Contentful/Error.html +16 -28
  51. data/doc/Contentful/Field.html +1 -1
  52. data/doc/Contentful/FieldsResource.html +1 -1
  53. data/doc/Contentful/File.html +8 -308
  54. data/doc/Contentful/FloatCoercion.html +1 -1
  55. data/doc/Contentful/IntegerCoercion.html +1 -1
  56. data/doc/Contentful/Link.html +1 -1
  57. data/doc/Contentful/LinkCoercion.html +1 -1
  58. data/doc/Contentful/Locale.html +1 -1
  59. data/doc/Contentful/Location.html +1 -1
  60. data/doc/Contentful/LocationCoercion.html +1 -1
  61. data/doc/Contentful/NotFound.html +1 -1
  62. data/doc/Contentful/ObjectCoercion.html +2 -2
  63. data/doc/Contentful/RateLimitExceeded.html +183 -2
  64. data/doc/Contentful/Request.html +1 -1
  65. data/doc/Contentful/ResourceBuilder.html +1 -1
  66. data/doc/Contentful/Response.html +72 -1
  67. data/doc/Contentful/ServerError.html +1 -1
  68. data/doc/Contentful/ServiceUnavailable.html +1 -1
  69. data/doc/Contentful/Space.html +1 -1
  70. data/doc/Contentful/StringCoercion.html +1 -1
  71. data/doc/Contentful/Support.html +49 -27
  72. data/doc/Contentful/SymbolCoercion.html +1 -1
  73. data/doc/Contentful/Sync.html +1 -1
  74. data/doc/Contentful/SyncPage.html +1 -1
  75. data/doc/Contentful/TextCoercion.html +1 -1
  76. data/doc/Contentful/Unauthorized.html +1 -1
  77. data/doc/Contentful/UnparsableJson.html +1 -1
  78. data/doc/Contentful/UnparsableResource.html +1 -1
  79. data/doc/_index.html +8 -1
  80. data/doc/class_list.html +1 -1
  81. data/doc/file.CHANGELOG.html +15 -1
  82. data/doc/file.LICENSE.html +1 -1
  83. data/doc/file.README.html +8 -1
  84. data/doc/index.html +8 -1
  85. data/doc/method_list.html +147 -155
  86. data/doc/top-level-namespace.html +1 -1
  87. data/lib/contentful/asset.rb +2 -2
  88. data/lib/contentful/base_resource.rb +3 -3
  89. data/lib/contentful/client.rb +3 -3
  90. data/lib/contentful/coercions.rb +1 -20
  91. data/lib/contentful/content_type.rb +2 -0
  92. data/lib/contentful/entry.rb +4 -2
  93. data/lib/contentful/error.rb +168 -29
  94. data/lib/contentful/fields_resource.rb +8 -5
  95. data/lib/contentful/file.rb +14 -6
  96. data/lib/contentful/response.rb +5 -4
  97. data/lib/contentful/support.rb +4 -1
  98. data/lib/contentful/version.rb +1 -1
  99. data/spec/asset_spec.rb +9 -0
  100. data/spec/content_type_spec.rb +10 -0
  101. data/spec/deleted_asset_spec.rb +10 -0
  102. data/spec/deleted_entry_spec.rb +10 -0
  103. data/spec/entry_spec.rb +11 -0
  104. data/spec/error_class_spec.rb +244 -3
  105. data/spec/field_spec.rb +21 -0
  106. data/spec/file_spec.rb +10 -0
  107. data/spec/fixtures/json_responses/400_details_errors_object.json +14 -0
  108. data/spec/fixtures/json_responses/400_details_errors_string.json +12 -0
  109. data/spec/fixtures/json_responses/400_details_string.json +8 -0
  110. data/spec/fixtures/json_responses/403_reasons.json +13 -0
  111. data/spec/fixtures/json_responses/404_id.json +11 -0
  112. data/spec/fixtures/json_responses/404_type.json +10 -0
  113. data/spec/fixtures/json_responses/default_400.json +7 -0
  114. data/spec/fixtures/json_responses/default_401.json +7 -0
  115. data/spec/fixtures/json_responses/default_403.json +7 -0
  116. data/spec/fixtures/json_responses/default_404.json +7 -0
  117. data/spec/fixtures/json_responses/default_429.json +7 -0
  118. data/spec/fixtures/json_responses/default_500.json +7 -0
  119. data/spec/fixtures/json_responses/default_502.json +7 -0
  120. data/spec/fixtures/json_responses/default_503.json +7 -0
  121. data/spec/fixtures/json_responses/other_error.json +9 -0
  122. data/spec/fixtures/json_responses/other_error_no_details.json +8 -0
  123. data/spec/fixtures/json_responses/other_error_no_message.json +8 -0
  124. data/spec/fixtures/json_responses/other_error_no_request_id.json +8 -0
  125. data/spec/fixtures/json_responses/other_error_nothing.json +6 -0
  126. data/spec/link_spec.rb +9 -0
  127. data/spec/support/json_responses.rb +4 -2
  128. metadata +66 -27
@@ -5,9 +5,12 @@ module Contentful
5
5
  # Transforms CamelCase into snake_case (taken from zucker)
6
6
  #
7
7
  # @param [String] object camelCaseName
8
+ # @param [Boolean] skip if true, skips returns original object
8
9
  #
9
10
  # @return [String] snake_case_name
10
- def snakify(object)
11
+ def snakify(object, skip = false)
12
+ return object if skip
13
+
11
14
  String(object)
12
15
  .gsub(/::/, '/')
13
16
  .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
@@ -1,5 +1,5 @@
1
1
  # Contentful Namespace
2
2
  module Contentful
3
3
  # Gem Version
4
- VERSION = '2.1.3'
4
+ VERSION = '2.2.0'
5
5
  end
data/spec/asset_spec.rb CHANGED
@@ -156,4 +156,13 @@ describe Contentful::Asset do
156
156
  }
157
157
  end
158
158
  end
159
+
160
+ describe 'camelCase' do
161
+ it 'properties now are accessed with camelcase' do
162
+ vcr('asset') {
163
+ asset = create_client(use_camel_case: true).asset('nyancat')
164
+ expect(asset.file.fileName).to eq 'Nyan_cat_250px_frame.png'
165
+ }
166
+ end
167
+ end
159
168
  end
@@ -36,4 +36,14 @@ describe Contentful::ContentType do
36
36
  expect(content_type).to respond_to :display_field
37
37
  end
38
38
  end
39
+
40
+ describe 'camel case' do
41
+ it 'supports camel case' do
42
+ vcr('content_type') {
43
+ content_type = create_client(use_camel_case: true).content_type 'cat'
44
+
45
+ expect(content_type.displayField).to eq 'name'
46
+ }
47
+ end
48
+ end
39
49
  end
@@ -25,4 +25,14 @@ describe 'DeletedAsset' do
25
25
  expect(deleted_asset.created_at).to be_a DateTime
26
26
  end
27
27
  end
28
+
29
+ describe 'camel case' do
30
+ it 'supports camel case' do
31
+ vcr('sync_deleted_asset') {
32
+ deleted_asset = create_client(use_camel_case: true).sync(initial: true, type: 'DeletedAsset').first_page.items[0]
33
+
34
+ expect(deleted_asset.createdAt).to be_a DateTime
35
+ }
36
+ end
37
+ end
28
38
  end
@@ -25,4 +25,14 @@ describe 'DeletedEntry' do
25
25
  expect(deleted_entry.created_at).to be_a DateTime
26
26
  end
27
27
  end
28
+
29
+ describe 'camel case' do
30
+ it 'supports camel case' do
31
+ vcr('sync_deleted_entry') {
32
+ deleted_entry = create_client(use_camel_case: true).sync(initial: true, type: 'DeletedEntry').first_page.items[0]
33
+
34
+ expect(deleted_entry.createdAt).to be_a DateTime
35
+ }
36
+ end
37
+ end
28
38
  end
data/spec/entry_spec.rb CHANGED
@@ -358,4 +358,15 @@ describe Contentful::Entry do
358
358
  }
359
359
  end
360
360
  end
361
+
362
+ describe 'camel case' do
363
+ it 'supports camel case' do
364
+ vcr('entry') {
365
+ entry = create_client(use_camel_case: true).entry 'nyancat'
366
+
367
+ expect(entry.bestFriend.name).to eq 'Happy Cat'
368
+ expect(entry.createdAt).to be_a DateTime
369
+ }
370
+ end
371
+ end
361
372
  end
@@ -11,9 +11,251 @@ describe Contentful::Error do
11
11
 
12
12
  describe '#message' do
13
13
  it 'returns the message found in the response json' do
14
+ message = "HTTP status code: 404\n"\
15
+ "Message: The resource could not be found.\n"\
16
+ "Details: {\"type\"=>\"Entry\", \"space\"=>\"cfexampleapi\", \"id\"=>\"not found\"}\n"\
17
+ "Request ID: 85f-351076632"
14
18
  expect(Contentful::Error.new(r).message).not_to be_nil
15
- expect(Contentful::Error.new(r).message).to \
16
- eq json_fixture('not_found')['message']
19
+ expect(Contentful::Error.new(r).message).to eq message
20
+ end
21
+
22
+ describe 'message types' do
23
+ describe 'default messages' do
24
+ it '400' do
25
+ response = Contentful::Response.new raw_fixture('default_400', 400)
26
+ error = Contentful::Error[response.raw.status].new(response)
27
+
28
+ message = "HTTP status code: 400\n"\
29
+ "Message: The request was malformed or missing a required parameter.\n"\
30
+ "Request ID: 85f-351076632"
31
+ expect(error.message).to eq message
32
+ end
33
+
34
+ it '401' do
35
+ response = Contentful::Response.new raw_fixture('default_401', 401)
36
+ error = Contentful::Error[response.raw.status].new(response)
37
+
38
+ message = "HTTP status code: 401\n"\
39
+ "Message: The authorization token was invalid.\n"\
40
+ "Request ID: 85f-351076632"
41
+ expect(error.message).to eq message
42
+ end
43
+
44
+ it '403' do
45
+ response = Contentful::Response.new raw_fixture('default_403', 403)
46
+ error = Contentful::Error[response.raw.status].new(response)
47
+
48
+ message = "HTTP status code: 403\n"\
49
+ "Message: The specified token does not have access to the requested resource.\n"\
50
+ "Request ID: 85f-351076632"
51
+ expect(error.message).to eq message
52
+ end
53
+
54
+ it '404' do
55
+ response = Contentful::Response.new raw_fixture('default_404', 404)
56
+ error = Contentful::Error[response.raw.status].new(response)
57
+
58
+ message = "HTTP status code: 404\n"\
59
+ "Message: The requested resource or endpoint could not be found.\n"\
60
+ "Request ID: 85f-351076632"
61
+ expect(error.message).to eq message
62
+ end
63
+
64
+ it '429' do
65
+ response = Contentful::Response.new raw_fixture('default_429', 429)
66
+ error = Contentful::Error[response.raw.status].new(response)
67
+
68
+ message = "HTTP status code: 429\n"\
69
+ "Message: Rate limit exceeded. Too many requests.\n"\
70
+ "Request ID: 85f-351076632"
71
+ expect(error.message).to eq message
72
+ end
73
+
74
+ it '500' do
75
+ response = Contentful::Response.new raw_fixture('default_500', 500)
76
+ error = Contentful::Error[response.raw.status].new(response)
77
+
78
+ message = "HTTP status code: 500\n"\
79
+ "Message: Internal server error.\n"\
80
+ "Request ID: 85f-351076632"
81
+ expect(error.message).to eq message
82
+ end
83
+
84
+ it '502' do
85
+ response = Contentful::Response.new raw_fixture('default_502', 502)
86
+ error = Contentful::Error[response.raw.status].new(response)
87
+
88
+ message = "HTTP status code: 502\n"\
89
+ "Message: The requested space is hibernated.\n"\
90
+ "Request ID: 85f-351076632"
91
+ expect(error.message).to eq message
92
+ end
93
+
94
+ it '503' do
95
+ response = Contentful::Response.new raw_fixture('default_503', 503)
96
+ error = Contentful::Error[response.raw.status].new(response)
97
+
98
+ message = "HTTP status code: 503\n"\
99
+ "Message: The request was malformed or missing a required parameter.\n"\
100
+ "Request ID: 85f-351076632"
101
+ expect(error.message).to eq message
102
+ end
103
+ end
104
+
105
+ describe 'special cases' do
106
+ describe '400' do
107
+ it 'details is a string' do
108
+ response = Contentful::Response.new raw_fixture('400_details_string', 400)
109
+ error = Contentful::Error[response.raw.status].new(response)
110
+
111
+ message = "HTTP status code: 400\n"\
112
+ "Message: The request was malformed or missing a required parameter.\n"\
113
+ "Details: some error\n"\
114
+ "Request ID: 85f-351076632"
115
+ expect(error.message).to eq message
116
+ end
117
+
118
+ it 'details is an object, internal errors are strings' do
119
+ response = Contentful::Response.new raw_fixture('400_details_errors_string', 400)
120
+ error = Contentful::Error[response.raw.status].new(response)
121
+
122
+ message = "HTTP status code: 400\n"\
123
+ "Message: The request was malformed or missing a required parameter.\n"\
124
+ "Details: some error\n"\
125
+ "Request ID: 85f-351076632"
126
+ expect(error.message).to eq message
127
+ end
128
+
129
+ it 'details is an object, internal errors are objects which have details' do
130
+ response = Contentful::Response.new raw_fixture('400_details_errors_object', 400)
131
+ error = Contentful::Error[response.raw.status].new(response)
132
+
133
+ message = "HTTP status code: 400\n"\
134
+ "Message: The request was malformed or missing a required parameter.\n"\
135
+ "Details: some error\n"\
136
+ "Request ID: 85f-351076632"
137
+ expect(error.message).to eq message
138
+ end
139
+ end
140
+
141
+ describe '403' do
142
+ it 'has an array of reasons' do
143
+ response = Contentful::Response.new raw_fixture('403_reasons', 403)
144
+ error = Contentful::Error[response.raw.status].new(response)
145
+
146
+ message = "HTTP status code: 403\n"\
147
+ "Message: The specified token does not have access to the requested resource.\n"\
148
+ "Details: \n\tReasons:\n"\
149
+ "\t\tfoo\n"\
150
+ "\t\tbar\n"\
151
+ "Request ID: 85f-351076632"
152
+ expect(error.message).to eq message
153
+ end
154
+ end
155
+
156
+ describe '404' do
157
+ it 'has a type' do
158
+ response = Contentful::Response.new raw_fixture('404_type', 404)
159
+ error = Contentful::Error[response.raw.status].new(response)
160
+
161
+ message = "HTTP status code: 404\n"\
162
+ "Message: The requested resource or endpoint could not be found.\n"\
163
+ "Details: The requested Asset could not be found.\n"\
164
+ "Request ID: 85f-351076632"
165
+ expect(error.message).to eq message
166
+ end
167
+
168
+ it 'can specify the resource id' do
169
+ response = Contentful::Response.new raw_fixture('404_id', 404)
170
+ error = Contentful::Error[response.raw.status].new(response)
171
+
172
+ message = "HTTP status code: 404\n"\
173
+ "Message: The requested resource or endpoint could not be found.\n"\
174
+ "Details: The requested Asset could not be found. ID: foobar.\n"\
175
+ "Request ID: 85f-351076632"
176
+ expect(error.message).to eq message
177
+ end
178
+ end
179
+
180
+ describe '429' do
181
+ it 'can show the time until reset' do
182
+ response = Contentful::Response.new raw_fixture('default_429', 429, false, {'x-contentful-ratelimit-reset' => 60})
183
+ error = Contentful::Error[response.raw.status].new(response)
184
+
185
+ message = "HTTP status code: 429\n"\
186
+ "Message: Rate limit exceeded. Too many requests.\n"\
187
+ "Request ID: 85f-351076632\n"\
188
+ "Time until reset (seconds): 60"
189
+ expect(error.message).to eq message
190
+ end
191
+ end
192
+ end
193
+
194
+ describe 'generic error' do
195
+ it 'with everything' do
196
+ response = Contentful::Response.new raw_fixture('other_error', 512)
197
+ error = Contentful::Error[response.raw.status].new(response)
198
+
199
+ message = "HTTP status code: 512\n"\
200
+ "Message: Some error occurred.\n"\
201
+ "Details: some text\n"\
202
+ "Request ID: 85f-351076632"
203
+ expect(error.message).to eq message
204
+ end
205
+
206
+ it 'no details' do
207
+ response = Contentful::Response.new raw_fixture('other_error_no_details', 512)
208
+ error = Contentful::Error[response.raw.status].new(response)
209
+
210
+ message = "HTTP status code: 512\n"\
211
+ "Message: Some error occurred.\n"\
212
+ "Request ID: 85f-351076632"
213
+ expect(error.message).to eq message
214
+ end
215
+
216
+ it 'no request id' do
217
+ response = Contentful::Response.new raw_fixture('other_error_no_request_id', 512)
218
+ error = Contentful::Error[response.raw.status].new(response)
219
+
220
+ message = "HTTP status code: 512\n"\
221
+ "Message: Some error occurred.\n"\
222
+ "Details: some text"
223
+ expect(error.message).to eq message
224
+ end
225
+
226
+ it 'no message' do
227
+ response = Contentful::Response.new raw_fixture('other_error_no_message', 512)
228
+ error = Contentful::Error[response.raw.status].new(response)
229
+
230
+ message = "HTTP status code: 512\n"\
231
+ "Message: The following error was received: {\n"\
232
+ " \"sys\": {\n"\
233
+ " \"type\": \"Error\",\n"\
234
+ " \"id\": \"SomeError\"\n"\
235
+ " },\n"\
236
+ " \"details\": \"some text\",\n"\
237
+ " \"requestId\": \"85f-351076632\"\n"\
238
+ "}\n"\
239
+ "\n"\
240
+ "Details: some text\n"\
241
+ "Request ID: 85f-351076632"
242
+ expect(error.message).to eq message
243
+ end
244
+
245
+ it 'nothing' do
246
+ response = Contentful::Response.new raw_fixture('other_error_nothing', 512)
247
+ error = Contentful::Error[response.raw.status].new(response)
248
+
249
+ message = "HTTP status code: 512\n"\
250
+ "Message: The following error was received: {\n"\
251
+ " \"sys\": {\n"\
252
+ " \"type\": \"Error\",\n"\
253
+ " \"id\": \"SomeError\"\n"\
254
+ " }\n"\
255
+ "}\n"
256
+ expect(error.message).to eq message
257
+ end
258
+ end
17
259
  end
18
260
  end
19
261
 
@@ -28,7 +270,6 @@ describe Contentful::Error do
28
270
  end
29
271
 
30
272
  describe '.[]' do
31
-
32
273
  it 'returns BadRequest error class for 400' do
33
274
  expect(Contentful::Error[400]).to eq Contentful::BadRequest
34
275
  end
data/spec/field_spec.rb CHANGED
@@ -58,4 +58,25 @@ describe Contentful::Field do
58
58
  expect(arrayField.items.link_type).to eq 'Entry'
59
59
  end
60
60
  end
61
+
62
+ describe 'issues' do
63
+ describe 'json field' do
64
+ it 'can coerce properly when top level is not object' do
65
+ coercion = Contentful::ObjectCoercion.new([{foo: 123}])
66
+ expect(coercion.coerce).to eq [{foo: 123}]
67
+
68
+ coercion = Contentful::ObjectCoercion.new('foobar')
69
+ expect(coercion.coerce).to eq 'foobar'
70
+
71
+ coercion = Contentful::ObjectCoercion.new(true)
72
+ expect(coercion.coerce).to eq true
73
+
74
+ coercion = Contentful::ObjectCoercion.new(123)
75
+ expect(coercion.coerce).to eq 123
76
+
77
+ coercion = Contentful::ObjectCoercion.new({foo: 123})
78
+ expect(coercion.coerce).to eq(foo: 123)
79
+ end
80
+ end
81
+ end
61
82
  end
data/spec/file_spec.rb CHANGED
@@ -20,4 +20,14 @@ describe Contentful::File do
20
20
  expect(file.details).to be_instance_of Hash
21
21
  end
22
22
  end
23
+
24
+ describe 'camel case' do
25
+ it 'supports camel case' do
26
+ vcr('asset') {
27
+ file = create_client(use_camel_case: true).asset('nyancat').file
28
+ expect(file.contentType).to eq 'image/png'
29
+ expect(file.fileName).to eq 'Nyan_cat_250px_frame.png'
30
+ }
31
+ end
32
+ end
23
33
  end
@@ -0,0 +1,14 @@
1
+ {
2
+ "sys": {
3
+ "type": "Error",
4
+ "id": "BadRequest"
5
+ },
6
+ "details": {
7
+ "errors": [
8
+ {
9
+ "details": "some error"
10
+ }
11
+ ]
12
+ },
13
+ "requestId": "85f-351076632"
14
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "sys": {
3
+ "type": "Error",
4
+ "id": "BadRequest"
5
+ },
6
+ "details": {
7
+ "errors": [
8
+ "some error"
9
+ ]
10
+ },
11
+ "requestId": "85f-351076632"
12
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "sys": {
3
+ "type": "Error",
4
+ "id": "BadRequest"
5
+ },
6
+ "details": "some error",
7
+ "requestId": "85f-351076632"
8
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "sys": {
3
+ "type": "Error",
4
+ "id": "AccessDenied"
5
+ },
6
+ "details": {
7
+ "reasons": [
8
+ "foo",
9
+ "bar"
10
+ ]
11
+ },
12
+ "requestId": "85f-351076632"
13
+ }