contentful 2.15.4 → 2.16.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.
Files changed (252) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/README.md +20 -11
  4. data/lib/contentful/array_like.rb +9 -0
  5. data/lib/contentful/base_resource.rb +12 -1
  6. data/lib/contentful/fields_resource.rb +1 -0
  7. data/lib/contentful/version.rb +1 -1
  8. metadata +3 -373
  9. data/.gitignore +0 -7
  10. data/.rspec +0 -1
  11. data/.rubocop.yml +0 -31
  12. data/.rubocop_todo.yml +0 -35
  13. data/.ruby-version +0 -1
  14. data/.travis.yml +0 -15
  15. data/.yardopts +0 -4
  16. data/Gemfile +0 -9
  17. data/Gemfile.lock +0 -170
  18. data/Guardfile +0 -24
  19. data/RELEASE.md +0 -8
  20. data/Rakefile +0 -33
  21. data/contentful.gemspec +0 -44
  22. data/contentful.rb.sublime-project +0 -9
  23. data/contentful.rb.sublime-workspace +0 -2154
  24. data/coverage/.last_run.json +0 -5
  25. data/coverage/.resultset.json +0 -2421
  26. data/coverage/.resultset.json.lock +0 -0
  27. data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_asc.png +0 -0
  28. data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_asc_disabled.png +0 -0
  29. data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_both.png +0 -0
  30. data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_desc.png +0 -0
  31. data/coverage/assets/0.12.2/DataTables-1.10.20/images/sort_desc_disabled.png +0 -0
  32. data/coverage/assets/0.12.2/application.css +0 -1
  33. data/coverage/assets/0.12.2/application.js +0 -7
  34. data/coverage/assets/0.12.2/colorbox/border.png +0 -0
  35. data/coverage/assets/0.12.2/colorbox/controls.png +0 -0
  36. data/coverage/assets/0.12.2/colorbox/loading.gif +0 -0
  37. data/coverage/assets/0.12.2/colorbox/loading_background.png +0 -0
  38. data/coverage/assets/0.12.2/favicon_green.png +0 -0
  39. data/coverage/assets/0.12.2/favicon_red.png +0 -0
  40. data/coverage/assets/0.12.2/favicon_yellow.png +0 -0
  41. data/coverage/assets/0.12.2/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  42. data/coverage/assets/0.12.2/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  43. data/coverage/assets/0.12.2/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  44. data/coverage/assets/0.12.2/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  45. data/coverage/assets/0.12.2/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  46. data/coverage/assets/0.12.2/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  47. data/coverage/assets/0.12.2/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  48. data/coverage/assets/0.12.2/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  49. data/coverage/assets/0.12.2/images/ui-icons_222222_256x240.png +0 -0
  50. data/coverage/assets/0.12.2/images/ui-icons_2e83ff_256x240.png +0 -0
  51. data/coverage/assets/0.12.2/images/ui-icons_454545_256x240.png +0 -0
  52. data/coverage/assets/0.12.2/images/ui-icons_888888_256x240.png +0 -0
  53. data/coverage/assets/0.12.2/images/ui-icons_cd0a0a_256x240.png +0 -0
  54. data/coverage/assets/0.12.2/loading.gif +0 -0
  55. data/coverage/assets/0.12.2/magnify.png +0 -0
  56. data/coverage/index.html +0 -26587
  57. data/doc/Contentful/AccessDenied.html +0 -159
  58. data/doc/Contentful/Array.html +0 -844
  59. data/doc/Contentful/ArrayCoercion.html +0 -242
  60. data/doc/Contentful/ArrayLike.html +0 -624
  61. data/doc/Contentful/Asset.html +0 -486
  62. data/doc/Contentful/BadGateway.html +0 -159
  63. data/doc/Contentful/BadRequest.html +0 -159
  64. data/doc/Contentful/BaseCoercion.html +0 -445
  65. data/doc/Contentful/BaseResource.html +0 -598
  66. data/doc/Contentful/BooleanCoercion.html +0 -242
  67. data/doc/Contentful/Client.html +0 -1738
  68. data/doc/Contentful/ContentType.html +0 -617
  69. data/doc/Contentful/ContentTypeCache.html +0 -428
  70. data/doc/Contentful/DateCoercion.html +0 -244
  71. data/doc/Contentful/DeletedAsset.html +0 -156
  72. data/doc/Contentful/DeletedEntry.html +0 -156
  73. data/doc/Contentful/EmptyFieldError.html +0 -217
  74. data/doc/Contentful/Entry.html +0 -334
  75. data/doc/Contentful/Error.html +0 -407
  76. data/doc/Contentful/Field.html +0 -935
  77. data/doc/Contentful/FieldsResource.html +0 -583
  78. data/doc/Contentful/File.html +0 -218
  79. data/doc/Contentful/FloatCoercion.html +0 -238
  80. data/doc/Contentful/IntegerCoercion.html +0 -238
  81. data/doc/Contentful/Link.html +0 -246
  82. data/doc/Contentful/LinkCoercion.html +0 -156
  83. data/doc/Contentful/Locale.html +0 -536
  84. data/doc/Contentful/Location.html +0 -382
  85. data/doc/Contentful/LocationCoercion.html +0 -238
  86. data/doc/Contentful/NotFound.html +0 -159
  87. data/doc/Contentful/ObjectCoercion.html +0 -238
  88. data/doc/Contentful/RateLimitExceeded.html +0 -346
  89. data/doc/Contentful/Request.html +0 -895
  90. data/doc/Contentful/ResourceBuilder.html +0 -1067
  91. data/doc/Contentful/ResourceReferences.html +0 -254
  92. data/doc/Contentful/Response.html +0 -708
  93. data/doc/Contentful/RichTextCoercion.html +0 -238
  94. data/doc/Contentful/ServerError.html +0 -159
  95. data/doc/Contentful/ServiceUnavailable.html +0 -159
  96. data/doc/Contentful/Space.html +0 -392
  97. data/doc/Contentful/StringCoercion.html +0 -242
  98. data/doc/Contentful/Support.html +0 -788
  99. data/doc/Contentful/SymbolCoercion.html +0 -169
  100. data/doc/Contentful/Sync.html +0 -653
  101. data/doc/Contentful/SyncPage.html +0 -807
  102. data/doc/Contentful/TextCoercion.html +0 -169
  103. data/doc/Contentful/Unauthorized.html +0 -159
  104. data/doc/Contentful/UnparsableJson.html +0 -159
  105. data/doc/Contentful/UnparsableResource.html +0 -135
  106. data/doc/Contentful.html +0 -157
  107. data/doc/_index.html +0 -563
  108. data/doc/class_list.html +0 -51
  109. data/doc/css/common.css +0 -1
  110. data/doc/css/full_list.css +0 -58
  111. data/doc/css/style.css +0 -496
  112. data/doc/file.CHANGELOG.html +0 -715
  113. data/doc/file.LICENSE.html +0 -70
  114. data/doc/file.README.html +0 -758
  115. data/doc/file_list.html +0 -66
  116. data/doc/frames.html +0 -17
  117. data/doc/index.html +0 -758
  118. data/doc/js/app.js +0 -314
  119. data/doc/js/full_list.js +0 -216
  120. data/doc/js/jquery.js +0 -4
  121. data/doc/method_list.html +0 -1187
  122. data/doc/top-level-namespace.html +0 -110
  123. data/examples/custom_classes.rb +0 -39
  124. data/examples/example_queries.rb +0 -26
  125. data/examples/raise_errors.rb +0 -20
  126. data/examples/raw_mode.rb +0 -14
  127. data/spec/array_spec.rb +0 -177
  128. data/spec/asset_spec.rb +0 -192
  129. data/spec/auto_includes_spec.rb +0 -12
  130. data/spec/client_class_spec.rb +0 -86
  131. data/spec/client_configuration_spec.rb +0 -394
  132. data/spec/content_type_spec.rb +0 -49
  133. data/spec/deleted_asset_spec.rb +0 -38
  134. data/spec/deleted_entry_spec.rb +0 -38
  135. data/spec/entry_spec.rb +0 -787
  136. data/spec/error_class_spec.rb +0 -327
  137. data/spec/error_requests_spec.rb +0 -87
  138. data/spec/field_spec.rb +0 -95
  139. data/spec/file_spec.rb +0 -33
  140. data/spec/fixtures/json_responses/400_details_errors_object.json +0 -14
  141. data/spec/fixtures/json_responses/400_details_errors_string.json +0 -12
  142. data/spec/fixtures/json_responses/400_details_string.json +0 -8
  143. data/spec/fixtures/json_responses/403_reasons.json +0 -13
  144. data/spec/fixtures/json_responses/404_details_string.json +0 -8
  145. data/spec/fixtures/json_responses/404_id.json +0 -11
  146. data/spec/fixtures/json_responses/404_sys_type.json +0 -12
  147. data/spec/fixtures/json_responses/404_type.json +0 -10
  148. data/spec/fixtures/json_responses/content_type.json +0 -83
  149. data/spec/fixtures/json_responses/default_400.json +0 -7
  150. data/spec/fixtures/json_responses/default_401.json +0 -7
  151. data/spec/fixtures/json_responses/default_403.json +0 -7
  152. data/spec/fixtures/json_responses/default_404.json +0 -7
  153. data/spec/fixtures/json_responses/default_429.json +0 -7
  154. data/spec/fixtures/json_responses/default_500.json +0 -7
  155. data/spec/fixtures/json_responses/default_502.json +0 -7
  156. data/spec/fixtures/json_responses/default_503.json +0 -7
  157. data/spec/fixtures/json_responses/includes.json +0 -111
  158. data/spec/fixtures/json_responses/link_array.json +0 -43
  159. data/spec/fixtures/json_responses/not_found.json +0 -13
  160. data/spec/fixtures/json_responses/nyancat.json +0 -48
  161. data/spec/fixtures/json_responses/other_error.json +0 -9
  162. data/spec/fixtures/json_responses/other_error_no_details.json +0 -8
  163. data/spec/fixtures/json_responses/other_error_no_message.json +0 -8
  164. data/spec/fixtures/json_responses/other_error_no_request_id.json +0 -8
  165. data/spec/fixtures/json_responses/other_error_nothing.json +0 -6
  166. data/spec/fixtures/json_responses/self_link.json +0 -82
  167. data/spec/fixtures/json_responses/unparsable.json +0 -13
  168. data/spec/fixtures/vcr_cassettes/array/marshal_custom_classes.yml +0 -159
  169. data/spec/fixtures/vcr_cassettes/array/marshal_unpublished.yml +0 -315
  170. data/spec/fixtures/vcr_cassettes/array/nested_resources.yml +0 -159
  171. data/spec/fixtures/vcr_cassettes/array.yml +0 -288
  172. data/spec/fixtures/vcr_cassettes/arrayField.yml +0 -87
  173. data/spec/fixtures/vcr_cassettes/array_page_1.yml +0 -106
  174. data/spec/fixtures/vcr_cassettes/array_page_2.yml +0 -73
  175. data/spec/fixtures/vcr_cassettes/asset/select_empty_array.yml +0 -104
  176. data/spec/fixtures/vcr_cassettes/asset/select_no_sys.yml +0 -119
  177. data/spec/fixtures/vcr_cassettes/asset/select_one_field.yml +0 -97
  178. data/spec/fixtures/vcr_cassettes/asset/select_only_sys.yml +0 -88
  179. data/spec/fixtures/vcr_cassettes/asset.yml +0 -96
  180. data/spec/fixtures/vcr_cassettes/assets/issues_129.yml +0 -90
  181. data/spec/fixtures/vcr_cassettes/assets/issues_jekyll_46.yml +0 -115
  182. data/spec/fixtures/vcr_cassettes/bad_request.yml +0 -76
  183. data/spec/fixtures/vcr_cassettes/content_type.yml +0 -147
  184. data/spec/fixtures/vcr_cassettes/entries/empty_fields.yml +0 -246
  185. data/spec/fixtures/vcr_cassettes/entries/issue_117.yml +0 -201
  186. data/spec/fixtures/vcr_cassettes/entries/issue_125.yml +0 -198
  187. data/spec/fixtures/vcr_cassettes/entries/rich_text.yml +0 -1707
  188. data/spec/fixtures/vcr_cassettes/entries/rich_text_hydration_issue.yml +0 -460
  189. data/spec/fixtures/vcr_cassettes/entries/rich_text_nested_fields.yml +0 -653
  190. data/spec/fixtures/vcr_cassettes/entries/rich_text_unresolved_relationships.yml +0 -983
  191. data/spec/fixtures/vcr_cassettes/entries/unresolvable_assets.yml +0 -89
  192. data/spec/fixtures/vcr_cassettes/entries/unresolvable_filter.yml +0 -159
  193. data/spec/fixtures/vcr_cassettes/entries/unresolvable_filter_deeply_nested.yml +0 -167
  194. data/spec/fixtures/vcr_cassettes/entries.yml +0 -561
  195. data/spec/fixtures/vcr_cassettes/entry/custom_resource.yml +0 -168
  196. data/spec/fixtures/vcr_cassettes/entry/include_resolution.yml +0 -101
  197. data/spec/fixtures/vcr_cassettes/entry/include_resolution_uniques.yml +0 -81
  198. data/spec/fixtures/vcr_cassettes/entry/json_objects.yml +0 -88
  199. data/spec/fixtures/vcr_cassettes/entry/json_objects_client.yml +0 -86
  200. data/spec/fixtures/vcr_cassettes/entry/marshal_138.yml +0 -159
  201. data/spec/fixtures/vcr_cassettes/entry/marshal_unpublished.yml +0 -303
  202. data/spec/fixtures/vcr_cassettes/entry/marshall.yml +0 -293
  203. data/spec/fixtures/vcr_cassettes/entry/raw.yml +0 -201
  204. data/spec/fixtures/vcr_cassettes/entry/search_link_to_asset.yml +0 -81
  205. data/spec/fixtures/vcr_cassettes/entry/search_link_to_entry.yml +0 -81
  206. data/spec/fixtures/vcr_cassettes/entry/search_link_to_entry_with_custom_query.yml +0 -115
  207. data/spec/fixtures/vcr_cassettes/entry/select_empty_array.yml +0 -111
  208. data/spec/fixtures/vcr_cassettes/entry/select_no_sys.yml +0 -102
  209. data/spec/fixtures/vcr_cassettes/entry/select_one_field.yml +0 -76
  210. data/spec/fixtures/vcr_cassettes/entry/select_one_field_proper.yml +0 -114
  211. data/spec/fixtures/vcr_cassettes/entry/select_only_sys.yml +0 -111
  212. data/spec/fixtures/vcr_cassettes/entry.yml +0 -102
  213. data/spec/fixtures/vcr_cassettes/entry_cache.yml +0 -288
  214. data/spec/fixtures/vcr_cassettes/entry_locales.yml +0 -104
  215. data/spec/fixtures/vcr_cassettes/field.yml +0 -147
  216. data/spec/fixtures/vcr_cassettes/human.yml +0 -118
  217. data/spec/fixtures/vcr_cassettes/linkField.yml +0 -83
  218. data/spec/fixtures/vcr_cassettes/locale.yml +0 -83
  219. data/spec/fixtures/vcr_cassettes/locale_from_environment.yml +0 -121
  220. data/spec/fixtures/vcr_cassettes/location.yml +0 -193
  221. data/spec/fixtures/vcr_cassettes/multi_locale_array_reference.yml +0 -196
  222. data/spec/fixtures/vcr_cassettes/multi_locale_reference.yml +0 -214
  223. data/spec/fixtures/vcr_cassettes/not_found.yml +0 -76
  224. data/spec/fixtures/vcr_cassettes/nyancat.yml +0 -102
  225. data/spec/fixtures/vcr_cassettes/query_array_1.yml +0 -89
  226. data/spec/fixtures/vcr_cassettes/query_array_2.yml +0 -89
  227. data/spec/fixtures/vcr_cassettes/ratelimit.yml +0 -64
  228. data/spec/fixtures/vcr_cassettes/ratelimit_retry.yml +0 -294
  229. data/spec/fixtures/vcr_cassettes/reloaded_entry.yml +0 -102
  230. data/spec/fixtures/vcr_cassettes/space.yml +0 -83
  231. data/spec/fixtures/vcr_cassettes/sync_deleted_asset.yml +0 -174
  232. data/spec/fixtures/vcr_cassettes/sync_deleted_entry.yml +0 -89
  233. data/spec/fixtures/vcr_cassettes/sync_deletion.yml +0 -191
  234. data/spec/fixtures/vcr_cassettes/sync_environment.yml +0 -81
  235. data/spec/fixtures/vcr_cassettes/sync_page.yml +0 -637
  236. data/spec/fixtures/vcr_cassettes/sync_page_2.yml +0 -71
  237. data/spec/fixtures/vcr_cassettes/sync_page_short.yml +0 -106
  238. data/spec/fixtures/vcr_cassettes/unauthorized.yml +0 -64
  239. data/spec/fixtures/vcr_cassettes/unavailable.yml +0 -76
  240. data/spec/link_spec.rb +0 -50
  241. data/spec/locale_spec.rb +0 -37
  242. data/spec/location_spec.rb +0 -25
  243. data/spec/request_spec.rb +0 -57
  244. data/spec/resource_building_spec.rb +0 -31
  245. data/spec/response_spec.rb +0 -62
  246. data/spec/space_spec.rb +0 -31
  247. data/spec/spec_helper.rb +0 -14
  248. data/spec/support/client.rb +0 -6
  249. data/spec/support/json_responses.rb +0 -18
  250. data/spec/support/vcr.rb +0 -16
  251. data/spec/sync_page_spec.rb +0 -103
  252. 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