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,103 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Contentful::SyncPage do
4
- let(:page_with_more) { vcr('sync_page') { create_client.sync(initial: true).first_page } }
5
- let(:page) { vcr('sync_page_2') { create_client.sync.get('https://cdn.contentful.com/spaces/cfexampleapi/environments/master/sync?sync_token=w5ZGw6JFwqZmVcKsE8Kow4grw45QdybCr8Okw6AYwqbDksO3ehvDpUPCgcKsKXbCiAwPC8K2w4LDvsOkw6nCjhPDpcOQADElWsOoU8KGR3HCtsOAwqd6wp_Dulp8w6LDsF_CtsK7Kk05wrMvwrLClMOgG2_Dn2sGPg') } }
6
-
7
- describe 'SystemProperties' do
8
- it 'has a #sys getter returning a hash with symbol keys' do
9
- expect(page.sys).to be_a Hash
10
- expect(page.sys.keys.sample).to be_a Symbol
11
- end
12
-
13
- it 'has #type' do
14
- expect(page.type).to eq 'Array'
15
- end
16
- end
17
-
18
- describe 'Properties' do
19
- it 'has #items which contain resources' do
20
- expect(page_with_more.items).to be_a Array
21
- expect(page_with_more.items.sample).to be_a Contentful::BaseResource
22
- end
23
- end
24
-
25
- describe 'Fields' do
26
- it 'properly deals with nested locale fields' do
27
- expect(page_with_more.items.first.fields[:name]).to eq 'London'
28
- end
29
- end
30
-
31
- describe '#each' do
32
- it 'is an Enumerator' do
33
- expect(page.each).to be_a Enumerator
34
- end
35
-
36
- it 'iterates over items' do
37
- expect(page.each.to_a).to eq page.items
38
- end
39
-
40
- it 'includes Enumerable' do
41
- expect(page.map { |r| r.type }).to eq page.items.map { |r| r.type }
42
- end
43
- end
44
-
45
- describe '#next_sync_url' do
46
- it 'will return the next_sync_url if there is one' do
47
- expect(page.next_sync_url).to be_a String
48
- end
49
-
50
- it 'will return nil if note last page, yet' do
51
- expect(page_with_more.next_sync_url).to be_nil
52
- end
53
- end
54
-
55
- describe '#next_page_url' do
56
- it 'will return the next_page_url if there is one' do
57
- expect(page_with_more.next_page_url).to be_a String
58
- end
59
-
60
- it 'will return nil if on last page' do
61
- expect(page.next_page_url).to be_nil
62
- end
63
- end
64
-
65
- describe '#next_page' do
66
- it 'requests the next page' do
67
- next_page = vcr('sync_page_2')do
68
- page_with_more.next_page
69
- end
70
- expect(next_page).to be_a Contentful::SyncPage
71
- end
72
-
73
- it 'will return nil if last page' do
74
- expect(page.next_page_url).to be_nil
75
- end
76
- end
77
-
78
- describe '#next_page?' do
79
- it 'will return true if there is a next page' do
80
- expect(page_with_more.next_page?).to be_truthy
81
- end
82
-
83
- it 'will return false if last page' do
84
- expect(page.next_page?).to be_falsey
85
- end
86
- end
87
-
88
- describe '#last_page?' do
89
- it 'will return true if no more pages available' do
90
- expect(page.last_page?).to be_truthy
91
- end
92
-
93
- it 'will return false if more pages available' do
94
- expect(page_with_more.last_page?).to be_falsey
95
- end
96
- end
97
-
98
- describe '#sync' do
99
- it 'returns the sync that created the page' do
100
- expect(page.sync).to be_a Contentful::Sync
101
- end
102
- end
103
- end
data/spec/sync_spec.rb DELETED
@@ -1,180 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Contentful::Sync do
4
- before :each do
5
- Contentful::ContentTypeCache.clear!
6
- end
7
-
8
- let(:first_page) do
9
- vcr('sync_page')do
10
- create_client.sync(initial: true).first_page
11
- end
12
- end
13
-
14
- let(:last_page) do
15
- vcr('sync_page')do
16
- vcr('sync_page_2')do
17
- create_client.sync(initial: true).first_page.next_page
18
- end
19
- end
20
- end
21
-
22
- describe 'environments' do
23
- it 'works for environments' do
24
- vcr('sync_environment') {
25
- page = nil
26
- expect {
27
- page = create_client(
28
- space: 'a22o2qgm356c',
29
- access_token: 'bfbc63cf745a037125dbcc64f716a9a0e9d091df1a79e84920b890f87a6e7ab9',
30
- environment: 'staging'
31
- ).sync(initial: true).first_page
32
- }.not_to raise_exception
33
-
34
- expect(page.items.first).to be_a ::Contentful::Entry
35
- expect(page.items.first.environment.id).to eq 'staging'
36
- }
37
- end
38
- end
39
-
40
- describe '#initialize' do
41
- it 'takes an options hash on initialization' do
42
- expect do
43
- vcr('sync_deletion') { create_client.sync(initial: true, type: 'Deletion').first_page }
44
- end.not_to raise_exception
45
- end
46
-
47
- it 'takes a next_sync_url on initialization' do
48
- expect do
49
- vcr('sync_page_2') { create_client.sync('https://cdn.contentful.com/spaces/cfexampleapi/environments/master/sync?sync_token=w5ZGw6JFwqZmVcKsE8Kow4grw45QdybCr8Okw6AYwqbDksO3ehvDpUPCgcKsKXbCiAwPC8K2w4LDvsOkw6nCjhPDpcOQADElWsOoU8KGR3HCtsOAwqd6wp_Dulp8w6LDsF_CtsK7Kk05wrMvwrLClMOgG2_Dn2sGPg').first_page }
50
- end.not_to raise_exception
51
- end
52
- end
53
-
54
- describe '#first_page' do
55
- it 'returns only the first page of a new sync' do
56
- vcr('sync_page')do
57
- expect(create_client.sync(initial: true).first_page).to be_a Contentful::SyncPage
58
- end
59
- end
60
- end
61
-
62
- describe '#each_page' do
63
- it 'iterates through sync pages' do
64
- sync = create_client.sync(initial: true)
65
- vcr('sync_page'){ vcr('sync_page_2'){
66
- count = 0
67
- sync.each_page do |page|
68
- expect(page).to be_a Contentful::SyncPage
69
- count += 1
70
- end
71
- expect(count).to eq 2
72
- }}
73
- end
74
- end
75
-
76
- describe '#next_sync_url' do
77
- it 'is empty if there are still more pages to request in the current sync' do
78
- expect(first_page.next_sync_url).to be_nil
79
- end
80
-
81
- it 'returns the url to continue the sync next time' do
82
- expect(last_page.next_sync_url).to be_a String
83
- end
84
- end
85
-
86
- describe '#completed?' do
87
- it 'will return true if no more pages to request in the current sync' do
88
- expect(first_page.next_sync_url).to be_falsey
89
- end
90
-
91
- it 'will return true if not all pages requested, yet' do
92
- expect(last_page.next_sync_url).to be_truthy
93
- end
94
- end
95
-
96
- describe '#each_item' do
97
- it 'will directly iterate through all resources' do
98
- sync = create_client.sync(initial: true)
99
- vcr('sync_page'){ vcr('sync_page_2'){
100
- sync.each_item do |item|
101
- expect(item).to be_a Contentful::BaseResource
102
- end
103
- }}
104
- end
105
- end
106
-
107
- describe 'Resource parsing' do
108
- it 'will correctly parse the `file` field of an asset' do
109
- sync = create_client.sync(initial: true)
110
- vcr('sync_page') {
111
- asset = sync.first_page.items.select { |item| item.is_a?(Contentful::Asset) }.first
112
-
113
- expect(asset.file.file_name).to eq 'doge.jpg'
114
- expect(asset.file.content_type).to eq 'image/jpeg'
115
- expect(asset.file.details['image']['width']).to eq 5800
116
- expect(asset.file.details['image']['height']).to eq 4350
117
- expect(asset.file.details['size']).to eq 522943
118
- expect(asset.file.url).to eq '//images.contentful.com/cfexampleapi/1x0xpXu4pSGS4OukSyWGUK/cc1239c6385428ef26f4180190532818/doge.jpg'
119
- }
120
- end
121
- end
122
-
123
- describe 'raw_mode' do
124
- before do
125
- @sync = create_client(raw_mode: true).sync(initial: true)
126
- end
127
-
128
- it 'should not fail' do
129
- vcr('sync_page_short') {
130
- expect { @sync.first_page }.not_to raise_error
131
- }
132
- end
133
-
134
- it 'should return a raw Response' do
135
- vcr('sync_page_short') {
136
- expect(@sync.first_page).to be_a Contentful::Response
137
- }
138
- end
139
-
140
- it 'should return JSON' do
141
- expected = {
142
- "sys" => {"type" => "Array"},
143
- "items" => [
144
- {
145
- "sys" => {
146
- "space" => {
147
- "sys" => {
148
- "type" => "Link",
149
- "linkType" => "Space",
150
- "id" => "cfexampleapi"}
151
- },
152
- "type" => "Entry",
153
- "contentType" => {
154
- "sys" => {
155
- "type" => "Link",
156
- "linkType" => "ContentType",
157
- "id" => "1t9IbcfdCk6m04uISSsaIK"
158
- }
159
- },
160
- "id" => "5ETMRzkl9KM4omyMwKAOki",
161
- "revision" => 2,
162
- "createdAt" => "2014-02-21T13:42:57.752Z",
163
- "updatedAt" => "2014-04-16T12:44:02.691Z"
164
- },
165
- "fields" => {
166
- "name" => {"en-US"=>"London"},
167
- "center" => {
168
- "en-US" => {"lat"=>51.508515, "lon"=>-0.12548719999995228}
169
- }
170
- }
171
- }
172
- ],
173
- "nextSyncUrl" => "https://cdn.contentful.com/spaces/cfexampleapi/environments/master/sync?sync_token=w5ZGw6JFwqZmVcKsE8Kow4grw45QdybCr8Okw6AYwqbDksO3ehvDpUPCgcKsKXbCiAwPC8K2w4LDvsOkw6nCjhPDpcOQADElWsOoU8KGR3HCtsOAwqd6wp_Dulp8w6LDsF_CtsK7Kk05wrMvwrLClMOgG2_Dn2sGPg"
174
- }
175
- vcr('sync_page_short') {
176
- expect(@sync.first_page.object).to eql expected
177
- }
178
- end
179
- end
180
- end