contentful 2.16.0 → 2.16.1
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.
- 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
|