contentful 2.16.0 → 2.16.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/contentful/version.rb +1 -1
- metadata +3 -370
- data/.gitignore +0 -7
- data/.rspec +0 -1
- data/.rubocop.yml +0 -31
- data/.rubocop_todo.yml +0 -35
- data/.travis.yml +0 -15
- data/.yardopts +0 -4
- data/Gemfile +0 -9
- data/Guardfile +0 -24
- data/RELEASE.md +0 -8
- data/Rakefile +0 -33
- data/contentful.gemspec +0 -44
- data/examples/custom_classes.rb +0 -39
- data/examples/example_queries.rb +0 -26
- data/examples/raise_errors.rb +0 -20
- data/examples/raw_mode.rb +0 -14
- data/spec/array_spec.rb +0 -187
- data/spec/asset_spec.rb +0 -220
- data/spec/auto_includes_spec.rb +0 -12
- data/spec/client_class_spec.rb +0 -86
- data/spec/client_configuration_spec.rb +0 -394
- data/spec/content_type_spec.rb +0 -49
- data/spec/deleted_asset_spec.rb +0 -38
- data/spec/deleted_entry_spec.rb +0 -38
- data/spec/entry_spec.rb +0 -815
- data/spec/error_class_spec.rb +0 -327
- data/spec/error_requests_spec.rb +0 -87
- data/spec/field_spec.rb +0 -95
- data/spec/file_spec.rb +0 -33
- data/spec/fixtures/json_responses/400_details_errors_object.json +0 -14
- data/spec/fixtures/json_responses/400_details_errors_string.json +0 -12
- data/spec/fixtures/json_responses/400_details_string.json +0 -8
- data/spec/fixtures/json_responses/403_reasons.json +0 -13
- data/spec/fixtures/json_responses/404_details_string.json +0 -8
- data/spec/fixtures/json_responses/404_id.json +0 -11
- data/spec/fixtures/json_responses/404_sys_type.json +0 -12
- data/spec/fixtures/json_responses/404_type.json +0 -10
- data/spec/fixtures/json_responses/content_type.json +0 -83
- data/spec/fixtures/json_responses/default_400.json +0 -7
- data/spec/fixtures/json_responses/default_401.json +0 -7
- data/spec/fixtures/json_responses/default_403.json +0 -7
- data/spec/fixtures/json_responses/default_404.json +0 -7
- data/spec/fixtures/json_responses/default_429.json +0 -7
- data/spec/fixtures/json_responses/default_500.json +0 -7
- data/spec/fixtures/json_responses/default_502.json +0 -7
- data/spec/fixtures/json_responses/default_503.json +0 -7
- data/spec/fixtures/json_responses/includes.json +0 -111
- data/spec/fixtures/json_responses/link_array.json +0 -43
- data/spec/fixtures/json_responses/not_found.json +0 -13
- data/spec/fixtures/json_responses/nyancat.json +0 -48
- data/spec/fixtures/json_responses/other_error.json +0 -9
- data/spec/fixtures/json_responses/other_error_no_details.json +0 -8
- data/spec/fixtures/json_responses/other_error_no_message.json +0 -8
- data/spec/fixtures/json_responses/other_error_no_request_id.json +0 -8
- data/spec/fixtures/json_responses/other_error_nothing.json +0 -6
- data/spec/fixtures/json_responses/self_link.json +0 -82
- data/spec/fixtures/json_responses/unparsable.json +0 -13
- data/spec/fixtures/vcr_cassettes/array.yml +0 -288
- data/spec/fixtures/vcr_cassettes/array/marshal_custom_classes.yml +0 -159
- data/spec/fixtures/vcr_cassettes/array/marshal_unpublished.yml +0 -315
- data/spec/fixtures/vcr_cassettes/array/nested_resources.yml +0 -159
- data/spec/fixtures/vcr_cassettes/arrayField.yml +0 -87
- data/spec/fixtures/vcr_cassettes/array_page_1.yml +0 -106
- data/spec/fixtures/vcr_cassettes/array_page_2.yml +0 -73
- data/spec/fixtures/vcr_cassettes/asset.yml +0 -96
- data/spec/fixtures/vcr_cassettes/asset/select_empty_array.yml +0 -104
- data/spec/fixtures/vcr_cassettes/asset/select_no_sys.yml +0 -119
- data/spec/fixtures/vcr_cassettes/asset/select_one_field.yml +0 -97
- data/spec/fixtures/vcr_cassettes/asset/select_only_sys.yml +0 -88
- data/spec/fixtures/vcr_cassettes/asset/with_tags.yml +0 -138
- data/spec/fixtures/vcr_cassettes/assets/issues_129.yml +0 -90
- data/spec/fixtures/vcr_cassettes/assets/issues_jekyll_46.yml +0 -115
- data/spec/fixtures/vcr_cassettes/bad_request.yml +0 -76
- data/spec/fixtures/vcr_cassettes/content_type.yml +0 -147
- data/spec/fixtures/vcr_cassettes/entries.yml +0 -561
- data/spec/fixtures/vcr_cassettes/entries/empty_fields.yml +0 -246
- data/spec/fixtures/vcr_cassettes/entries/issue_117.yml +0 -201
- data/spec/fixtures/vcr_cassettes/entries/issue_125.yml +0 -198
- data/spec/fixtures/vcr_cassettes/entries/rich_text.yml +0 -1707
- data/spec/fixtures/vcr_cassettes/entries/rich_text_hydration_issue.yml +0 -460
- data/spec/fixtures/vcr_cassettes/entries/rich_text_nested_fields.yml +0 -653
- data/spec/fixtures/vcr_cassettes/entries/rich_text_unresolved_relationships.yml +0 -983
- data/spec/fixtures/vcr_cassettes/entries/unresolvable_assets.yml +0 -89
- data/spec/fixtures/vcr_cassettes/entries/unresolvable_filter.yml +0 -159
- data/spec/fixtures/vcr_cassettes/entries/unresolvable_filter_deeply_nested.yml +0 -167
- data/spec/fixtures/vcr_cassettes/entry.yml +0 -102
- data/spec/fixtures/vcr_cassettes/entry/custom_resource.yml +0 -168
- data/spec/fixtures/vcr_cassettes/entry/include_resolution.yml +0 -101
- data/spec/fixtures/vcr_cassettes/entry/include_resolution_uniques.yml +0 -81
- data/spec/fixtures/vcr_cassettes/entry/json_objects.yml +0 -88
- data/spec/fixtures/vcr_cassettes/entry/json_objects_client.yml +0 -86
- data/spec/fixtures/vcr_cassettes/entry/marshal_138.yml +0 -159
- data/spec/fixtures/vcr_cassettes/entry/marshal_unpublished.yml +0 -303
- data/spec/fixtures/vcr_cassettes/entry/marshall.yml +0 -293
- data/spec/fixtures/vcr_cassettes/entry/raw.yml +0 -201
- data/spec/fixtures/vcr_cassettes/entry/search_link_to_asset.yml +0 -81
- data/spec/fixtures/vcr_cassettes/entry/search_link_to_entry.yml +0 -81
- data/spec/fixtures/vcr_cassettes/entry/search_link_to_entry_with_custom_query.yml +0 -115
- data/spec/fixtures/vcr_cassettes/entry/select_empty_array.yml +0 -111
- data/spec/fixtures/vcr_cassettes/entry/select_no_sys.yml +0 -102
- data/spec/fixtures/vcr_cassettes/entry/select_one_field.yml +0 -76
- data/spec/fixtures/vcr_cassettes/entry/select_one_field_proper.yml +0 -114
- data/spec/fixtures/vcr_cassettes/entry/select_only_sys.yml +0 -111
- data/spec/fixtures/vcr_cassettes/entry/with_tags.yml +0 -238
- data/spec/fixtures/vcr_cassettes/entry_cache.yml +0 -288
- data/spec/fixtures/vcr_cassettes/entry_locales.yml +0 -104
- data/spec/fixtures/vcr_cassettes/field.yml +0 -147
- data/spec/fixtures/vcr_cassettes/human.yml +0 -118
- data/spec/fixtures/vcr_cassettes/linkField.yml +0 -83
- data/spec/fixtures/vcr_cassettes/locale.yml +0 -83
- data/spec/fixtures/vcr_cassettes/locale_from_environment.yml +0 -121
- data/spec/fixtures/vcr_cassettes/location.yml +0 -193
- data/spec/fixtures/vcr_cassettes/multi_locale_array_reference.yml +0 -196
- data/spec/fixtures/vcr_cassettes/multi_locale_reference.yml +0 -214
- data/spec/fixtures/vcr_cassettes/not_found.yml +0 -76
- data/spec/fixtures/vcr_cassettes/nyancat.yml +0 -102
- data/spec/fixtures/vcr_cassettes/query_array_1.yml +0 -89
- data/spec/fixtures/vcr_cassettes/query_array_2.yml +0 -89
- data/spec/fixtures/vcr_cassettes/ratelimit.yml +0 -64
- data/spec/fixtures/vcr_cassettes/ratelimit_retry.yml +0 -294
- data/spec/fixtures/vcr_cassettes/reloaded_entry.yml +0 -102
- data/spec/fixtures/vcr_cassettes/space.yml +0 -83
- data/spec/fixtures/vcr_cassettes/sync_deleted_asset.yml +0 -174
- data/spec/fixtures/vcr_cassettes/sync_deleted_entry.yml +0 -89
- data/spec/fixtures/vcr_cassettes/sync_deletion.yml +0 -191
- data/spec/fixtures/vcr_cassettes/sync_environment.yml +0 -81
- data/spec/fixtures/vcr_cassettes/sync_page.yml +0 -637
- data/spec/fixtures/vcr_cassettes/sync_page_2.yml +0 -71
- data/spec/fixtures/vcr_cassettes/sync_page_short.yml +0 -106
- data/spec/fixtures/vcr_cassettes/unauthorized.yml +0 -64
- data/spec/fixtures/vcr_cassettes/unavailable.yml +0 -76
- data/spec/link_spec.rb +0 -50
- data/spec/locale_spec.rb +0 -37
- data/spec/location_spec.rb +0 -25
- data/spec/request_spec.rb +0 -57
- data/spec/resource_building_spec.rb +0 -31
- data/spec/response_spec.rb +0 -62
- data/spec/space_spec.rb +0 -31
- data/spec/spec_helper.rb +0 -14
- data/spec/support/client.rb +0 -6
- data/spec/support/json_responses.rb +0 -18
- data/spec/support/vcr.rb +0 -16
- data/spec/sync_page_spec.rb +0 -103
- 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
|
data/spec/response_spec.rb
DELETED
@@ -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
|
data/spec/support/client.rb
DELETED
@@ -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
|
data/spec/sync_page_spec.rb
DELETED
@@ -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
|