contentful 2.15.3 → 2.16.2

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 (247) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +22 -11
  4. data/lib/contentful/array_like.rb +11 -2
  5. data/lib/contentful/asset.rb +4 -0
  6. data/lib/contentful/base_resource.rb +14 -2
  7. data/lib/contentful/client.rb +1 -2
  8. data/lib/contentful/fields_resource.rb +1 -0
  9. data/lib/contentful/version.rb +1 -1
  10. metadata +4 -367
  11. data/.gitignore +0 -7
  12. data/.rspec +0 -1
  13. data/.rubocop.yml +0 -31
  14. data/.rubocop_todo.yml +0 -35
  15. data/.travis.yml +0 -15
  16. data/.yardopts +0 -4
  17. data/Gemfile +0 -9
  18. data/Gemfile.lock +0 -166
  19. data/Guardfile +0 -24
  20. data/RELEASE.md +0 -8
  21. data/Rakefile +0 -33
  22. data/contentful.gemspec +0 -44
  23. data/coverage/.last_run.json +0 -5
  24. data/coverage/.resultset.json +0 -5086
  25. data/coverage/.resultset.json.lock +0 -0
  26. data/coverage/assets/0.10.2/application.css +0 -799
  27. data/coverage/assets/0.10.2/application.js +0 -1707
  28. data/coverage/assets/0.10.2/colorbox/border.png +0 -0
  29. data/coverage/assets/0.10.2/colorbox/controls.png +0 -0
  30. data/coverage/assets/0.10.2/colorbox/loading.gif +0 -0
  31. data/coverage/assets/0.10.2/colorbox/loading_background.png +0 -0
  32. data/coverage/assets/0.10.2/favicon_green.png +0 -0
  33. data/coverage/assets/0.10.2/favicon_red.png +0 -0
  34. data/coverage/assets/0.10.2/favicon_yellow.png +0 -0
  35. data/coverage/assets/0.10.2/loading.gif +0 -0
  36. data/coverage/assets/0.10.2/magnify.png +0 -0
  37. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  38. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  39. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  40. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  41. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  42. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  43. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  44. data/coverage/assets/0.10.2/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  45. data/coverage/assets/0.10.2/smoothness/images/ui-icons_222222_256x240.png +0 -0
  46. data/coverage/assets/0.10.2/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  47. data/coverage/assets/0.10.2/smoothness/images/ui-icons_454545_256x240.png +0 -0
  48. data/coverage/assets/0.10.2/smoothness/images/ui-icons_888888_256x240.png +0 -0
  49. data/coverage/assets/0.10.2/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  50. data/coverage/index.html +0 -0
  51. data/doc/Contentful/AccessDenied.html +0 -159
  52. data/doc/Contentful/Array.html +0 -844
  53. data/doc/Contentful/ArrayCoercion.html +0 -242
  54. data/doc/Contentful/ArrayLike.html +0 -624
  55. data/doc/Contentful/Asset.html +0 -486
  56. data/doc/Contentful/BadGateway.html +0 -159
  57. data/doc/Contentful/BadRequest.html +0 -159
  58. data/doc/Contentful/BaseCoercion.html +0 -445
  59. data/doc/Contentful/BaseResource.html +0 -598
  60. data/doc/Contentful/BooleanCoercion.html +0 -242
  61. data/doc/Contentful/Client.html +0 -1738
  62. data/doc/Contentful/ContentType.html +0 -617
  63. data/doc/Contentful/ContentTypeCache.html +0 -428
  64. data/doc/Contentful/DateCoercion.html +0 -244
  65. data/doc/Contentful/DeletedAsset.html +0 -156
  66. data/doc/Contentful/DeletedEntry.html +0 -156
  67. data/doc/Contentful/EmptyFieldError.html +0 -217
  68. data/doc/Contentful/Entry.html +0 -334
  69. data/doc/Contentful/Error.html +0 -407
  70. data/doc/Contentful/Field.html +0 -935
  71. data/doc/Contentful/FieldsResource.html +0 -583
  72. data/doc/Contentful/File.html +0 -218
  73. data/doc/Contentful/FloatCoercion.html +0 -238
  74. data/doc/Contentful/IntegerCoercion.html +0 -238
  75. data/doc/Contentful/Link.html +0 -246
  76. data/doc/Contentful/LinkCoercion.html +0 -156
  77. data/doc/Contentful/Locale.html +0 -536
  78. data/doc/Contentful/Location.html +0 -382
  79. data/doc/Contentful/LocationCoercion.html +0 -238
  80. data/doc/Contentful/NotFound.html +0 -159
  81. data/doc/Contentful/ObjectCoercion.html +0 -238
  82. data/doc/Contentful/RateLimitExceeded.html +0 -346
  83. data/doc/Contentful/Request.html +0 -895
  84. data/doc/Contentful/ResourceBuilder.html +0 -1067
  85. data/doc/Contentful/ResourceReferences.html +0 -254
  86. data/doc/Contentful/Response.html +0 -708
  87. data/doc/Contentful/RichTextCoercion.html +0 -238
  88. data/doc/Contentful/ServerError.html +0 -159
  89. data/doc/Contentful/ServiceUnavailable.html +0 -159
  90. data/doc/Contentful/Space.html +0 -392
  91. data/doc/Contentful/StringCoercion.html +0 -242
  92. data/doc/Contentful/StructuredTextCoercion.html +0 -238
  93. data/doc/Contentful/Support.html +0 -788
  94. data/doc/Contentful/SymbolCoercion.html +0 -169
  95. data/doc/Contentful/Sync.html +0 -653
  96. data/doc/Contentful/SyncPage.html +0 -807
  97. data/doc/Contentful/TextCoercion.html +0 -169
  98. data/doc/Contentful/Unauthorized.html +0 -159
  99. data/doc/Contentful/UnparsableJson.html +0 -159
  100. data/doc/Contentful/UnparsableResource.html +0 -135
  101. data/doc/Contentful.html +0 -157
  102. data/doc/_index.html +0 -563
  103. data/doc/class_list.html +0 -51
  104. data/doc/css/common.css +0 -1
  105. data/doc/css/full_list.css +0 -58
  106. data/doc/css/style.css +0 -496
  107. data/doc/file.CHANGELOG.html +0 -708
  108. data/doc/file.LICENSE.html +0 -70
  109. data/doc/file.README.html +0 -758
  110. data/doc/file_list.html +0 -66
  111. data/doc/frames.html +0 -17
  112. data/doc/index.html +0 -758
  113. data/doc/js/app.js +0 -303
  114. data/doc/js/full_list.js +0 -216
  115. data/doc/js/jquery.js +0 -4
  116. data/doc/method_list.html +0 -1187
  117. data/doc/top-level-namespace.html +0 -110
  118. data/examples/custom_classes.rb +0 -39
  119. data/examples/example_queries.rb +0 -26
  120. data/examples/raise_errors.rb +0 -20
  121. data/examples/raw_mode.rb +0 -14
  122. data/spec/array_spec.rb +0 -167
  123. data/spec/asset_spec.rb +0 -192
  124. data/spec/auto_includes_spec.rb +0 -12
  125. data/spec/client_class_spec.rb +0 -86
  126. data/spec/client_configuration_spec.rb +0 -377
  127. data/spec/content_type_spec.rb +0 -49
  128. data/spec/deleted_asset_spec.rb +0 -38
  129. data/spec/deleted_entry_spec.rb +0 -38
  130. data/spec/entry_spec.rb +0 -777
  131. data/spec/error_class_spec.rb +0 -327
  132. data/spec/error_requests_spec.rb +0 -87
  133. data/spec/field_spec.rb +0 -95
  134. data/spec/file_spec.rb +0 -33
  135. data/spec/fixtures/json_responses/400_details_errors_object.json +0 -14
  136. data/spec/fixtures/json_responses/400_details_errors_string.json +0 -12
  137. data/spec/fixtures/json_responses/400_details_string.json +0 -8
  138. data/spec/fixtures/json_responses/403_reasons.json +0 -13
  139. data/spec/fixtures/json_responses/404_details_string.json +0 -8
  140. data/spec/fixtures/json_responses/404_id.json +0 -11
  141. data/spec/fixtures/json_responses/404_sys_type.json +0 -12
  142. data/spec/fixtures/json_responses/404_type.json +0 -10
  143. data/spec/fixtures/json_responses/content_type.json +0 -83
  144. data/spec/fixtures/json_responses/default_400.json +0 -7
  145. data/spec/fixtures/json_responses/default_401.json +0 -7
  146. data/spec/fixtures/json_responses/default_403.json +0 -7
  147. data/spec/fixtures/json_responses/default_404.json +0 -7
  148. data/spec/fixtures/json_responses/default_429.json +0 -7
  149. data/spec/fixtures/json_responses/default_500.json +0 -7
  150. data/spec/fixtures/json_responses/default_502.json +0 -7
  151. data/spec/fixtures/json_responses/default_503.json +0 -7
  152. data/spec/fixtures/json_responses/includes.json +0 -111
  153. data/spec/fixtures/json_responses/link_array.json +0 -43
  154. data/spec/fixtures/json_responses/not_found.json +0 -13
  155. data/spec/fixtures/json_responses/nyancat.json +0 -48
  156. data/spec/fixtures/json_responses/other_error.json +0 -9
  157. data/spec/fixtures/json_responses/other_error_no_details.json +0 -8
  158. data/spec/fixtures/json_responses/other_error_no_message.json +0 -8
  159. data/spec/fixtures/json_responses/other_error_no_request_id.json +0 -8
  160. data/spec/fixtures/json_responses/other_error_nothing.json +0 -6
  161. data/spec/fixtures/json_responses/self_link.json +0 -82
  162. data/spec/fixtures/json_responses/unparsable.json +0 -13
  163. data/spec/fixtures/vcr_cassettes/array/marshal_custom_classes.yml +0 -159
  164. data/spec/fixtures/vcr_cassettes/array/marshal_unpublished.yml +0 -315
  165. data/spec/fixtures/vcr_cassettes/array/nested_resources.yml +0 -159
  166. data/spec/fixtures/vcr_cassettes/array.yml +0 -288
  167. data/spec/fixtures/vcr_cassettes/arrayField.yml +0 -87
  168. data/spec/fixtures/vcr_cassettes/array_page_1.yml +0 -106
  169. data/spec/fixtures/vcr_cassettes/array_page_2.yml +0 -73
  170. data/spec/fixtures/vcr_cassettes/asset/select_empty_array.yml +0 -104
  171. data/spec/fixtures/vcr_cassettes/asset/select_no_sys.yml +0 -119
  172. data/spec/fixtures/vcr_cassettes/asset/select_one_field.yml +0 -97
  173. data/spec/fixtures/vcr_cassettes/asset/select_only_sys.yml +0 -88
  174. data/spec/fixtures/vcr_cassettes/asset.yml +0 -96
  175. data/spec/fixtures/vcr_cassettes/assets/issues_129.yml +0 -90
  176. data/spec/fixtures/vcr_cassettes/assets/issues_jekyll_46.yml +0 -115
  177. data/spec/fixtures/vcr_cassettes/bad_request.yml +0 -76
  178. data/spec/fixtures/vcr_cassettes/content_type.yml +0 -147
  179. data/spec/fixtures/vcr_cassettes/entries/empty_fields.yml +0 -246
  180. data/spec/fixtures/vcr_cassettes/entries/issue_117.yml +0 -201
  181. data/spec/fixtures/vcr_cassettes/entries/issue_125.yml +0 -198
  182. data/spec/fixtures/vcr_cassettes/entries/rich_text.yml +0 -1707
  183. data/spec/fixtures/vcr_cassettes/entries/rich_text_hydration_issue.yml +0 -460
  184. data/spec/fixtures/vcr_cassettes/entries/rich_text_nested_fields.yml +0 -653
  185. data/spec/fixtures/vcr_cassettes/entries/rich_text_unresolved_relationships.yml +0 -983
  186. data/spec/fixtures/vcr_cassettes/entries/unresolvable_assets.yml +0 -89
  187. data/spec/fixtures/vcr_cassettes/entries/unresolvable_filter.yml +0 -159
  188. data/spec/fixtures/vcr_cassettes/entries/unresolvable_filter_deeply_nested.yml +0 -167
  189. data/spec/fixtures/vcr_cassettes/entries.yml +0 -561
  190. data/spec/fixtures/vcr_cassettes/entry/custom_resource.yml +0 -168
  191. data/spec/fixtures/vcr_cassettes/entry/include_resolution.yml +0 -101
  192. data/spec/fixtures/vcr_cassettes/entry/include_resolution_uniques.yml +0 -81
  193. data/spec/fixtures/vcr_cassettes/entry/json_objects.yml +0 -88
  194. data/spec/fixtures/vcr_cassettes/entry/json_objects_client.yml +0 -86
  195. data/spec/fixtures/vcr_cassettes/entry/marshal_138.yml +0 -159
  196. data/spec/fixtures/vcr_cassettes/entry/marshal_unpublished.yml +0 -303
  197. data/spec/fixtures/vcr_cassettes/entry/marshall.yml +0 -293
  198. data/spec/fixtures/vcr_cassettes/entry/raw.yml +0 -201
  199. data/spec/fixtures/vcr_cassettes/entry/search_link_to_asset.yml +0 -81
  200. data/spec/fixtures/vcr_cassettes/entry/search_link_to_entry.yml +0 -81
  201. data/spec/fixtures/vcr_cassettes/entry/search_link_to_entry_with_custom_query.yml +0 -115
  202. data/spec/fixtures/vcr_cassettes/entry/select_empty_array.yml +0 -111
  203. data/spec/fixtures/vcr_cassettes/entry/select_no_sys.yml +0 -102
  204. data/spec/fixtures/vcr_cassettes/entry/select_one_field.yml +0 -76
  205. data/spec/fixtures/vcr_cassettes/entry/select_one_field_proper.yml +0 -114
  206. data/spec/fixtures/vcr_cassettes/entry/select_only_sys.yml +0 -111
  207. data/spec/fixtures/vcr_cassettes/entry.yml +0 -102
  208. data/spec/fixtures/vcr_cassettes/entry_cache.yml +0 -288
  209. data/spec/fixtures/vcr_cassettes/entry_locales.yml +0 -104
  210. data/spec/fixtures/vcr_cassettes/field.yml +0 -147
  211. data/spec/fixtures/vcr_cassettes/human.yml +0 -118
  212. data/spec/fixtures/vcr_cassettes/linkField.yml +0 -83
  213. data/spec/fixtures/vcr_cassettes/locale.yml +0 -83
  214. data/spec/fixtures/vcr_cassettes/locale_from_environment.yml +0 -121
  215. data/spec/fixtures/vcr_cassettes/location.yml +0 -193
  216. data/spec/fixtures/vcr_cassettes/multi_locale_array_reference.yml +0 -196
  217. data/spec/fixtures/vcr_cassettes/multi_locale_reference.yml +0 -214
  218. data/spec/fixtures/vcr_cassettes/not_found.yml +0 -76
  219. data/spec/fixtures/vcr_cassettes/nyancat.yml +0 -102
  220. data/spec/fixtures/vcr_cassettes/query_array_1.yml +0 -89
  221. data/spec/fixtures/vcr_cassettes/query_array_2.yml +0 -89
  222. data/spec/fixtures/vcr_cassettes/ratelimit.yml +0 -64
  223. data/spec/fixtures/vcr_cassettes/ratelimit_retry.yml +0 -294
  224. data/spec/fixtures/vcr_cassettes/reloaded_entry.yml +0 -102
  225. data/spec/fixtures/vcr_cassettes/space.yml +0 -83
  226. data/spec/fixtures/vcr_cassettes/sync_deleted_asset.yml +0 -174
  227. data/spec/fixtures/vcr_cassettes/sync_deleted_entry.yml +0 -89
  228. data/spec/fixtures/vcr_cassettes/sync_deletion.yml +0 -191
  229. data/spec/fixtures/vcr_cassettes/sync_environment.yml +0 -81
  230. data/spec/fixtures/vcr_cassettes/sync_page.yml +0 -637
  231. data/spec/fixtures/vcr_cassettes/sync_page_2.yml +0 -71
  232. data/spec/fixtures/vcr_cassettes/sync_page_short.yml +0 -106
  233. data/spec/fixtures/vcr_cassettes/unauthorized.yml +0 -64
  234. data/spec/fixtures/vcr_cassettes/unavailable.yml +0 -76
  235. data/spec/link_spec.rb +0 -50
  236. data/spec/locale_spec.rb +0 -37
  237. data/spec/location_spec.rb +0 -25
  238. data/spec/request_spec.rb +0 -57
  239. data/spec/resource_building_spec.rb +0 -31
  240. data/spec/response_spec.rb +0 -62
  241. data/spec/space_spec.rb +0 -31
  242. data/spec/spec_helper.rb +0 -14
  243. data/spec/support/client.rb +0 -6
  244. data/spec/support/json_responses.rb +0 -18
  245. data/spec/support/vcr.rb +0 -16
  246. data/spec/sync_page_spec.rb +0 -103
  247. data/spec/sync_spec.rb +0 -180
@@ -1,377 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Client Configuration Options' do
4
- describe ':space' do
5
- it 'is required' do
6
- expect do
7
- Contentful::Client.new(access_token: 'b4c0n73n7fu1')
8
- end.to raise_error(ArgumentError)
9
- end
10
- end
11
-
12
- describe ':access_token' do
13
- it 'is required' do
14
- expect do
15
- Contentful::Client.new(space: 'cfexampleapi')
16
- end.to raise_error(ArgumentError)
17
- end
18
- end
19
-
20
- describe ':secure' do
21
- it 'will use https [default]' do
22
- expect(
23
- create_client.base_url
24
- ).to start_with 'https://'
25
- end
26
-
27
- it 'will use http when secure set to false' do
28
- expect(
29
- create_client(secure: false).base_url
30
- ).to start_with 'http://'
31
- end
32
- end
33
-
34
- describe ':raise_errors' do
35
- it 'will raise response errors if set to true [default]' do
36
- expect_vcr('not found')do
37
- create_client.content_type 'not found'
38
- end.to raise_error Contentful::NotFound
39
- end
40
-
41
- it 'will not raise response errors if set to false' do
42
- res = nil
43
-
44
- expect_vcr('not found')do
45
- res = create_client(raise_errors: false).content_type 'not found'
46
- end.not_to raise_error
47
- expect(res).to be_instance_of Contentful::NotFound
48
- end
49
- end
50
-
51
- describe ':dynamic_entries' do
52
- before :each do
53
- Contentful::ContentTypeCache.clear!
54
- end
55
-
56
- it 'will create dynamic entries if dynamic_entry_cache is not empty' do
57
- client = create_client(dynamic_entries: :manual)
58
- vcr('entry_cache') { client.update_dynamic_entry_cache! }
59
- entry = vcr('nyancat') { client.entry('nyancat') }
60
-
61
- expect(entry).to be_a Contentful::Entry
62
- end
63
-
64
- context ':auto' do
65
- it 'will call update dynamic_entry_cache on start-up' do
66
- vcr('entry_cache') do
67
- create_client(dynamic_entries: :auto)
68
- end
69
- expect(Contentful::ContentTypeCache.cache).not_to be_empty
70
- end
71
- end
72
-
73
- context ':manual' do
74
- it 'will not call #update_dynamic_entry_cache! on start-up' do
75
- create_client(dynamic_entries: :manual)
76
- expect(Contentful::ContentTypeCache.cache).to be_empty
77
- end
78
- end
79
-
80
- describe '#update_dynamic_entry_cache!' do
81
- let(:client) { create_client(dynamic_entries: :manual) }
82
-
83
- it 'will fetch all content_types' do
84
- expect(client).to receive(:content_types).with(limit: 1000) { {} }
85
- client.update_dynamic_entry_cache!
86
- end
87
-
88
- it 'will save dynamic entries in @dynamic_entry_cache' do
89
- vcr('entry_cache')do
90
- client.update_dynamic_entry_cache!
91
- end
92
- expect(Contentful::ContentTypeCache.cache).not_to be_empty
93
- end
94
- end
95
-
96
- describe '#register_dynamic_entry' do
97
- let(:client) { create_client(dynamic_entries: :manual) }
98
-
99
- it 'can be used to register a dynamic entry manually' do
100
- cat = vcr('content_type') { client.content_type 'cat' }
101
- client.register_dynamic_entry 'cat', cat
102
-
103
- expect(Contentful::ContentTypeCache.cache).not_to be_empty
104
- end
105
- end
106
- end
107
-
108
- describe ':api_url' do
109
- it 'is "cdn.contentful.com" [default]' do
110
- expect(
111
- create_client.configuration[:api_url]
112
- ).to eq 'cdn.contentful.com'
113
- end
114
-
115
- it 'will be used as base url' do
116
- expect(
117
- create_client(api_url: 'cdn2.contentful.com').base_url
118
- ).to start_with 'https://cdn2.contentful.com'
119
- end
120
- end
121
-
122
- describe ':api_version' do
123
- it 'is 1 [default]' do
124
- expect(
125
- create_client.configuration[:api_version]
126
- ).to eq 1
127
- end
128
-
129
- it 'will used for the http content type request header' do
130
- expect(
131
- create_client(api_version: 2).request_headers['Content-Type']
132
- ).to eq 'application/vnd.contentful.delivery.v2+json'
133
- end
134
- end
135
-
136
- describe ':authentication_mechanism' do
137
- describe ':header [default]' do
138
- it 'will add the :access_token as authorization bearer token request header' do
139
- expect(
140
- create_client.request_headers['Authorization']
141
- ).to eq 'Bearer b4c0n73n7fu1'
142
- end
143
-
144
- it 'will not add :access_token to query' do
145
- expect(
146
- create_client.request_query({})['access_token']
147
- ).to be_nil
148
- end
149
- end
150
-
151
- describe ':query_string' do
152
- it 'will add the :access_token to query' do
153
- expect(
154
- create_client(authentication_mechanism: :query_string).
155
- request_query({})['access_token']
156
- ).to eq 'b4c0n73n7fu1'
157
- end
158
-
159
- it 'will not add the :access_token as authorization bearer token request header' do
160
- expect(
161
- create_client(authentication_mechanism: :query_string).
162
- request_headers['Authorization']
163
- ).to be_nil
164
- end
165
- end
166
- end
167
-
168
- describe ':resource_mapping' do
169
- it 'lets you register your own resource classes for certain response types' do
170
- class MyBetterAsset < Contentful::Asset
171
- def https_image_url
172
- image_url.sub %r{\A//}, 'https://'
173
- end
174
- end
175
-
176
- client = create_client(
177
- resource_mapping: {
178
- 'Asset' => MyBetterAsset,
179
- }
180
- )
181
-
182
- nyancat = vcr('asset') { client.asset 'nyancat' }
183
- expect(nyancat).to be_a MyBetterAsset
184
- expect(nyancat.https_image_url).to start_with 'https'
185
- end
186
- end
187
-
188
- describe ':entry_mapping' do
189
- it 'lets you register your own entry classes for certain entry types' do
190
- class Cat < Contentful::Entry
191
- end
192
-
193
- client = create_client(
194
- entry_mapping: {
195
- 'cat' => Cat
196
- }
197
- )
198
-
199
- nyancat = vcr('entry') { client.entry 'nyancat' }
200
- finn = vcr('human') { client.entry 'finn' }
201
- expect(nyancat).to be_a Cat
202
- expect(finn).to be_a Contentful::Entry
203
- end
204
- end
205
-
206
- describe 'X-Contentful-User-Agent headers' do
207
- it 'default values' do
208
- expected = [
209
- "sdk contentful.rb/#{Contentful::VERSION};",
210
- "platform ruby/#{RUBY_VERSION};",
211
- ]
212
-
213
- client = create_client
214
- expected.each do |h|
215
- expect(client.contentful_user_agent).to include(h)
216
- end
217
-
218
- expect(client.contentful_user_agent).to match(/os (Windows|macOS|Linux)(\/.*)?;/i)
219
-
220
- ['integration', 'app'].each do |h|
221
- expect(client.contentful_user_agent).not_to include(h)
222
- end
223
- end
224
-
225
- it 'with integration name only' do
226
- expected = [
227
- "sdk contentful.rb/#{Contentful::VERSION};",
228
- "platform ruby/#{RUBY_VERSION};",
229
- "integration foobar;"
230
- ]
231
-
232
- client = create_client(integration_name: 'foobar')
233
- expected.each do |h|
234
- expect(client.contentful_user_agent).to include(h)
235
- end
236
-
237
- expect(client.contentful_user_agent).to match(/os (Windows|macOS|Linux)(\/.*)?;/i)
238
-
239
- ['app'].each do |h|
240
- expect(client.contentful_user_agent).not_to include(h)
241
- end
242
- end
243
-
244
- it 'with integration' do
245
- expected = [
246
- "sdk contentful.rb/#{Contentful::VERSION};",
247
- "platform ruby/#{RUBY_VERSION};",
248
- "integration foobar/0.1.0;"
249
- ]
250
-
251
- client = create_client(integration_name: 'foobar', integration_version: '0.1.0')
252
- expected.each do |h|
253
- expect(client.contentful_user_agent).to include(h)
254
- end
255
-
256
- expect(client.contentful_user_agent).to match(/os (Windows|macOS|Linux)(\/.*)?;/i)
257
-
258
- ['app'].each do |h|
259
- expect(client.contentful_user_agent).not_to include(h)
260
- end
261
- end
262
-
263
- it 'with application name only' do
264
- expected = [
265
- "sdk contentful.rb/#{Contentful::VERSION};",
266
- "platform ruby/#{RUBY_VERSION};",
267
- "app fooapp;"
268
- ]
269
-
270
- client = create_client(application_name: 'fooapp')
271
- expected.each do |h|
272
- expect(client.contentful_user_agent).to include(h)
273
- end
274
-
275
- expect(client.contentful_user_agent).to match(/os (Windows|macOS|Linux)(\/.*)?;/i)
276
-
277
- ['integration'].each do |h|
278
- expect(client.contentful_user_agent).not_to include(h)
279
- end
280
- end
281
-
282
- it 'with application' do
283
- expected = [
284
- "sdk contentful.rb/#{Contentful::VERSION};",
285
- "platform ruby/#{RUBY_VERSION};",
286
- "app fooapp/1.0.0;"
287
- ]
288
-
289
- client = create_client(application_name: 'fooapp', application_version: '1.0.0')
290
- expected.each do |h|
291
- expect(client.contentful_user_agent).to include(h)
292
- end
293
-
294
- expect(client.contentful_user_agent).to match(/os (Windows|macOS|Linux)(\/.*)?;/i)
295
-
296
- ['integration'].each do |h|
297
- expect(client.contentful_user_agent).not_to include(h)
298
- end
299
- end
300
-
301
- it 'with all' do
302
- expected = [
303
- "sdk contentful.rb/#{Contentful::VERSION};",
304
- "platform ruby/#{RUBY_VERSION};",
305
- "integration foobar/0.1.0;",
306
- "app fooapp/1.0.0;"
307
- ]
308
-
309
- client = create_client(
310
- integration_name: 'foobar',
311
- integration_version: '0.1.0',
312
- application_name: 'fooapp',
313
- application_version: '1.0.0'
314
- )
315
-
316
- expected.each do |h|
317
- expect(client.contentful_user_agent).to include(h)
318
- end
319
-
320
- expect(client.contentful_user_agent).to match(/os (Windows|macOS|Linux)(\/.*)?;/i)
321
- end
322
-
323
- it 'when only version numbers, skips header' do
324
- expected = [
325
- "sdk contentful.rb/#{Contentful::VERSION};",
326
- "platform ruby/#{RUBY_VERSION};"
327
- ]
328
-
329
- client = create_client(
330
- integration_version: '0.1.0',
331
- application_version: '1.0.0'
332
- )
333
-
334
- expected.each do |h|
335
- expect(client.contentful_user_agent).to include(h)
336
- end
337
-
338
- expect(client.contentful_user_agent).to match(/os (Windows|macOS|Linux)(\/.*)?;/i)
339
-
340
- ['integration', 'app'].each do |h|
341
- expect(client.contentful_user_agent).not_to include(h)
342
- end
343
- end
344
-
345
- it 'headers include X-Contentful-User-Agent' do
346
- client = create_client
347
- expect(client.request_headers['X-Contentful-User-Agent']).to eq client.contentful_user_agent
348
- end
349
- end
350
-
351
- describe 'timeout options' do
352
- let(:full_options) { { timeout_connect: 1, timeout_read: 2, timeout_write: 3 } }
353
-
354
- it 'allows the three options to be present together' do
355
- expect do
356
- create_client(full_options)
357
- end.not_to raise_error
358
- end
359
-
360
- it 'allows the three options to be omitted' do
361
- expect do
362
- create_client()
363
- end.not_to raise_error
364
- end
365
-
366
- it 'does not allow only some options to be set' do
367
- # Test that any combination of 1 or 2 keys is rejected
368
- 1.upto(2) do |options_count|
369
- full_options.keys.combination(options_count).each do |option_keys|
370
- expect do
371
- create_client(full_options.select { |key, _| option_keys.include?(key) })
372
- end.to raise_error(ArgumentError)
373
- end
374
- end
375
- end
376
- end
377
- end
@@ -1,49 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Contentful::ContentType do
4
- let(:content_type) { vcr('content_type') { create_client.content_type 'cat' } }
5
-
6
- describe 'SystemProperties' do
7
- it 'has a #sys getter returning a hash with symbol keys' do
8
- expect(content_type.sys).to be_a Hash
9
- expect(content_type.sys.keys.sample).to be_a Symbol
10
- end
11
-
12
- it 'has #id' do
13
- expect(content_type.id).to eq 'cat'
14
- end
15
-
16
- it 'has #type' do
17
- expect(content_type.type).to eq 'ContentType'
18
- end
19
- end
20
-
21
- describe 'Properties' do
22
- it 'has #name' do
23
- expect(content_type.name).to eq 'Cat'
24
- end
25
-
26
- it 'has #description' do
27
- expect(content_type.description).to eq 'Meow.'
28
- end
29
-
30
- it 'has #fields' do
31
- expect(content_type.fields).to be_a Array
32
- expect(content_type.fields.first).to be_a Contentful::Field
33
- end
34
-
35
- it 'could have #display_field' do
36
- expect(content_type).to respond_to :display_field
37
- end
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
49
- end
@@ -1,38 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'DeletedAsset' do
4
- let(:deleted_asset)do
5
- vcr('sync_deleted_asset')do
6
- create_client.sync(initial: true, type: 'DeletedAsset').first_page.items[0]
7
- end
8
- end
9
-
10
- describe 'SystemProperties' do
11
- it 'has a #sys getter returning a hash with symbol keys' do
12
- expect(deleted_asset.sys).to be_a Hash
13
- expect(deleted_asset.sys.keys.sample).to be_a Symbol
14
- end
15
-
16
- it 'has #id' do
17
- expect(deleted_asset.id).to eq '5c6VY0gWg0gwaIeYkUUiqG'
18
- end
19
-
20
- it 'has #type' do
21
- expect(deleted_asset.type).to eq 'DeletedAsset'
22
- end
23
-
24
- it 'has #deleted_at' do
25
- expect(deleted_asset.created_at).to be_a DateTime
26
- end
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
38
- end
@@ -1,38 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'DeletedEntry' do
4
- let(:deleted_entry)do
5
- vcr('sync_deleted_entry')do
6
- create_client.sync(initial: true, type: 'DeletedEntry').first_page.items[0]
7
- end
8
- end
9
-
10
- describe 'SystemProperties' do
11
- it 'has a #sys getter returning a hash with symbol keys' do
12
- expect(deleted_entry.sys).to be_a Hash
13
- expect(deleted_entry.sys.keys.sample).to be_a Symbol
14
- end
15
-
16
- it 'has #id' do
17
- expect(deleted_entry.id).to eq 'CVebBDcQsSsu6yKKIayy'
18
- end
19
-
20
- it 'has #type' do
21
- expect(deleted_entry.type).to eq 'DeletedEntry'
22
- end
23
-
24
- it 'has #deleted_at' do
25
- expect(deleted_entry.created_at).to be_a DateTime
26
- end
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
38
- end