contentful 2.16.0 → 2.16.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/lib/contentful/version.rb +1 -1
  4. metadata +3 -370
  5. data/.gitignore +0 -7
  6. data/.rspec +0 -1
  7. data/.rubocop.yml +0 -31
  8. data/.rubocop_todo.yml +0 -35
  9. data/.travis.yml +0 -15
  10. data/.yardopts +0 -4
  11. data/Gemfile +0 -9
  12. data/Guardfile +0 -24
  13. data/RELEASE.md +0 -8
  14. data/Rakefile +0 -33
  15. data/contentful.gemspec +0 -44
  16. data/examples/custom_classes.rb +0 -39
  17. data/examples/example_queries.rb +0 -26
  18. data/examples/raise_errors.rb +0 -20
  19. data/examples/raw_mode.rb +0 -14
  20. data/spec/array_spec.rb +0 -187
  21. data/spec/asset_spec.rb +0 -220
  22. data/spec/auto_includes_spec.rb +0 -12
  23. data/spec/client_class_spec.rb +0 -86
  24. data/spec/client_configuration_spec.rb +0 -394
  25. data/spec/content_type_spec.rb +0 -49
  26. data/spec/deleted_asset_spec.rb +0 -38
  27. data/spec/deleted_entry_spec.rb +0 -38
  28. data/spec/entry_spec.rb +0 -815
  29. data/spec/error_class_spec.rb +0 -327
  30. data/spec/error_requests_spec.rb +0 -87
  31. data/spec/field_spec.rb +0 -95
  32. data/spec/file_spec.rb +0 -33
  33. data/spec/fixtures/json_responses/400_details_errors_object.json +0 -14
  34. data/spec/fixtures/json_responses/400_details_errors_string.json +0 -12
  35. data/spec/fixtures/json_responses/400_details_string.json +0 -8
  36. data/spec/fixtures/json_responses/403_reasons.json +0 -13
  37. data/spec/fixtures/json_responses/404_details_string.json +0 -8
  38. data/spec/fixtures/json_responses/404_id.json +0 -11
  39. data/spec/fixtures/json_responses/404_sys_type.json +0 -12
  40. data/spec/fixtures/json_responses/404_type.json +0 -10
  41. data/spec/fixtures/json_responses/content_type.json +0 -83
  42. data/spec/fixtures/json_responses/default_400.json +0 -7
  43. data/spec/fixtures/json_responses/default_401.json +0 -7
  44. data/spec/fixtures/json_responses/default_403.json +0 -7
  45. data/spec/fixtures/json_responses/default_404.json +0 -7
  46. data/spec/fixtures/json_responses/default_429.json +0 -7
  47. data/spec/fixtures/json_responses/default_500.json +0 -7
  48. data/spec/fixtures/json_responses/default_502.json +0 -7
  49. data/spec/fixtures/json_responses/default_503.json +0 -7
  50. data/spec/fixtures/json_responses/includes.json +0 -111
  51. data/spec/fixtures/json_responses/link_array.json +0 -43
  52. data/spec/fixtures/json_responses/not_found.json +0 -13
  53. data/spec/fixtures/json_responses/nyancat.json +0 -48
  54. data/spec/fixtures/json_responses/other_error.json +0 -9
  55. data/spec/fixtures/json_responses/other_error_no_details.json +0 -8
  56. data/spec/fixtures/json_responses/other_error_no_message.json +0 -8
  57. data/spec/fixtures/json_responses/other_error_no_request_id.json +0 -8
  58. data/spec/fixtures/json_responses/other_error_nothing.json +0 -6
  59. data/spec/fixtures/json_responses/self_link.json +0 -82
  60. data/spec/fixtures/json_responses/unparsable.json +0 -13
  61. data/spec/fixtures/vcr_cassettes/array.yml +0 -288
  62. data/spec/fixtures/vcr_cassettes/array/marshal_custom_classes.yml +0 -159
  63. data/spec/fixtures/vcr_cassettes/array/marshal_unpublished.yml +0 -315
  64. data/spec/fixtures/vcr_cassettes/array/nested_resources.yml +0 -159
  65. data/spec/fixtures/vcr_cassettes/arrayField.yml +0 -87
  66. data/spec/fixtures/vcr_cassettes/array_page_1.yml +0 -106
  67. data/spec/fixtures/vcr_cassettes/array_page_2.yml +0 -73
  68. data/spec/fixtures/vcr_cassettes/asset.yml +0 -96
  69. data/spec/fixtures/vcr_cassettes/asset/select_empty_array.yml +0 -104
  70. data/spec/fixtures/vcr_cassettes/asset/select_no_sys.yml +0 -119
  71. data/spec/fixtures/vcr_cassettes/asset/select_one_field.yml +0 -97
  72. data/spec/fixtures/vcr_cassettes/asset/select_only_sys.yml +0 -88
  73. data/spec/fixtures/vcr_cassettes/asset/with_tags.yml +0 -138
  74. data/spec/fixtures/vcr_cassettes/assets/issues_129.yml +0 -90
  75. data/spec/fixtures/vcr_cassettes/assets/issues_jekyll_46.yml +0 -115
  76. data/spec/fixtures/vcr_cassettes/bad_request.yml +0 -76
  77. data/spec/fixtures/vcr_cassettes/content_type.yml +0 -147
  78. data/spec/fixtures/vcr_cassettes/entries.yml +0 -561
  79. data/spec/fixtures/vcr_cassettes/entries/empty_fields.yml +0 -246
  80. data/spec/fixtures/vcr_cassettes/entries/issue_117.yml +0 -201
  81. data/spec/fixtures/vcr_cassettes/entries/issue_125.yml +0 -198
  82. data/spec/fixtures/vcr_cassettes/entries/rich_text.yml +0 -1707
  83. data/spec/fixtures/vcr_cassettes/entries/rich_text_hydration_issue.yml +0 -460
  84. data/spec/fixtures/vcr_cassettes/entries/rich_text_nested_fields.yml +0 -653
  85. data/spec/fixtures/vcr_cassettes/entries/rich_text_unresolved_relationships.yml +0 -983
  86. data/spec/fixtures/vcr_cassettes/entries/unresolvable_assets.yml +0 -89
  87. data/spec/fixtures/vcr_cassettes/entries/unresolvable_filter.yml +0 -159
  88. data/spec/fixtures/vcr_cassettes/entries/unresolvable_filter_deeply_nested.yml +0 -167
  89. data/spec/fixtures/vcr_cassettes/entry.yml +0 -102
  90. data/spec/fixtures/vcr_cassettes/entry/custom_resource.yml +0 -168
  91. data/spec/fixtures/vcr_cassettes/entry/include_resolution.yml +0 -101
  92. data/spec/fixtures/vcr_cassettes/entry/include_resolution_uniques.yml +0 -81
  93. data/spec/fixtures/vcr_cassettes/entry/json_objects.yml +0 -88
  94. data/spec/fixtures/vcr_cassettes/entry/json_objects_client.yml +0 -86
  95. data/spec/fixtures/vcr_cassettes/entry/marshal_138.yml +0 -159
  96. data/spec/fixtures/vcr_cassettes/entry/marshal_unpublished.yml +0 -303
  97. data/spec/fixtures/vcr_cassettes/entry/marshall.yml +0 -293
  98. data/spec/fixtures/vcr_cassettes/entry/raw.yml +0 -201
  99. data/spec/fixtures/vcr_cassettes/entry/search_link_to_asset.yml +0 -81
  100. data/spec/fixtures/vcr_cassettes/entry/search_link_to_entry.yml +0 -81
  101. data/spec/fixtures/vcr_cassettes/entry/search_link_to_entry_with_custom_query.yml +0 -115
  102. data/spec/fixtures/vcr_cassettes/entry/select_empty_array.yml +0 -111
  103. data/spec/fixtures/vcr_cassettes/entry/select_no_sys.yml +0 -102
  104. data/spec/fixtures/vcr_cassettes/entry/select_one_field.yml +0 -76
  105. data/spec/fixtures/vcr_cassettes/entry/select_one_field_proper.yml +0 -114
  106. data/spec/fixtures/vcr_cassettes/entry/select_only_sys.yml +0 -111
  107. data/spec/fixtures/vcr_cassettes/entry/with_tags.yml +0 -238
  108. data/spec/fixtures/vcr_cassettes/entry_cache.yml +0 -288
  109. data/spec/fixtures/vcr_cassettes/entry_locales.yml +0 -104
  110. data/spec/fixtures/vcr_cassettes/field.yml +0 -147
  111. data/spec/fixtures/vcr_cassettes/human.yml +0 -118
  112. data/spec/fixtures/vcr_cassettes/linkField.yml +0 -83
  113. data/spec/fixtures/vcr_cassettes/locale.yml +0 -83
  114. data/spec/fixtures/vcr_cassettes/locale_from_environment.yml +0 -121
  115. data/spec/fixtures/vcr_cassettes/location.yml +0 -193
  116. data/spec/fixtures/vcr_cassettes/multi_locale_array_reference.yml +0 -196
  117. data/spec/fixtures/vcr_cassettes/multi_locale_reference.yml +0 -214
  118. data/spec/fixtures/vcr_cassettes/not_found.yml +0 -76
  119. data/spec/fixtures/vcr_cassettes/nyancat.yml +0 -102
  120. data/spec/fixtures/vcr_cassettes/query_array_1.yml +0 -89
  121. data/spec/fixtures/vcr_cassettes/query_array_2.yml +0 -89
  122. data/spec/fixtures/vcr_cassettes/ratelimit.yml +0 -64
  123. data/spec/fixtures/vcr_cassettes/ratelimit_retry.yml +0 -294
  124. data/spec/fixtures/vcr_cassettes/reloaded_entry.yml +0 -102
  125. data/spec/fixtures/vcr_cassettes/space.yml +0 -83
  126. data/spec/fixtures/vcr_cassettes/sync_deleted_asset.yml +0 -174
  127. data/spec/fixtures/vcr_cassettes/sync_deleted_entry.yml +0 -89
  128. data/spec/fixtures/vcr_cassettes/sync_deletion.yml +0 -191
  129. data/spec/fixtures/vcr_cassettes/sync_environment.yml +0 -81
  130. data/spec/fixtures/vcr_cassettes/sync_page.yml +0 -637
  131. data/spec/fixtures/vcr_cassettes/sync_page_2.yml +0 -71
  132. data/spec/fixtures/vcr_cassettes/sync_page_short.yml +0 -106
  133. data/spec/fixtures/vcr_cassettes/unauthorized.yml +0 -64
  134. data/spec/fixtures/vcr_cassettes/unavailable.yml +0 -76
  135. data/spec/link_spec.rb +0 -50
  136. data/spec/locale_spec.rb +0 -37
  137. data/spec/location_spec.rb +0 -25
  138. data/spec/request_spec.rb +0 -57
  139. data/spec/resource_building_spec.rb +0 -31
  140. data/spec/response_spec.rb +0 -62
  141. data/spec/space_spec.rb +0 -31
  142. data/spec/spec_helper.rb +0 -14
  143. data/spec/support/client.rb +0 -6
  144. data/spec/support/json_responses.rb +0 -18
  145. data/spec/support/vcr.rb +0 -16
  146. data/spec/sync_page_spec.rb +0 -103
  147. data/spec/sync_spec.rb +0 -180
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Resource Building Examples' do
4
- it 'can deal with arrays' do
5
- request = Contentful::Request.new(nil, 'entries')
6
- response = Contentful::Response.new(raw_fixture('link_array'), request)
7
- resource = Contentful::ResourceBuilder.new(response.object).run
8
-
9
- expect(resource.fields[:links]).to be_a Array
10
- expect(resource.fields[:links].first).to be_a Contentful::Link
11
- end
12
-
13
- it 'replaces links with included versions if present' do
14
- request = Contentful::Request.new(nil, 'entries')
15
- response = Contentful::Response.new(raw_fixture('includes'), request)
16
- resource = Contentful::ResourceBuilder.new(response.object).run.first
17
-
18
- expect(resource.fields[:links]).to be_a Array
19
- expect(resource.fields[:links].first).to be_a Contentful::Entry
20
- end
21
-
22
- it 'can also reference itself' do
23
- request = Contentful::Request.new(nil, 'entries')
24
- response = Contentful::Response.new(raw_fixture('self_link'), request)
25
- resource = Contentful::ResourceBuilder.new(response.object).run.first
26
-
27
- other_resource = resource.fields[:e]
28
- expect(other_resource).to be_a Contentful::Entry
29
- expect(other_resource.fields[:e]).to eq resource
30
- end
31
- end
@@ -1,62 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Contentful::Response do
4
- let(:successful_response) { Contentful::Response.new raw_fixture('nyancat'), Contentful::Request.new(nil, '/entries', nil, 'nyancat') }
5
- let(:error_response) { Contentful::Response.new raw_fixture('not_found', 404) }
6
- let(:unparsable_response) { Contentful::Response.new raw_fixture('unparsable') }
7
-
8
- describe '#raw' do
9
- it 'returns the raw response it has been initalized with' do
10
- expect(successful_response.raw.to_s).to eql raw_fixture('nyancat').to_s
11
- end
12
- end
13
-
14
- describe '#object' do
15
- it "returns the repsonse's parsed json" do
16
- expect(successful_response.object).to eq json_fixture('nyancat')
17
- end
18
- end
19
-
20
- describe '#request' do
21
- it 'returns the request the response has been initalized with' do
22
- expect(successful_response.request).to be_a Contentful::Request
23
- end
24
- end
25
-
26
- describe '#status' do
27
- it 'returns :ok for normal responses' do
28
- expect(successful_response.status).to eq :ok
29
- end
30
-
31
- it 'returns :error for error responses' do
32
- expect(error_response.status).to eq :error
33
- end
34
-
35
- it 'returns :error for unparsable json responses' do
36
- expect(unparsable_response.status).to eq :error
37
- end
38
-
39
- it 'returns :error for responses without content' do
40
- raw_response = ''
41
- allow(raw_response).to receive(:status) { 204 }
42
- no_content_response = Contentful::Response.new raw_response
43
- expect(no_content_response.status).to eq :no_content
44
- end
45
- end
46
-
47
- describe '#error_message' do
48
- it 'returns contentful error message for contentful errors' do
49
- expect(error_response.error_message).to eq 'The resource could not be found.'
50
- end
51
-
52
- it 'returns json parser error message for json parse errors' do
53
- expect(unparsable_response.error_message).to include 'unexpected token'
54
- end
55
-
56
- it 'returns a ServiceUnavailable error on a 503' do
57
- error_response = Contentful::Response.new raw_fixture('not_found', 503)
58
- expect(error_response.status).to eql :error
59
- expect(error_response.object).to be_kind_of Contentful::ServiceUnavailable
60
- end
61
- end
62
- end
data/spec/space_spec.rb DELETED
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Contentful::Space do
4
- let(:space) { vcr('space') { create_client.space } }
5
-
6
- describe 'SystemProperties' do
7
- it 'has a #sys getter returning a hash with symbol keys' do
8
- expect(space.sys).to be_a Hash
9
- expect(space.sys.keys.sample).to be_a Symbol
10
- end
11
-
12
- it 'has #id' do
13
- expect(space.id).to eq 'cfexampleapi'
14
- end
15
-
16
- it 'has #type' do
17
- expect(space.type).to eq 'Space'
18
- end
19
- end
20
-
21
- describe 'Properties' do
22
- it 'has #name' do
23
- expect(space.name).to eq 'Contentful Example API'
24
- end
25
-
26
- it 'has #locales' do
27
- expect(space.locales).to be_a Array
28
- expect(space.locales.first).to be_a Contentful::Locale
29
- end
30
- end
31
- end
data/spec/spec_helper.rb DELETED
@@ -1,14 +0,0 @@
1
- require 'simplecov'
2
- SimpleCov.start
3
-
4
- require 'rspec'
5
- require 'contentful'
6
- require 'securerandom'
7
- require 'rr'
8
-
9
- Dir[File.dirname(__FILE__) + '/support/**/*.rb'].each { |f| require f }
10
-
11
- RSpec.configure do |config|
12
- config.filter_run :focus => true
13
- config.run_all_when_everything_filtered = true
14
- end
@@ -1,6 +0,0 @@
1
- def create_client(options = {})
2
- Contentful::Client.new({
3
- space: 'cfexampleapi',
4
- access_token: 'b4c0n73n7fu1',
5
- }.merge(options))
6
- end
@@ -1,18 +0,0 @@
1
- require 'multi_json'
2
-
3
- def raw_fixture(which, status = 200, _as_json = false, headers = {})
4
- object = Object.new
5
- allow(object).to receive(:status) { status }
6
- allow(object).to receive(:headers) { headers }
7
- allow(object).to receive(:to_s) { File.read File.dirname(__FILE__) + "/../fixtures/json_responses/#{which}.json" }
8
- allow(object).to receive(:body) { object.to_s }
9
- allow(object).to receive(:[]) { |key| object.headers[key] }
10
-
11
- object
12
- end
13
-
14
- def json_fixture(which, _as_json = false)
15
- MultiJson.load(
16
- File.read File.dirname(__FILE__) + "/../fixtures/json_responses/#{which}.json"
17
- )
18
- end
data/spec/support/vcr.rb DELETED
@@ -1,16 +0,0 @@
1
- require 'vcr'
2
-
3
- VCR.configure do |c|
4
- c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
5
- c.ignore_localhost = true
6
- c.hook_into :webmock
7
- c.default_cassette_options = { record: :once }
8
- end
9
-
10
- def vcr(name, &block)
11
- VCR.use_cassette(name, &block)
12
- end
13
-
14
- def expect_vcr(name, &block)
15
- expect { VCR.use_cassette(name, &block) }
16
- end
@@ -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