spec/lib/contentful/management/entry_spec.rb in contentful-management-2.0.1 vs spec/lib/contentful/management/entry_spec.rb in contentful-management-2.0.2
- old
+ new
@@ -13,1093 +13,1096 @@
def info(message)
@retry_attempts += 1 if message.include?('Contentful Management API Rate Limit Hit! Retrying')
end
end
-module Contentful
- module Management
- describe Entry do
- let(:token) { ENV.fetch('CF_TEST_CMA_TOKEN', '<ACCESS_TOKEN>') }
- let(:space_id) { 'yr5m0jky5hsh' }
- let(:entry_id) { '4Rouux8SoUCKwkyCq2I0E0' }
+describe Contentful::Management::Entry do
+ let(:token) { ENV.fetch('CF_TEST_CMA_TOKEN', '<ACCESS_TOKEN>') }
+ let(:space_id) { 'yr5m0jky5hsh' }
+ let(:entry_id) { '4Rouux8SoUCKwkyCq2I0E0' }
- let!(:client) { Client.new(token) }
+ let!(:client) { Contentful::Management::Client.new(token) }
- subject { client.entries(space_id, 'master') }
+ subject { client.entries(space_id, 'master') }
- describe '.all' do
- it 'class method also works' do
- vcr('entry/all') { expect(Contentful::Management::Entry.all(client, 'bfsvtul0c41g', 'master')).to be_kind_of Contentful::Management::Array }
- end
- it 'returns a Contentful::Array' do
- vcr('entry/all') { expect(described_class.all(client, 'bfsvtul0c41g', 'master')).to be_kind_of Contentful::Management::Array }
- end
- it 'builds a Contentful::Management::Entry object' do
- vcr('entry/all') { expect(described_class.all(client, 'bfsvtul0c41g', 'master').first).to be_kind_of Contentful::Management::Entry }
- end
- it 'returns entries in context of specified content type' do
- vcr('entry/content_type_entires') do
- entries = described_class.all(client, 'bfsvtul0c41g', 'master', content_type: 'category_content_type')
- expect(entries).to be_kind_of Contentful::Management::Array
- expect(entries.first).to be_kind_of Contentful::Management::Entry
- expect(entries.first.sys[:contentType].id).to eq 'category_content_type'
- end
- end
- it 'return limited number of entries with next_page' do
- vcr('entry/limited_entries') do
- entries = described_class.all(client, 'bfsvtul0c41g', 'master', limit: 20, skip: 2)
- expect(entries).to be_kind_of Contentful::Management::Array
- expect(entries.limit).to eq 20
- expect(entries.skip).to eq 2
- entries.next_page
- end
- end
- it 'supports select operator' do
- vcr('entry/select_operator') do
- nyancat = described_class.all(client, 'cfexampleapi', 'master', 'sys.id' => 'nyancat', content_type: 'cat', select: 'fields.lives').first
- expect(nyancat.fields).to eq({lives: 1337})
- end
- end
+ describe '.all' do
+ it 'class method also works' do
+ vcr('entry/all') { expect(Contentful::Management::Entry.all(client, 'bfsvtul0c41g', 'master')).to be_kind_of Contentful::Management::Array }
+ end
+ it 'returns a Contentful::Array' do
+ vcr('entry/all') { expect(described_class.all(client, 'bfsvtul0c41g', 'master')).to be_kind_of Contentful::Management::Array }
+ end
+ it 'builds a Contentful::Management::Entry object' do
+ vcr('entry/all') { expect(described_class.all(client, 'bfsvtul0c41g', 'master').first).to be_kind_of Contentful::Management::Entry }
+ end
+ it 'returns entries in context of specified content type' do
+ vcr('entry/content_type_entires') do
+ entries = described_class.all(client, 'bfsvtul0c41g', 'master', content_type: 'category_content_type')
+ expect(entries).to be_kind_of Contentful::Management::Array
+ expect(entries.first).to be_kind_of Contentful::Management::Entry
+ expect(entries.first.sys[:contentType].id).to eq 'category_content_type'
end
+ end
+ it 'return limited number of entries with next_page' do
+ vcr('entry/limited_entries') do
+ entries = described_class.all(client, 'bfsvtul0c41g', 'master', limit: 20, skip: 2)
+ expect(entries).to be_kind_of Contentful::Management::Array
+ expect(entries.limit).to eq 20
+ expect(entries.skip).to eq 2
+ entries.next_page
+ end
+ end
+ it 'supports select operator' do
+ vcr('entry/select_operator') do
+ nyancat = described_class.all(client, 'cfexampleapi', 'master', 'sys.id' => 'nyancat', content_type: 'cat', select: 'fields.lives').first
+ expect(nyancat.fields).to eq({lives: 1337})
+ end
+ end
+ end
- describe '.find' do
- it 'class method also works' do
- vcr('entry/find') { expect(Contentful::Management::Entry.find(client, space_id, 'master', entry_id)).to be_kind_of Contentful::Management::Entry }
- end
+ describe '.find' do
+ it 'class method also works' do
+ vcr('entry/find') { expect(Contentful::Management::Entry.find(client, space_id, 'master', entry_id)).to be_kind_of Contentful::Management::Entry }
+ end
- it 'returns null as nil on empty Symbols' do
- vcr('entry/find-with-null-symbols') do
- space = client.spaces.find(space_id)
- entry = client.entries(space.id, 'master').find(entry_id)
- expect(entry.fields[:videoid]).to_not be_kind_of(String)
- expect(entry.fields[:videoid]).to be_nil
- end
- end
+ it 'returns null as nil on empty Symbols' do
+ vcr('entry/find-with-null-symbols') do
+ space = client.spaces.find(space_id)
+ entry = client.entries(space.id, 'master').find(entry_id)
+ expect(entry.fields[:videoid]).to_not be_kind_of(String)
+ expect(entry.fields[:videoid]).to be_nil
+ end
+ end
- it 'returns a Contentful::Management::Entry' do
- vcr('entry/find') { expect(subject.find(entry_id)).to be_kind_of Contentful::Management::Entry }
- end
+ it 'returns a Contentful::Management::Entry' do
+ vcr('entry/find') { expect(subject.find(entry_id)).to be_kind_of Contentful::Management::Entry }
+ end
- it 'returns the entry for a given key' do
- vcr('entry/find') do
- entry = subject.find(entry_id)
- expect(entry.id).to eql entry_id
- end
- end
- it 'returns an error when entry does not exists' do
- vcr('entry/find_not_found') do
- result = subject.find('not_exist')
- expect(result).to be_kind_of Contentful::Management::NotFound
- end
- end
- context 'raise_error when space not found' do
- let!(:client) { Client.new(token, raise_errors: true) }
- it 'returns an error when entry does not exists' do
- expect_vcr('entry/find_not_found') do
- subject.find('not_exist')
- end.to raise_error Contentful::Management::NotFound
- end
- end
+ it 'returns the entry for a given key' do
+ vcr('entry/find') do
+ entry = subject.find(entry_id)
+ expect(entry.id).to eql entry_id
+ end
+ end
+ it 'returns an error when entry does not exists' do
+ vcr('entry/find_not_found') do
+ result = subject.find('not_exist')
+ expect(result).to be_kind_of Contentful::Management::NotFound
+ end
+ end
+ context 'raise_error when space not found' do
+ let!(:client) { Contentful::Management::Client.new(token, raise_errors: true) }
+ it 'returns an error when entry does not exists' do
+ expect_vcr('entry/find_not_found') do
+ subject.find('not_exist')
+ end.to raise_error Contentful::Management::NotFound
+ end
+ end
- it 'returns an error when service is unavailable' do
- vcr('entry/service_unavailable') do
- result = subject.find('not_exist')
- expect(result).to be_kind_of Contentful::Management::ServiceUnavailable
- message = [
- "HTTP status code: 503 Service Unavailable",
- "Message: Service unavailable."
- ].join("\n")
- expect(result.message).to eq message
- end
- end
+ it 'returns an error when service is unavailable' do
+ vcr('entry/service_unavailable') do
+ result = subject.find('not_exist')
+ expect(result).to be_kind_of Contentful::Management::ServiceUnavailable
+ message = [
+ "HTTP status code: 503 Service Unavailable",
+ "Message: Service unavailable."
+ ].join("\n")
+ expect(result.message).to eq message
end
+ end
+ end
- describe '#destroy' do
- it 'returns Contentful::BadRequest error when content type is published' do
- vcr('entry/destory_published') do
- result = subject.find('3U7JqGuVzOWIimU40mKeem').destroy
- expect(result).to be_kind_of Contentful::Management::BadRequest
- message = [
- "HTTP status code: 400 Bad Request",
- "Message: Cannot deleted published"
- ].join("\n")
- expect(result.message).to eq message
- end
- end
- it 'returns true when entry is not published' do
- vcr('entry/destroy') do
- result = subject.find('3U7JqGuVzOWIimU40mKeem').destroy
- expect(result).to eq true
- end
- end
+ describe '#destroy' do
+ it 'returns Contentful::BadRequest error when content type is published' do
+ vcr('entry/destory_published') do
+ result = subject.find('3U7JqGuVzOWIimU40mKeem').destroy
+ expect(result).to be_kind_of Contentful::Management::BadRequest
+ message = [
+ "HTTP status code: 400 Bad Request",
+ "Message: Cannot deleted published"
+ ].join("\n")
+ expect(result.message).to eq message
end
+ end
+ it 'returns true when entry is not published' do
+ vcr('entry/destroy') do
+ result = subject.find('3U7JqGuVzOWIimU40mKeem').destroy
+ expect(result).to eq true
+ end
+ end
+ end
- describe '#unpublish' do
- it 'unpublish the entry' do
- vcr('entry/unpublish') do
- entry = subject.find(entry_id)
- initial_version = entry.sys[:version]
- entry.unpublish
- expect(entry).to be_kind_of Contentful::Management::Entry
- expect(entry.sys[:version]).to eql initial_version + 1
- end
- end
+ describe '#unpublish' do
+ it 'unpublish the entry' do
+ vcr('entry/unpublish') do
+ entry = subject.find(entry_id)
+ initial_version = entry.sys[:version]
+ entry.unpublish
+ expect(entry).to be_kind_of Contentful::Management::Entry
+ expect(entry.sys[:version]).to eql initial_version + 1
+ end
+ end
- it 'returns BadRequest error when already unpublished' do
- vcr('entry/unpublish_already_unpublished') do
- result = subject.find(entry_id).unpublish
- expect(result).to be_kind_of Contentful::Management::BadRequest
- message = [
- "HTTP status code: 400 Bad Request",
- "Message: Not published"
- ].join("\n")
- expect(result.message).to eq message
- expect(result.error[:message]).to eq 'Not published'
- expect(result.error[:url]).to eq 'spaces/yr5m0jky5hsh/environments/master/entries/4Rouux8SoUCKwkyCq2I0E0/published'
- expect(result.error[:details]).to eq "{\n \"sys\": {\n \"type\": \"Error\",\n \"id\": \"BadRequest\"\n },\n \"message\": \"Not published\"\n}\n"
- end
- end
+ it 'returns BadRequest error when already unpublished' do
+ vcr('entry/unpublish_already_unpublished') do
+ result = subject.find(entry_id).unpublish
+ expect(result).to be_kind_of Contentful::Management::BadRequest
+ message = [
+ "HTTP status code: 400 Bad Request",
+ "Message: Not published"
+ ].join("\n")
+ expect(result.message).to eq message
+ expect(result.error[:message]).to eq 'Not published'
+ expect(result.error[:url]).to eq 'spaces/yr5m0jky5hsh/environments/master/entries/4Rouux8SoUCKwkyCq2I0E0/published'
+ expect(result.error[:details]).to eq "{\n \"sys\": {\n \"type\": \"Error\",\n \"id\": \"BadRequest\"\n },\n \"message\": \"Not published\"\n}\n"
end
+ end
+ end
- describe '#publish' do
- it 'returns Contentful::Management::Entry' do
- vcr('entry/publish') do
- entry = subject.find(entry_id)
- initial_version = entry.sys[:version]
- entry.publish
- expect(entry).to be_kind_of Contentful::Management::Entry
- expect(entry.sys[:version]).to eql initial_version + 1
- end
- end
- it 'returns BadRequest error when already published' do
- vcr('entry/publish_already_published') do
- entry = subject.find(entry_id)
- entry.sys[:version] = -1
- result = entry.publish
- expect(result).to be_kind_of Contentful::Management::Conflict
- end
- end
+ describe '#publish' do
+ it 'returns Contentful::Management::Entry' do
+ vcr('entry/publish') do
+ entry = subject.find(entry_id)
+ initial_version = entry.sys[:version]
+ entry.publish
+ expect(entry).to be_kind_of Contentful::Management::Entry
+ expect(entry.sys[:version]).to eql initial_version + 1
end
+ end
+ it 'returns BadRequest error when already published' do
+ vcr('entry/publish_already_published') do
+ entry = subject.find(entry_id)
+ entry.sys[:version] = -1
+ result = entry.publish
+ expect(result).to be_kind_of Contentful::Management::Conflict
+ end
+ end
+ end
- describe '#published?' do
- it 'returns true if entry is published' do
- vcr('entry/published_true') do
- entry = subject.find(entry_id)
- entry.publish
- expect(entry.published?).to be_truthy
- end
- end
- it 'returns false if entry is not published' do
- vcr('entry/published_false') do
- entry = subject.find(entry_id)
- entry.unpublish
- expect(entry.published?).to be_falsey
- end
- end
+ describe '#published?' do
+ it 'returns true if entry is published' do
+ vcr('entry/published_true') do
+ entry = subject.find(entry_id)
+ entry.publish
+ expect(entry.published?).to be_truthy
end
+ end
+ it 'returns false if entry is not published' do
+ vcr('entry/published_false') do
+ entry = subject.find(entry_id)
+ entry.unpublish
+ expect(entry.published?).to be_falsey
+ end
+ end
+ end
- describe '#unarchive' do
- it 'unarchive the entry' do
- vcr('entry/unarchive') do
- entry = subject.find(entry_id)
- initial_version = entry.sys[:version]
- entry.unarchive
- expect(entry).to be_kind_of Contentful::Management::Entry
- expect(entry.sys[:version]).to eql initial_version + 1
- end
- end
- it 'returns BadRequest error when already unpublished' do
- vcr('entry/unarchive_already_unarchived') do
- result = subject.find(entry_id).unarchive
- expect(result).to be_kind_of Contentful::Management::BadRequest
- end
- end
+ describe '#unarchive' do
+ it 'unarchive the entry' do
+ vcr('entry/unarchive') do
+ entry = subject.find(entry_id)
+ initial_version = entry.sys[:version]
+ entry.unarchive
+ expect(entry).to be_kind_of Contentful::Management::Entry
+ expect(entry.sys[:version]).to eql initial_version + 1
+ end
+ end
+ it 'returns BadRequest error when already unpublished' do
+ vcr('entry/unarchive_already_unarchived') do
+ result = subject.find(entry_id).unarchive
+ expect(result).to be_kind_of Contentful::Management::BadRequest
+ end
+ end
- it 'returns BadRequest error when already unarchived' do
- vcr('entry/unarchive_already_unarchived') do
- result = subject.find(entry_id).unarchive
- expect(result).to be_kind_of Contentful::Management::BadRequest
- message = [
- "HTTP status code: 400 Bad Request",
- "Message: Not archived"
- ].join("\n")
- expect(result.message).to eq message
- end
- end
+ it 'returns BadRequest error when already unarchived' do
+ vcr('entry/unarchive_already_unarchived') do
+ result = subject.find(entry_id).unarchive
+ expect(result).to be_kind_of Contentful::Management::BadRequest
+ message = [
+ "HTTP status code: 400 Bad Request",
+ "Message: Not archived"
+ ].join("\n")
+ expect(result.message).to eq message
end
+ end
+ end
- describe '#archive' do
- it 'entry' do
- vcr(:'entry/archive') do
- entry = subject.find('3U7JqGuVzOWIimU40mKeem')
- initial_version = entry.sys[:version]
- entry.archive
- expect(entry).to be_kind_of Contentful::Management::Entry
- expect(entry.sys[:version]).to eql initial_version + 1
- end
- end
- it 'returns error when archive published entry' do
- vcr('entry/archive_published') do
- entry = subject.find(entry_id).archive
- expect(entry).to be_kind_of Contentful::Management::BadRequest
- message = [
- "HTTP status code: 400 Bad Request",
- "Message: Cannot archive published"
- ].join("\n")
- expect(entry.message).to eq message
- end
- end
+ describe '#archive' do
+ it 'entry' do
+ vcr(:'entry/archive') do
+ entry = subject.find('3U7JqGuVzOWIimU40mKeem')
+ initial_version = entry.sys[:version]
+ entry.archive
+ expect(entry).to be_kind_of Contentful::Management::Entry
+ expect(entry.sys[:version]).to eql initial_version + 1
end
+ end
+ it 'returns error when archive published entry' do
+ vcr('entry/archive_published') do
+ entry = subject.find(entry_id).archive
+ expect(entry).to be_kind_of Contentful::Management::BadRequest
+ message = [
+ "HTTP status code: 400 Bad Request",
+ "Message: Cannot archive published"
+ ].join("\n")
+ expect(entry.message).to eq message
+ end
+ end
+ end
- describe '#archived?' do
- it 'returns true if entry is archived' do
- vcr('entry/archived_true') do
- entry = subject.find(entry_id)
- entry.archive
- expect(entry.archived?).to be_truthy
- end
- end
- it 'returns false if entry is not archived' do
- vcr('entry/archived_false') do
- entry = subject.find(entry_id)
- entry.unarchive
- expect(entry.archived?).to be_falsey
- end
- end
+ describe '#archived?' do
+ it 'returns true if entry is archived' do
+ vcr('entry/archived_true') do
+ entry = subject.find(entry_id)
+ entry.archive
+ expect(entry.archived?).to be_truthy
end
+ end
+ it 'returns false if entry is not archived' do
+ vcr('entry/archived_false') do
+ entry = subject.find(entry_id)
+ entry.unarchive
+ expect(entry.archived?).to be_falsey
+ end
+ end
+ end
- describe '.create' do
- let(:content_type_id) { '5DSpuKrl04eMAGQoQckeIq' }
- let(:content_type) { client.content_types(space_id, 'master').find(content_type_id) }
+ describe '.create' do
+ let(:content_type_id) { '5DSpuKrl04eMAGQoQckeIq' }
+ let(:content_type) { client.content_types(space_id, 'master').find(content_type_id) }
- it 'create with all attributes' do
- vcr('entry/create') do
- content_type = client.content_types('ene4qtp2sh7u', 'master').find('5BHZB1vi4ooq4wKcmA8e2c')
- location = Location.new.tap do |loc|
- loc.lat = 22.44
- loc.lon = 33.33
- end
- file = client.assets('ene4qtp2sh7u', 'master').find('2oNoT3vSAs82SOIQmKe0KG')
- entry_att = described_class.find(client, 'ene4qtp2sh7u', 'master', '60zYC7nY9GcKGiCYwAs4wm')
- entry = client.entries('ene4qtp2sh7u', 'master').create(
- content_type,
- name: 'Test name',
- number: 30,
- float1: 1.1,
- boolean: true, date: '2000-07-12T11:11:00+02:00',
- time: '2000-07-12T11:11:00+02:00',
- location: location,
- file: file,
- image: file,
- array: %w(PL USD XX),
- entry: entry_att,
- entries: [entry_att, entry_att],
- object_json: {'test' => {'@type' => 'Codequest'}}
- )
- expect(entry.name).to eq 'Test name'
- expect(entry.number).to eq 30
- expect(entry.float1).to eq 1.1
- expect(entry.boolean).to eq true
- expect(entry.date.to_s).to eq '2000-07-12T11:11:00+02:00'
- expect(entry.time.to_s).to eq '2000-07-12T11:11:00+02:00'
- expect(entry.file['sys']['id']).to eq '2oNoT3vSAs82SOIQmKe0KG'
- expect(entry.image['sys']['id']).to eq '2oNoT3vSAs82SOIQmKe0KG'
- expect(entry.array).to eq %w(PL USD XX)
- expect(entry.entry['sys']['id']).to eq entry_att.id
- expect(entry.entries.first['sys']['id']).to eq entry_att.id
- end
+ it 'create with all attributes' do
+ vcr('entry/create') do
+ content_type = client.content_types('ene4qtp2sh7u', 'master').find('5BHZB1vi4ooq4wKcmA8e2c')
+ location = Contentful::Management::Location.new.tap do |loc|
+ loc.lat = 22.44
+ loc.lon = 33.33
end
- it 'with location' do
- vcr('entry/create_with_location') do
- location = Location.new
- location.lat = 22.44
- location.lon = 33.33
+ file = client.assets('ene4qtp2sh7u', 'master').find('2oNoT3vSAs82SOIQmKe0KG')
+ entry_att = described_class.find(client, 'ene4qtp2sh7u', 'master', '60zYC7nY9GcKGiCYwAs4wm')
+ entry = client.entries('ene4qtp2sh7u', 'master').create(
+ content_type,
+ name: 'Test name',
+ number: 30,
+ float1: 1.1,
+ boolean: true, date: '2000-07-12T11:11:00+02:00',
+ time: '2000-07-12T11:11:00+02:00',
+ location: location,
+ file: file,
+ image: file,
+ array: %w(PL USD XX),
+ entry: entry_att,
+ entries: [entry_att, entry_att],
+ object_json: {'test' => {'@type' => 'Codequest'}}
+ )
+ expect(entry.name).to eq 'Test name'
+ expect(entry.number).to eq 30
+ expect(entry.float1).to eq 1.1
+ expect(entry.boolean).to eq true
+ expect(entry.date.to_s).to eq '2000-07-12T11:11:00+02:00'
+ expect(entry.time.to_s).to eq '2000-07-12T11:11:00+02:00'
+ expect(entry.file['sys']['id']).to eq '2oNoT3vSAs82SOIQmKe0KG'
+ expect(entry.image['sys']['id']).to eq '2oNoT3vSAs82SOIQmKe0KG'
+ expect(entry.array).to eq %w(PL USD XX)
+ expect(entry.entry['sys']['id']).to eq entry_att.id
+ expect(entry.entries.first['sys']['id']).to eq entry_att.id
+ end
+ end
+ it 'with location' do
+ vcr('entry/create_with_location') do
+ location = Contentful::Management::Location.new
+ location.lat = 22.44
+ location.lon = 33.33
- entry = subject.create(content_type, name: 'Tom Handy', age: 30, city: location)
- expect(entry).to be_kind_of Contentful::Management::Entry
- expect(entry.name).to eq 'Tom Handy'
- expect(entry.age).to eq 30
- expect(entry.city.properties[:lat]).to eq location.lat
- expect(entry.city.properties[:lon]).to eq location.lon
- end
- end
+ entry = subject.create(content_type, name: 'Tom Handy', age: 30, city: location)
+ expect(entry).to be_kind_of Contentful::Management::Entry
+ expect(entry.name).to eq 'Tom Handy'
+ expect(entry.age).to eq 30
+ expect(entry.city.properties[:lat]).to eq location.lat
+ expect(entry.city.properties[:lon]).to eq location.lon
+ end
+ end
- it 'with entry' do
- vcr('entry/create_with_entry') do
- entry_att = client.entries(space_id, 'master').find('4o6ghKSmSko4i828YCYaEo')
- entry = subject.create(content_type, name: 'EntryWithEntry', age: 20, entry: entry_att)
- expect(entry.name).to eq 'EntryWithEntry'
- expect(entry.age).to eq 20
- expect(entry.fields[:entry]['sys']['id']).to eq entry_att.id
- end
- end
+ it 'with entry' do
+ vcr('entry/create_with_entry') do
+ entry_att = client.entries(space_id, 'master').find('4o6ghKSmSko4i828YCYaEo')
+ entry = subject.create(content_type, name: 'EntryWithEntry', age: 20, entry: entry_att)
+ expect(entry.name).to eq 'EntryWithEntry'
+ expect(entry.age).to eq 20
+ expect(entry.fields[:entry]['sys']['id']).to eq entry_att.id
+ end
+ end
- it 'with entries' do
- vcr('entry/create_with_entries') do
- entry_att = subject.find('1d1QDYzeiyWmgqQYysae8u')
- new_entry = subject.create(content_type,
- name: 'EntryWithEntries',
- age: 20,
- entries: [entry_att, entry_att, entry_att])
- expect(new_entry.name).to eq 'EntryWithEntries'
- expect(new_entry.age).to eq 20
- end
- end
+ it 'with entries' do
+ vcr('entry/create_with_entries') do
+ entry_att = subject.find('1d1QDYzeiyWmgqQYysae8u')
+ new_entry = subject.create(content_type,
+ name: 'EntryWithEntries',
+ age: 20,
+ entries: [entry_att, entry_att, entry_att])
+ expect(new_entry.name).to eq 'EntryWithEntries'
+ expect(new_entry.age).to eq 20
+ end
+ end
- # Only here because we want to keep the contentful.rb-dependency out
- class Contentful::Entry
- attr_accessor :sys, :fields
- def initialize(management_entry)
- @sys = management_entry.sys
- @fields = management_entry.fields
- end
+ # Only here because we want to keep the contentful.rb-dependency out
+ class Contentful::Entry
+ attr_accessor :sys, :fields
+ def initialize(management_entry)
+ @sys = management_entry.sys
+ @fields = management_entry.fields
+ end
- def id
- @sys[:id]
- end
- end
+ def id
+ @sys[:id]
+ end
+ end
- class Contentful::BaseEntry < Contentful::Entry
- end
- #/ Only here because we want to keep the contentful.rb-dependency out
+ class Contentful::BaseEntry < Contentful::Entry
+ end
+ #/ Only here because we want to keep the contentful.rb-dependency out
- it 'with entry inherited from Contentful::Entry' do
- vcr('entry/create_with_entry') do
- entry_att = Contentful::BaseEntry.new(client.entries(space_id, 'master').find('4o6ghKSmSko4i828YCYaEo'))
- entry = subject.create(content_type, name: 'EntryWithEntry', age: 20, entry: entry_att)
- expect(entry.name).to eq 'EntryWithEntry'
- expect(entry.age).to eq 20
- expect(entry.fields[:entry]['sys']['id']).to eq entry_att.id
- end
- end
+ it 'with entry inherited from Contentful::Entry' do
+ vcr('entry/create_with_entry') do
+ entry_att = Contentful::BaseEntry.new(client.entries(space_id, 'master').find('4o6ghKSmSko4i828YCYaEo'))
+ entry = subject.create(content_type, name: 'EntryWithEntry', age: 20, entry: entry_att)
+ expect(entry.name).to eq 'EntryWithEntry'
+ expect(entry.age).to eq 20
+ expect(entry.fields[:entry]['sys']['id']).to eq entry_att.id
+ end
+ end
- it 'with entries inherited from Contentful::Entry' do
- vcr('entry/create_with_entries') do
- entry_att = Contentful::BaseEntry.new(subject.find('1d1QDYzeiyWmgqQYysae8u'))
- new_entry = subject.create(content_type,
- name: 'EntryWithEntries',
- age: 20,
- entries: [entry_att, entry_att, entry_att])
- expect(new_entry.name).to eq 'EntryWithEntries'
- expect(new_entry.age).to eq 20
- end
- end
+ it 'with entries inherited from Contentful::Entry' do
+ vcr('entry/create_with_entries') do
+ entry_att = Contentful::BaseEntry.new(subject.find('1d1QDYzeiyWmgqQYysae8u'))
+ new_entry = subject.create(content_type,
+ name: 'EntryWithEntries',
+ age: 20,
+ entries: [entry_att, entry_att, entry_att])
+ expect(new_entry.name).to eq 'EntryWithEntries'
+ expect(new_entry.age).to eq 20
+ end
+ end
- it 'with asset' do
- vcr('entry/create_with_asset') do
- asset = client.assets(space_id, 'master').find('codequest_id_test_custom')
- entry = subject.create(content_type, name: 'OneAsset', asset: asset)
- expect(entry.name).to eq 'OneAsset'
- end
- end
- it 'with assets' do
- vcr('entry/create_with_assets') do
- asset = client.assets(space_id, 'master').find('codequest_id_test_custom')
- entry = subject.create(content_type, name: 'multiAssets', assets: [asset, asset, asset])
- expect(entry.name).to eq 'multiAssets'
- end
- end
- it 'with symbols' do
- vcr('entry/create_with_symbols') do
- entry = subject.create(content_type, name: 'SymbolTest', symbols: %w(PL USD XX))
- expect(entry.name).to eq 'SymbolTest'
- expect(entry.symbols).to eq %w(USD PL XX)
- end
- end
- it 'with custom id' do
- vcr('entry/create_with_custom_id') do
- entry = subject.create(content_type, id: 'custom_id', name: 'Custom Id')
- expect(entry.id).to eq 'custom_id'
- end
- end
- it 'to specified locale' do
- vcr('entry/create_with_specified_locale') do
- space = client.spaces.find('s37a4pe35l1x')
- ct = client.content_types(space.id, 'master').find('category_content_type')
- entry = ct.entries.create(name: 'Create test', description: 'Test - create entry with specified locale.', locale: 'pl-PL')
- expect(entry.name).to eq 'Create test'
- end
- end
+ it 'with asset' do
+ vcr('entry/create_with_asset') do
+ asset = client.assets(space_id, 'master').find('codequest_id_test_custom')
+ entry = subject.create(content_type, name: 'OneAsset', asset: asset)
+ expect(entry.name).to eq 'OneAsset'
+ end
+ end
+ it 'with assets' do
+ vcr('entry/create_with_assets') do
+ asset = client.assets(space_id, 'master').find('codequest_id_test_custom')
+ entry = subject.create(content_type, name: 'multiAssets', assets: [asset, asset, asset])
+ expect(entry.name).to eq 'multiAssets'
+ end
+ end
+ it 'with symbols' do
+ vcr('entry/create_with_symbols') do
+ entry = subject.create(content_type, name: 'SymbolTest', symbols: %w(PL USD XX))
+ expect(entry.name).to eq 'SymbolTest'
+ expect(entry.symbols).to eq %w(USD PL XX)
+ end
+ end
+ it 'with custom id' do
+ vcr('entry/create_with_custom_id') do
+ entry = subject.create(content_type, id: 'custom_id', name: 'Custom Id')
+ expect(entry.id).to eq 'custom_id'
+ end
+ end
+ it 'to specified locale' do
+ vcr('entry/create_with_specified_locale') do
+ space = client.spaces.find('s37a4pe35l1x')
+ ct = client.content_types(space.id, 'master').find('category_content_type')
+ entry = ct.entries.create(name: 'Create test', description: 'Test - create entry with specified locale.', locale: 'pl-PL')
+ expect(entry.name).to eq 'Create test'
+ end
+ end
- it 'too many requests' do
- vcr('entry/too_many_requests') do
- space = client.spaces.find('286arvy86ry9')
- invalid_entry = client.entries(space.id, 'master').find('1YNepnMpXGiMWikaKC4GG0')
- ct = client.content_types(space.id, 'master').find('5lIEiXrCIoKoIKaSW2C8aa')
- entry = ct.entries.create(name: 'Create test', entry: invalid_entry)
- publish = entry.publish
- expect(publish).to be_a RateLimitExceeded
- expect(publish.error[:message]).to eq 'You have exceeded the rate limit of the Organization this Space belongs to by making too many API requests within a short timespan. Please wait a moment before trying the request again.'
- end
- end
+ it 'too many requests' do
+ vcr('entry/too_many_requests') do
+ space = client.spaces.find('286arvy86ry9')
+ invalid_entry = client.entries(space.id, 'master').find('1YNepnMpXGiMWikaKC4GG0')
+ ct = client.content_types(space.id, 'master').find('5lIEiXrCIoKoIKaSW2C8aa')
+ entry = ct.entries.create(name: 'Create test', entry: invalid_entry)
+ publish = entry.publish
+ expect(publish).to be_a Contentful::Management::RateLimitExceeded
+ expect(publish.error[:message]).to eq 'You have exceeded the rate limit of the Organization this Space belongs to by making too many API requests within a short timespan. Please wait a moment before trying the request again.'
+ end
+ end
- it 'too many requests auto-retry' do
- vcr('entry/too_many_requests_retry') do
- logger = RetryLoggerMock.new(STDOUT)
- space = Client.new(token, raise_errors: true, logger: logger).spaces.find('286arvy86ry9')
- invalid_entry = client.entries(space.id, 'master').find('1YNepnMpXGiMWikaKC4GG0')
- ct = client.content_types(space.id, 'master').find('5lIEiXrCIoKoIKaSW2C8aa')
- entry = ct.entries.create(name: 'Create test', entry: invalid_entry)
- entry.publish
+ it 'too many requests auto-retry' do
+ vcr('entry/too_many_requests_retry') do
+ logger = RetryLoggerMock.new(STDOUT)
+ space = Contentful::Management::Client.new(token, raise_errors: true, logger: logger).spaces.find('286arvy86ry9')
+ invalid_entry = client.entries(space.id, 'master').find('1YNepnMpXGiMWikaKC4GG0')
+ ct = client.content_types(space.id, 'master').find('5lIEiXrCIoKoIKaSW2C8aa')
+ entry = ct.entries.create(name: 'Create test', entry: invalid_entry)
+ entry.publish
- expect(logger.retry_attempts).to eq 1
- end
- end
+ expect(logger.retry_attempts).to eq 1
+ end
+ end
- it 'with just an id' do
- vcr('entry/create_with_just_id') do
- space = client.spaces.find('bbukbffokvih')
- entry = client.content_types(space.id, 'master').all.first.entries.create({'id' => 'yol'})
- entry.save
- expect(entry).to be_a Contentful::Management::Entry
- end
- end
+ it 'with just an id' do
+ vcr('entry/create_with_just_id') do
+ space = client.spaces.find('bbukbffokvih')
+ entry = client.content_types(space.id, 'master').all.first.entries.create({'id' => 'yol'})
+ entry.save
+ expect(entry).to be_a Contentful::Management::Entry
end
+ end
+ end
- describe '#update' do
- let(:entry_id) { '1I3qWOiP8k2WWYCogKy88S' }
- it 'update entry' do
- vcr('entry/update') do
- asset = client.assets(space_id, 'master').find('codequest_id_test_custom_id')
- entry_att = subject.find('1d1QDYzeiyWmgqQYysae8u')
- entry = subject.find('4o6ghKSmSko4i828YCYaEo')
+ describe '#update' do
+ let(:entry_id) { '1I3qWOiP8k2WWYCogKy88S' }
+ it 'update entry' do
+ vcr('entry/update') do
+ asset = client.assets(space_id, 'master').find('codequest_id_test_custom_id')
+ entry_att = subject.find('1d1QDYzeiyWmgqQYysae8u')
+ entry = subject.find('4o6ghKSmSko4i828YCYaEo')
- location = Location.new
- location.lat = 22.44
- location.lon = 33.33
+ location = Contentful::Management::Location.new
+ location.lat = 22.44
+ location.lon = 33.33
- result = entry.update(name: 'Tom Handy', age: 20, birthday: '2000-07-12T11:11:00+02:00',
- city: location,
- bool: false,
- asset: asset,
- assets: [asset, asset, asset],
- entry: entry_att,
- entries: [entry_att, entry_att, entry_att],
- symbols: %w(PL USD XX))
+ result = entry.update(name: 'Tom Handy', age: 20, birthday: '2000-07-12T11:11:00+02:00',
+ city: location,
+ bool: false,
+ asset: asset,
+ assets: [asset, asset, asset],
+ entry: entry_att,
+ entries: [entry_att, entry_att, entry_att],
+ symbols: %w(PL USD XX))
- expect(result).to be_kind_of Contentful::Management::Entry
+ expect(result).to be_kind_of Contentful::Management::Entry
- expect(result.fields[:name]).to eq 'Tom Handy'
- expect(result.fields[:age]).to eq 20
- expect(result.fields[:bool]).to eq false
- expect(result.fields[:asset]['sys']['id']).to eq asset.id
- expect(result.fields[:entry]['sys']['id']).to eq entry_att.id
- expect(result.fields[:entries].first['sys']['id']).to eq entry_att.id
- end
- end
+ expect(result.fields[:name]).to eq 'Tom Handy'
+ expect(result.fields[:age]).to eq 20
+ expect(result.fields[:bool]).to eq false
+ expect(result.fields[:asset]['sys']['id']).to eq asset.id
+ expect(result.fields[:entry]['sys']['id']).to eq entry_att.id
+ expect(result.fields[:entries].first['sys']['id']).to eq entry_att.id
+ end
+ end
- it 'update entry for custom locale' do
- vcr('entry/update_with_custom_locale') do
- entry = subject.find('3U7JqGuVzOWIimU40mKeem')
- entry.locale = 'pl'
- result = entry.update(name: 'testName', bool: true)
- expect(result).to be_kind_of Contentful::Management::Entry
- expect(result.fields[:name]).to eq 'testName'
- expect(result.fields[:bool]).to eq true
- end
- end
+ it 'update entry for custom locale' do
+ vcr('entry/update_with_custom_locale') do
+ entry = subject.find('3U7JqGuVzOWIimU40mKeem')
+ entry.locale = 'pl'
+ result = entry.update(name: 'testName', bool: true)
+ expect(result).to be_kind_of Contentful::Management::Entry
+ expect(result.fields[:name]).to eq 'testName'
+ expect(result.fields[:bool]).to eq true
+ end
+ end
- it 'return Error when update not localized field' do
- vcr('entry/update_unlocalized_field') do
- asset = client.assets(space_id, 'master').find('codequest_id_test_custom_id')
+ it 'return Error when update not localized field' do
+ vcr('entry/update_unlocalized_field') do
+ asset = client.assets(space_id, 'master').find('codequest_id_test_custom_id')
- location = Location.new
- location.lat = 22.44
- location.lon = 33.33
- entry = subject.find('3U7JqGuVzOWIimU40mKeem')
- entry.locale = 'pl'
- result = entry.update(name: 'DoestMatter', bool: false, city: location, asset: asset)
- expect(result).to be_kind_of Contentful::Management::Error
- end
- end
+ location = Contentful::Management::Location.new
+ location.lat = 22.44
+ location.lon = 33.33
+ entry = subject.find('3U7JqGuVzOWIimU40mKeem')
+ entry.locale = 'pl'
+ result = entry.update(name: 'DoestMatter', bool: false, city: location, asset: asset)
+ expect(result).to be_kind_of Contentful::Management::Error
+ end
+ end
- it 'can update boolean fields to `false`' do
- vcr('entry/update_bool_field') do
- space = client.spaces.find('fujuvqn6zcl1')
- content_type = client.content_types(space.id, 'master').find('1kUEViTN4EmGiEaaeC6ouY')
+ it 'can update boolean fields to `false`' do
+ vcr('entry/update_bool_field') do
+ space = client.spaces.find('fujuvqn6zcl1')
+ content_type = client.content_types(space.id, 'master').find('1kUEViTN4EmGiEaaeC6ouY')
- q = content_type.entries.new
- q.name_with_locales = {'en-US' => 'Hello World'}
- q.yolo_with_locales = {'en-US' => false}
- expected = q.fields
- q.save
+ q = content_type.entries.new
+ q.name_with_locales = {'en-US' => 'Hello World'}
+ q.yolo_with_locales = {'en-US' => false}
+ expected = q.fields
+ q.save
- p = client.entries(space.id, 'master').find(q.id)
- expect(p.fields).to match(expected)
- end
- end
+ p = client.entries(space.id, 'master').find(q.id)
+ expect(p.fields).to match(expected)
end
+ end
+ end
- describe '#save' do
- it 'save updated' do
- vcr('entry/save_update') do
- entry = subject.find('664EPJ6zHqAeMO6O0mGggU')
- entry.fields[:carMark] = 'Merc'
- entry.save
- expect(entry).to be_kind_of Contentful::Management::Entry
- expect(entry.fields[:carMark]).to eq 'Merc'
- end
- end
+ describe '#save' do
+ it 'save updated' do
+ vcr('entry/save_update') do
+ entry = subject.find('664EPJ6zHqAeMO6O0mGggU')
+ entry.fields[:carMark] = 'Merc'
+ entry.save
+ expect(entry).to be_kind_of Contentful::Management::Entry
+ expect(entry.fields[:carMark]).to eq 'Merc'
end
+ end
+ end
- describe '#reload' do
- let(:space_id) { 'bfsvtul0c41g' }
- it 'update the current version of the object to the version on the system' do
- vcr('entry/reload') do
- space = client.spaces.find(space_id)
- client.content_types(space.id, 'master').all # warm-up cache
+ describe '#reload' do
+ let(:space_id) { 'bfsvtul0c41g' }
+ it 'update the current version of the object to the version on the system' do
+ vcr('entry/reload') do
+ space = client.spaces.find(space_id)
+ client.content_types(space.id, 'master').all # warm-up cache
- entry = client.entries(space.id, 'master').find('2arjcjtY7ucC4AGeIOIkok')
- entry.sys[:version] = 999
- update_entry = entry.update(post_title: 'Updated title')
- expect(update_entry).to be_kind_of Contentful::Management::Conflict
- entry.reload
- update_entry = entry.update(post_title: 'Updated title')
- expect(update_entry).to be_kind_of Contentful::Management::Entry
- expect(update_entry.post_title).to eq 'Updated title'
- end
+ entry = client.entries(space.id, 'master').find('2arjcjtY7ucC4AGeIOIkok')
+ entry.sys[:version] = 999
+ update_entry = entry.update(post_title: 'Updated title')
+ expect(update_entry).to be_kind_of Contentful::Management::Conflict
+ entry.reload
+ update_entry = entry.update(post_title: 'Updated title')
+ expect(update_entry).to be_kind_of Contentful::Management::Entry
+ expect(update_entry.post_title).to eq 'Updated title'
+ end
+ end
+ end
+
+ describe 'search filters' do
+ let(:space) do
+ client.spaces.find('bfsvtul0c41g')
+ end
+ context 'order' do
+ it 'returns ordered entries by createdAt' do
+ vcr('entry/search_filter/order_sys.createdAt') do
+ ordered_entries = client.entries(space.id, 'master').all(order: 'sys.createdAt')
+ expect(ordered_entries).to be_kind_of Contentful::Management::Array
+ expect(ordered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(ordered_entries.first.sys[:createdAt] < ordered_entries.to_a[4].sys[:createdAt]).to be_truthy
end
end
- describe 'search filters' do
- let(:space) do
- client.spaces.find('bfsvtul0c41g')
+ it 'returns ordered entries by updatedAt' do
+ vcr('entry/search_filter/order_sys.updatedAt') do
+ ordered_entries = client.entries(space.id, 'master').all(order: 'sys.updatedAt')
+ expect(ordered_entries).to be_kind_of Contentful::Management::Array
+ expect(ordered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(ordered_entries.first.sys[:updatedAt] < ordered_entries.to_a[4].sys[:updatedAt]).to be_truthy
end
- context 'order' do
- it 'returns ordered entries by createdAt' do
- vcr('entry/search_filter/order_sys.createdAt') do
- ordered_entries = client.entries(space.id, 'master').all(order: 'sys.createdAt')
- expect(ordered_entries).to be_kind_of Contentful::Management::Array
- expect(ordered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(ordered_entries.first.sys[:createdAt] < ordered_entries.to_a[4].sys[:createdAt]).to be_truthy
- end
+ end
+ context 'reverse the sort-order' do
+ it 'returns reverse sort of ordered entries by updatedAt' do
+ vcr('entry/search_filter/reverse_order_sys.updatedAt') do
+ reverse_ordered_entries = client.entries(space.id, 'master').all(order: '-sys.updatedAt')
+ expect(reverse_ordered_entries).to be_kind_of Contentful::Management::Array
+ expect(reverse_ordered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(reverse_ordered_entries.first.sys[:updatedAt] > reverse_ordered_entries.to_a[4].sys[:updatedAt]).to be_truthy
end
+ end
+ end
+ end
- it 'returns ordered entries by updatedAt' do
- vcr('entry/search_filter/order_sys.updatedAt') do
- ordered_entries = client.entries(space.id, 'master').all(order: 'sys.updatedAt')
- expect(ordered_entries).to be_kind_of Contentful::Management::Array
- expect(ordered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(ordered_entries.first.sys[:updatedAt] < ordered_entries.to_a[4].sys[:updatedAt]).to be_truthy
- end
- end
- context 'reverse the sort-order' do
- it 'returns reverse sort of ordered entries by updatedAt' do
- vcr('entry/search_filter/reverse_order_sys.updatedAt') do
- reverse_ordered_entries = client.entries(space.id, 'master').all(order: '-sys.updatedAt')
- expect(reverse_ordered_entries).to be_kind_of Contentful::Management::Array
- expect(reverse_ordered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(reverse_ordered_entries.first.sys[:updatedAt] > reverse_ordered_entries.to_a[4].sys[:updatedAt]).to be_truthy
- end
- end
- end
+ context 'Including linked Entries in search results' do
+ it 'returns content_type Entry and include 1 level of linked Entries' do
+ vcr('entry/search_filter/including_linked_entries') do
+ filtered_entries = client.entries(space.id, 'master').all('sys.id' => '2Hs5BaU56oUmUIySMQQMUS', include: 2)
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
end
+ end
+ end
- context 'Including linked Entries in search results' do
- it 'returns content_type Entry and include 1 level of linked Entries' do
- vcr('entry/search_filter/including_linked_entries') do
- filtered_entries = client.entries(space.id, 'master').all('sys.id' => '2Hs5BaU56oUmUIySMQQMUS', include: 2)
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- end
+ context 'Equality and Inequality' do
+ context 'equality operator' do
+ it 'returns all Entries with specified ID(IDs are unique and there can only be one)' do
+ vcr('entry/search_filter/equality_operator') do
+ filtered_entries = client.entries(space.id, 'master').all('sys.id' => '2Hs5BaU56oUmUIySMQQMUS')
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(filtered_entries.first.sys[:id]).to eq '2Hs5BaU56oUmUIySMQQMUS'
end
end
-
- context 'Equality and Inequality' do
- context 'equality operator' do
- it 'returns all Entries with specified ID(IDs are unique and there can only be one)' do
- vcr('entry/search_filter/equality_operator') do
- filtered_entries = client.entries(space.id, 'master').all('sys.id' => '2Hs5BaU56oUmUIySMQQMUS')
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(filtered_entries.first.sys[:id]).to eq '2Hs5BaU56oUmUIySMQQMUS'
- end
- end
- it 'returns all entries by matching fields.number equal 33' do
- vcr('entry/search_filter/matching_array_fields') do
- filtered_entries = client.entries(space.id, 'master').all(content_type: 'category_content_type', 'fields.number' => 33)
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(filtered_entries.size).to eq 2
- end
- end
+ it 'returns all entries by matching fields.number equal 33' do
+ vcr('entry/search_filter/matching_array_fields') do
+ filtered_entries = client.entries(space.id, 'master').all(content_type: 'category_content_type', 'fields.number' => 33)
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(filtered_entries.size).to eq 2
end
- context 'inequality operator' do
- it 'returns all entries except entry with id = 2Hs5BaU56oUmUIySMQQMUS' do
- vcr('entry/search_filter/inequality_operator') do
- filtered_entries = client.entries(space.id, 'master').all('sys.id[ne]' => '2Hs5BaU56oUmUIySMQQMUS')
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(filtered_entries.map(&:id).include?('2Hs5BaU56oUmUIySMQQMUS')).to be_falsey
- end
- end
- end
end
- context 'Inclusion and Exclusion' do
- context 'inclusion operator' do
- it 'returns entries with specified IDs' do
- vcr('entry/search_filter/inclusion_operator') do
- filtered_entries = client.entries(space.id, 'master').all('sys.id[in]' => '2Hs5BaU56oUmUIySMQQMUS,2X3X7RHVzqsKGAgIEewgaS')
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(filtered_entries.map(&:id).include?('2Hs5BaU56oUmUIySMQQMUS')).to be_truthy
- expect(filtered_entries.map(&:id).include?('2X3X7RHVzqsKGAgIEewgaS')).to be_truthy
- expect(filtered_entries.size).to eq 2
- end
- end
+ end
+ context 'inequality operator' do
+ it 'returns all entries except entry with id = 2Hs5BaU56oUmUIySMQQMUS' do
+ vcr('entry/search_filter/inequality_operator') do
+ filtered_entries = client.entries(space.id, 'master').all('sys.id[ne]' => '2Hs5BaU56oUmUIySMQQMUS')
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(filtered_entries.map(&:id).include?('2Hs5BaU56oUmUIySMQQMUS')).to be_falsey
end
- context 'exclusion operator' do
- it 'returns all entries except with specified IDs' do
- vcr('entry/search_filter/exclusion_operator') do
- filtered_entries = client.entries(space.id, 'master').all(content_type: 'category_content_type', 'sys.id[nin]' => '2Hs5BaU56oUmUIySMQQMUS,2X3X7RHVzqsKGAgIEewgaS')
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(filtered_entries.map(&:id).include?('2Hs5BaU56oUmUIySMQQMUS')).to be_falsy
- expect(filtered_entries.map(&:id).include?('2X3X7RHVzqsKGAgIEewgaS')).to be_falsy
- expect(filtered_entries.size).to eq 3
- end
- end
- end
end
- context 'Full-text Search' do
- it 'returns all entries except with specified IDs' do
- vcr('entry/search_filter/full_search') do
- filtered_entries = client.entries(space.id, 'master').all(query: 'find me')
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(filtered_entries.size).to eq 2
- end
+ end
+ end
+ context 'Inclusion and Exclusion' do
+ context 'inclusion operator' do
+ it 'returns entries with specified IDs' do
+ vcr('entry/search_filter/inclusion_operator') do
+ filtered_entries = client.entries(space.id, 'master').all('sys.id[in]' => '2Hs5BaU56oUmUIySMQQMUS,2X3X7RHVzqsKGAgIEewgaS')
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(filtered_entries.map(&:id).include?('2Hs5BaU56oUmUIySMQQMUS')).to be_truthy
+ expect(filtered_entries.map(&:id).include?('2X3X7RHVzqsKGAgIEewgaS')).to be_truthy
+ expect(filtered_entries.size).to eq 2
end
- it 'returns all entries except with specified IDs' do
- vcr('entry/search_filter/full_search_match_operator') do
- filtered_entries = client.entries(space.id, 'master').all(content_type: 'category_content_type', 'fields.description[match]' => 'find')
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(filtered_entries.size).to eq 2
- end
- end
end
- context 'Location-based search' do
- it 'returns entries closest to a specific map location and order the results by distance' do
- vcr('entry/search_filter/location_search_near_operator') do
- filtered_entries = client.entries(space.id, 'master').all('fields.location[near]' => '23.15758,53.1297098', content_type: '37TpyB8DcQkq0wkY8c4g2g')
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- end
+ end
+ context 'exclusion operator' do
+ it 'returns all entries except with specified IDs' do
+ vcr('entry/search_filter/exclusion_operator') do
+ filtered_entries = client.entries(space.id, 'master').all(content_type: 'category_content_type', 'sys.id[nin]' => '2Hs5BaU56oUmUIySMQQMUS,2X3X7RHVzqsKGAgIEewgaS')
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(filtered_entries.map(&:id).include?('2Hs5BaU56oUmUIySMQQMUS')).to be_falsy
+ expect(filtered_entries.map(&:id).include?('2X3X7RHVzqsKGAgIEewgaS')).to be_falsy
+ expect(filtered_entries.size).to eq 3
end
+ end
+ end
+ end
+ context 'Full-text Search' do
+ it 'returns all entries except with specified IDs' do
+ vcr('entry/search_filter/full_search') do
+ filtered_entries = client.entries(space.id, 'master').all(query: 'find me')
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(filtered_entries.size).to eq 2
+ end
+ end
+ it 'returns all entries except with specified IDs' do
+ vcr('entry/search_filter/full_search_match_operator') do
+ filtered_entries = client.entries(space.id, 'master').all(content_type: 'category_content_type', 'fields.description[match]' => 'find')
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(filtered_entries.size).to eq 2
+ end
+ end
+ end
+ context 'Location-based search' do
+ it 'returns entries closest to a specific map location and order the results by distance' do
+ vcr('entry/search_filter/location_search_near_operator') do
+ filtered_entries = client.entries(space.id, 'master').all('fields.location[near]' => '23.15758,53.1297098', content_type: '37TpyB8DcQkq0wkY8c4g2g')
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
+ end
+ end
- it 'returns entries with fields.location is inside of the circle' do
- vcr('entry/search_filter/location_search_within_operator') do
- filtered_entries = client.entries(space.id, 'master').all('fields.location[within]' => '52,23,300', content_type: '37TpyB8DcQkq0wkY8c4g2g')
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- end
- end
+ it 'returns entries with fields.location is inside of the circle' do
+ vcr('entry/search_filter/location_search_within_operator') do
+ filtered_entries = client.entries(space.id, 'master').all('fields.location[within]' => '52,23,300', content_type: '37TpyB8DcQkq0wkY8c4g2g')
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
end
+ end
+ end
- context 'Number & Date Ranges' do
- context 'number' do
- it 'returns entries with fields.number less then 20' do
- vcr('entry/search_filter/range_operators_less') do
- filtered_entries = client.entries(space.id, 'master').all('fields.number[lte]' => '20', content_type: 'category_content_type')
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(filtered_entries.size).to eq 1
- end
- end
+ context 'Number & Date Ranges' do
+ context 'number' do
+ it 'returns entries with fields.number less then 20' do
+ vcr('entry/search_filter/range_operators_less') do
+ filtered_entries = client.entries(space.id, 'master').all('fields.number[lte]' => '20', content_type: 'category_content_type')
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(filtered_entries.size).to eq 1
end
- context 'date ranges' do
- it 'returns entries have been updated since midnight August 19th 2013' do
- vcr('entry/search_filter/range_operators_greater_than_or_equal') do
- filtered_entries = client.entries(space.id, 'master').all('sys.updatedAt[gte]' => '2014-08-19T00:00:00Z')
- expect(filtered_entries).to be_kind_of Contentful::Management::Array
- expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
- expect(filtered_entries.size).to eq 11
- end
- end
+ end
+ end
+ context 'date ranges' do
+ it 'returns entries have been updated since midnight August 19th 2013' do
+ vcr('entry/search_filter/range_operators_greater_than_or_equal') do
+ filtered_entries = client.entries(space.id, 'master').all('sys.updatedAt[gte]' => '2014-08-19T00:00:00Z')
+ expect(filtered_entries).to be_kind_of Contentful::Management::Array
+ expect(filtered_entries.first).to be_kind_of Contentful::Management::Entry
+ expect(filtered_entries.size).to eq 11
end
end
end
+ end
+ end
- describe 'handling of localized values' do
- it 'retrieves localized value if it exists' do
- vcr('entry/locales/retrieve_localized') do
- space = client.spaces.find('0agypmo1waov')
- entry = client.entries(space.id, 'master').find('5cMXsmSd5So6iggWi268eG')
- entry.locale = 'de-DE'
+ describe 'handling of localized values' do
+ it 'retrieves localized value if it exists' do
+ vcr('entry/locales/retrieve_localized') do
+ space = client.spaces.find('0agypmo1waov')
+ entry = client.entries(space.id, 'master').find('5cMXsmSd5So6iggWi268eG')
+ entry.locale = 'de-DE'
- expect(entry.fields.count).to eq 2
- expect(entry.fields[:yolo]).to eq 'etwas Text'
- end
- end
+ expect(entry.fields.count).to eq 2
+ expect(entry.fields[:yolo]).to eq 'etwas Text'
+ end
+ end
- it 'retrieves value of default locale if it has not been localized' do
- vcr('entry/locales/fallback_to_default_locale') do
- space = client.spaces.find('0agypmo1waov')
- entry = client.entries(space.id, 'master').find('4epXENbO8wsaOukgqquYcI')
- entry.locale = 'de-DE'
+ it 'retrieves value of default locale if it has not been localized' do
+ vcr('entry/locales/fallback_to_default_locale') do
+ space = client.spaces.find('0agypmo1waov')
+ entry = client.entries(space.id, 'master').find('4epXENbO8wsaOukgqquYcI')
+ entry.locale = 'de-DE'
- expect(entry.fields.count).to eq 2
- expect(entry.fields[:yolo]).to eq 'YOLO'
- end
- end
+ expect(entry.fields.count).to eq 2
+ expect(entry.fields[:yolo]).to eq 'YOLO'
+ end
+ end
- it 'sets value for the default locale when using simple assignments' do
- vcr('entry/locales/simple_assignments_use_default_locale') do
- space = client.spaces.find('0agypmo1waov')
- client.content_types(space.id, 'master').all # warm-up cache
+ it 'sets value for the default locale when using simple assignments' do
+ vcr('entry/locales/simple_assignments_use_default_locale') do
+ space = client.spaces.find('0agypmo1waov')
+ client.content_types(space.id, 'master').all # warm-up cache
- entry = client.entries(space.id, 'master').find('4epXENbO8wsaOukgqquYcI')
+ entry = client.entries(space.id, 'master').find('4epXENbO8wsaOukgqquYcI')
- entry.yolo = 'changed'
+ entry.yolo = 'changed'
- expect(entry.fields).to match({:name => 'test2', :yolo => 'changed'})
- end
- end
+ expect(entry.fields).to match({:name => 'test2', :yolo => 'changed'})
+ end
+ end
- it 'sets value for the specified locales when using *_with_locales' do
- vcr('entry/locales/simple_assignments_use_specified_locale') do
- space = client.spaces.find('0agypmo1waov')
- client.content_types(space.id, 'master').all # warm-up cache
+ it 'sets value for the specified locales when using *_with_locales' do
+ vcr('entry/locales/simple_assignments_use_specified_locale') do
+ space = client.spaces.find('0agypmo1waov')
+ client.content_types(space.id, 'master').all # warm-up cache
- entry = client.entries(space.id, 'master').find('4epXENbO8wsaOukgqquYcI')
+ entry = client.entries(space.id, 'master').find('4epXENbO8wsaOukgqquYcI')
- entry.yolo_with_locales = {'de-DE' => 'changed'}
- entry.locale = 'de-DE'
+ entry.yolo_with_locales = {'de-DE' => 'changed'}
+ entry.locale = 'de-DE'
- expect(entry.fields).to match({:name => 'test2', :yolo => 'changed'})
- end
- end
+ expect(entry.fields).to match({:name => 'test2', :yolo => 'changed'})
end
+ end
+ end
- describe '#fields_from_attributes' do
+ describe '#fields_from_attributes' do
+ it 'parses all kind of fields' do
+ location = Contentful::Management::Location.new.tap do |loc|
+ loc.lat = 22.44
+ loc.lon = 33.33
+ end
- it 'parses all kind of fields' do
+ attributes = {
+ name: 'Test name',
+ number: 30,
+ float1: 1.1,
+ boolean: true, date: '2000-07-12T11:11:00+02:00',
+ time: '2000-07-12T11:11:00+02:00',
+ location: location,
+ image: Contentful::Management::Asset.new,
+ images: [Contentful::Management::Asset.new, Contentful::Management::Asset.new],
+ array: %w(PL USD XX),
+ entry: Contentful::Management::Entry.new,
+ entries: [Contentful::Management::Entry.new, Contentful::Management::Entry.new],
+ object_json: {'test' => {'@type' => 'Codequest'}}
+ }
- location = Location.new.tap do |loc|
- loc.lat = 22.44
- loc.lon = 33.33
- end
+ parsed_attributes = Contentful::Management::Entry.new.fields_from_attributes(attributes)
- attributes = {
- name: 'Test name',
- number: 30,
- float1: 1.1,
- boolean: true, date: '2000-07-12T11:11:00+02:00',
- time: '2000-07-12T11:11:00+02:00',
- location: location,
- image: Asset.new,
- images: [Asset.new, Asset.new],
- array: %w(PL USD XX),
- entry: Entry.new,
- entries: [Entry.new, Entry.new],
- object_json: {'test' => {'@type' => 'Codequest'}}
- }
+ expect(parsed_attributes[:name]).to match('en-US' => 'Test name')
+ expect(parsed_attributes[:number]).to match('en-US' => 30)
+ expect(parsed_attributes[:float1]).to match('en-US' => 1.1)
+ expect(parsed_attributes[:boolean]).to match('en-US' => true)
+ expect(parsed_attributes[:date]).to match('en-US' => '2000-07-12T11:11:00+02:00')
+ expect(parsed_attributes[:time]).to match('en-US' => '2000-07-12T11:11:00+02:00')
+ expect(parsed_attributes[:location]).to match('en-US' => {lat: 22.44, lon: 33.33})
+ expect(parsed_attributes[:array]).to match('en-US' => %w(PL USD XX))
+ expect(parsed_attributes[:object_json]).to match('en-US' => {'test' => {'@type' => 'Codequest'}})
+ expect(parsed_attributes[:image]).to match('en-US' => {sys: {type: 'Link', linkType: 'Asset', id: nil}})
+ expect(parsed_attributes[:images]).to match('en-US' => [{sys: {type: 'Link', linkType: 'Asset', id: nil}}, {sys: {type: 'Link', linkType: 'Asset', id: nil}}])
+ expect(parsed_attributes[:entry]).to match('en-US' => {sys: {type: 'Link', linkType: 'Entry', id: nil}})
+ expect(parsed_attributes[:entries]).to match('en-US' => [{sys: {type: 'Link', linkType: 'Entry', id: nil}}, {sys: {type: 'Link', linkType: 'Entry', id: nil}}])
+ end
- parsed_attributes = Entry.new.fields_from_attributes(attributes)
+ it 'keepd hashes in attributes' do
+ attributes = {
+ entries: [{sys: {type: 'Link', linkType: 'Entry', id: nil}}, {sys: {type: 'Link', linkType: 'Entry', id: nil}}]
+ }
- expect(parsed_attributes[:name]).to match('en-US' => 'Test name')
- expect(parsed_attributes[:number]).to match('en-US' => 30)
- expect(parsed_attributes[:float1]).to match('en-US' => 1.1)
- expect(parsed_attributes[:boolean]).to match('en-US' => true)
- expect(parsed_attributes[:date]).to match('en-US' => '2000-07-12T11:11:00+02:00')
- expect(parsed_attributes[:time]).to match('en-US' => '2000-07-12T11:11:00+02:00')
- expect(parsed_attributes[:location]).to match('en-US' => {lat: 22.44, lon: 33.33})
- expect(parsed_attributes[:array]).to match('en-US' => %w(PL USD XX))
- expect(parsed_attributes[:object_json]).to match('en-US' => {'test' => {'@type' => 'Codequest'}})
- expect(parsed_attributes[:image]).to match('en-US' => {sys: {type: 'Link', linkType: 'Asset', id: nil}})
- expect(parsed_attributes[:images]).to match('en-US' => [{sys: {type: 'Link', linkType: 'Asset', id: nil}}, {sys: {type: 'Link', linkType: 'Asset', id: nil}}])
- expect(parsed_attributes[:entry]).to match('en-US' => {sys: {type: 'Link', linkType: 'Entry', id: nil}})
- expect(parsed_attributes[:entries]).to match('en-US' => [{sys: {type: 'Link', linkType: 'Entry', id: nil}}, {sys: {type: 'Link', linkType: 'Entry', id: nil}}])
+ parsed_attributes = Contentful::Management::Entry.new.fields_from_attributes(attributes)
- end
+ expect(parsed_attributes[:entries]).to match('en-US' => [{sys: {type: 'Link', linkType: 'Entry', id: nil}}, {sys: {type: 'Link', linkType: 'Entry', id: nil}}])
+ end
+ end
- it 'keepd hashes in attributes' do
- attributes = {
- entries: [{sys: {type: 'Link', linkType: 'Entry', id: nil}}, {sys: {type: 'Link', linkType: 'Entry', id: nil}}]
- }
+ describe 'fallback locales' do
+ let(:space) { client.spaces.find('wqjq16zu9s8b') }
+ it "if a property is nil, it's removed from the request to undefine it in the API" do
+ vcr('entry/fallback_undefined') {
+ client.content_types(space.id, 'master').all # warm-up cache
+ entry = client.entries(space.id, 'master').find('6HSlhD1o3eqkyEWWuMQYyU')
- parsed_attributes = Entry.new.fields_from_attributes(attributes)
+ expect(entry.name).to eq 'Foo'
+ expect(entry.fields('es')[:name]).to eq 'Bar'
+ expect(entry.fields('zh')[:name]).to eq 'Baz'
- expect(parsed_attributes[:entries]).to match('en-US' => [{sys: {type: 'Link', linkType: 'Entry', id: nil}}, {sys: {type: 'Link', linkType: 'Entry', id: nil}}])
- end
- end
+ entry.locale ='zh'
+ entry.name = nil
- describe 'fallback locales' do
- let(:space) { client.spaces.find('wqjq16zu9s8b') }
- it "if a property is nil, it's removed from the request to undefine it in the API" do
- vcr('entry/fallback_undefined') {
- client.content_types(space.id, 'master').all # warm-up cache
- entry = client.entries(space.id, 'master').find('6HSlhD1o3eqkyEWWuMQYyU')
+ expect(entry.fields_for_query[:name].keys).not_to include 'zh'
- expect(entry.name).to eq 'Foo'
- expect(entry.fields('es')[:name]).to eq 'Bar'
- expect(entry.fields('zh')[:name]).to eq 'Baz'
+ entry.save
+ }
+ end
+ end
- entry.locale ='zh'
- entry.name = nil
+ describe 'issues' do
+ describe 'handles multiple locales even when they are not all defined for the default locale - #70' do
+ it 'merges all present locales' do
+ vcr('entry/issue_70') {
+ space = client.spaces.find('9sh5dtmfyzhj')
+ client.content_types(space.id, 'master').all # warm-up cache
- expect(entry.fields_for_query[:name].keys).not_to include 'zh'
+ entry_non_default_locale = client.entries(space.id, 'master').find('1PdCkb5maYgqsSUCOweseM')
- entry.save
- }
- end
+ expect(entry_non_default_locale.name_with_locales).to match({"de-DE" => nil, "es" => "Futbolista"})
+ expect(entry_non_default_locale.non_localized_with_locales).to match({"de-DE" => "baz", "es" => nil})
+
+ entry_with_all_locales = client.entries(space.id, 'master').find('1QKkNRf9AEW2wqwWowgscs')
+
+ expect(entry_with_all_locales.name_with_locales).to match({"de-DE" => "Junge", "en-US" => "Boy", "es" => "Chico"})
+ expect(entry_with_all_locales.non_localized_with_locales).to match({"de-DE" => "foobar", "en-US" => nil, "es" => nil})
+ }
end
+ end
- describe 'issues' do
- describe 'handles multiple locales even when they are not all defined for the default locale - #70' do
- it 'merges all present locales' do
- vcr('entry/issue_70') {
- space = client.spaces.find('9sh5dtmfyzhj')
- client.content_types(space.id, 'master').all # warm-up cache
+ it 'can save with multiple locales assigned - #73' do
+ vcr('entry/issue_73') {
+ begin
+ client.configuration[:default_locale] = 'en-GB'
+ content_type = client.content_types('u2viwgfeal0o', 'master').find('someType')
+ new_entry = content_type.entries.create(id: 'hello-world')
- entry_non_default_locale = client.entries(space.id, 'master').find('1PdCkb5maYgqsSUCOweseM')
+ new_entry.name = 'Hello World!'
+ new_entry.locale = 'en-GB'
+ new_entry.value_with_locales = {'en-GB'=>'hello world', 'es-ES'=>'hola mundo'}
- expect(entry_non_default_locale.name_with_locales).to match({"de-DE" => nil, "es" => "Futbolista"})
- expect(entry_non_default_locale.non_localized_with_locales).to match({"de-DE" => "baz", "es" => nil})
+ res = new_entry.save
- entry_with_all_locales = client.entries(space.id, 'master').find('1QKkNRf9AEW2wqwWowgscs')
+ expect(res.respond_to?(:error)).to be_falsey
+ expect(res.is_a?(Contentful::Management::DynamicEntry)).to be_truthy
+ expect(res.value_with_locales).to match('en-GB' => 'hello world', 'es-ES' => 'hola mundo')
+ ensure
+ #new_entry.destroy
+ end
+ }
+ end
- expect(entry_with_all_locales.name_with_locales).to match({"de-DE" => "Junge", "en-US" => "Boy", "es" => "Chico"})
- expect(entry_with_all_locales.non_localized_with_locales).to match({"de-DE" => "foobar", "en-US" => nil, "es" => nil})
- }
- end
+ it 'fields_for_query get properly updated when setting a field using _with_locales - #91' do
+ vcr('entry/issue_91') {
+ entry = client.entries('iv4sic0eru9h', 'master').find('5GrMLWzfyMs0eKoi4sg2ug')
- it 'can save with multiple locales assigned - #73' do
- vcr('entry/issue_73') {
+ expect(entry.test_with_locales).to eq('en-US' => 'foo', 'es' => 'bar')
+
+ entry.test_with_locales = {'en-US' => 'baz', 'es' => 'foobar'}
+
+ expect(entry.test_with_locales).to eq('en-US' => 'baz', 'es' => 'foobar')
+ expect(entry.fields_for_query).to eq(test: { 'en-US' => 'baz', 'es' => 'foobar' })
+ }
+ end
+
+ describe 'properly fetches environment id' do
+ it 'fetches the environment id' do
+ vcr('entry/environment_id') {
+ entry = client.entries('9utsm1g0t7f5', 'staging').find('6yVdruR4GsKO2iKOqQS2CS')
+ expect(entry.environment_id).to eq 'staging'
+ expect(entry.sys[:environment].id).to eq 'staging'
+ }
+ end
+ end
+
+ describe 'it can properly assign, save and publish - #61' do
+ describe 'on an entry created through the api' do
+ describe 'before refetch' do
+ it 'on an already populated field' do
+ vcr('entry/issue_61.1') {
begin
client.configuration[:default_locale] = 'en-GB'
content_type = client.content_types('u2viwgfeal0o', 'master').find('someType')
- new_entry = content_type.entries.create(id: 'hello-world')
+ new_entry = content_type.entries.create(id: 'issue61_1', value: 'hello')
- new_entry.name = 'Hello World!'
- new_entry.locale = 'en-GB'
- new_entry.value_with_locales = {'en-GB'=>'hello world', 'es-ES'=>'hola mundo'}
+ expect(new_entry.value).to eq 'hello'
- res = new_entry.save
+ new_entry.value = 'goodbye'
- expect(res.respond_to?(:error)).to be_falsey
- expect(res.is_a?(Contentful::Management::DynamicEntry)).to be_truthy
- expect(res.value_with_locales).to match('en-GB' => 'hello world', 'es-ES' => 'hola mundo')
+ new_entry.save
+ new_entry.publish
+
+ expected_entry = client.entries('u2viwgfeal0o', 'master').find(new_entry.id)
+
+ expect(expected_entry.value).to eq 'goodbye'
ensure
- #new_entry.destroy
+ new_entry.destroy
end
}
end
- it 'fields_for_query get properly updated when setting a field using _with_locales - #91' do
- vcr('entry/issue_91') {
- entry = client.entries('iv4sic0eru9h', 'master').find('5GrMLWzfyMs0eKoi4sg2ug')
+ it 'on a previously empty field' do
+ vcr('entry/issue_61.2') {
+ begin
+ client.configuration[:default_locale] = 'en-GB'
+ content_type = client.content_types('u2viwgfeal0o', 'master').find('someType')
+ new_entry = content_type.entries.create(id: 'issue61_2')
- expect(entry.test_with_locales).to eq('en-US' => 'foo', 'es' => 'bar')
+ new_entry.value = 'goodbye'
- entry.test_with_locales = {'en-US' => 'baz', 'es' => 'foobar'}
+ new_entry.save
+ new_entry.publish
- expect(entry.test_with_locales).to eq('en-US' => 'baz', 'es' => 'foobar')
- expect(entry.fields_for_query).to eq(test: { 'en-US' => 'baz', 'es' => 'foobar' })
+ expect(new_entry.value).to eq 'goodbye'
+
+ expected_entry = client.entries('u2viwgfeal0o', 'master').find(new_entry.id)
+
+ expect(expected_entry.value).to eq 'goodbye'
+ ensure
+ new_entry.destroy
+ end
}
end
+ end
- describe 'it can properly assign, save and publish - #61' do
- describe 'on an entry created through the api' do
- describe 'before refetch' do
- it 'on an already populated field' do
- vcr('entry/issue_61.1') {
- begin
- client.configuration[:default_locale] = 'en-GB'
- content_type = client.content_types('u2viwgfeal0o', 'master').find('someType')
- new_entry = content_type.entries.create(id: 'issue61_1', value: 'hello')
+ describe 'after refetch' do
+ it 'on an already populated field' do
+ vcr('entry/issue_61.3') {
+ begin
+ client.configuration[:default_locale] = 'en-GB'
+ content_type = client.content_types('u2viwgfeal0o', 'master').find('someType')
+ new_entry = content_type.entries.create(id: 'issue61_3', value: 'hello')
- expect(new_entry.value).to eq 'hello'
+ expect(new_entry.value).to eq 'hello'
- new_entry.value = 'goodbye'
+ expected_entry = client.entries('u2viwgfeal0o', 'master').find(new_entry.id)
- new_entry.save
- new_entry.publish
+ expected_entry.value = 'goodbye'
- expected_entry = client.entries('u2viwgfeal0o', 'master').find(new_entry.id)
+ expected_entry.save
+ expected_entry.publish
- expect(expected_entry.value).to eq 'goodbye'
- ensure
- new_entry.destroy
- end
- }
- end
+ expect(expected_entry.value).to eq 'goodbye'
+ ensure
+ new_entry.destroy
+ end
+ }
+ end
- it 'on a previously empty field' do
- vcr('entry/issue_61.2') {
- begin
- client.configuration[:default_locale] = 'en-GB'
- content_type = client.content_types('u2viwgfeal0o', 'master').find('someType')
- new_entry = content_type.entries.create(id: 'issue61_2')
+ it 'on a previously empty field' do
+ vcr('entry/issue_61.4') {
+ begin
+ client.configuration[:default_locale] = 'en-GB'
+ content_type = client.content_types('u2viwgfeal0o', 'master').find('someType')
+ new_entry = content_type.entries.create(id: 'issue61_4')
- new_entry.value = 'goodbye'
+ expected_entry = client.entries('u2viwgfeal0o', 'master').find(new_entry.id)
- new_entry.save
- new_entry.publish
+ expected_entry.value = 'goodbye'
- expect(new_entry.value).to eq 'goodbye'
+ expected_entry.save
+ expected_entry.publish
- expected_entry = client.entries('u2viwgfeal0o', 'master').find(new_entry.id)
-
- expect(expected_entry.value).to eq 'goodbye'
- ensure
- new_entry.destroy
- end
- }
- end
+ expect(expected_entry.value).to eq 'goodbye'
+ ensure
+ new_entry.destroy
end
+ }
+ end
+ end
+ end
- describe 'after refetch' do
- it 'on an already populated field' do
- vcr('entry/issue_61.3') {
- begin
- client.configuration[:default_locale] = 'en-GB'
- content_type = client.content_types('u2viwgfeal0o', 'master').find('someType')
- new_entry = content_type.entries.create(id: 'issue61_3', value: 'hello')
+ describe 'on an entry created through the ui' do
+ describe 'with dynamic_entries' do
+ let!(:client) { vcr('entry/issue_61_spaces') { Contentful::Management::Client.new(token, dynamic_entries: {'u2viwgfeal0o' => 'master'}) } }
+ it 'on an already populated field' do
+ vcr('entry/issue_61.5') {
+ begin
+ client.configuration[:default_locale] = 'en-GB'
- expect(new_entry.value).to eq 'hello'
+ expected_entry = client.entries('u2viwgfeal0o', 'master').find('fIpsfQSOd22IsqMQCiG0K')
- expected_entry = client.entries('u2viwgfeal0o', 'master').find(new_entry.id)
+ expect(expected_entry.value).to eq 'hello'
- expected_entry.value = 'goodbye'
+ expected_entry.value = 'goodbye'
- expected_entry.save
- expected_entry.publish
+ expected_entry.save
+ expected_entry.publish
- expect(expected_entry.value).to eq 'goodbye'
- ensure
- new_entry.destroy
- end
- }
- end
+ expect(expected_entry.value).to eq 'goodbye'
+ ensure
+ expected_entry.value = 'hello'
- it 'on a previously empty field' do
- vcr('entry/issue_61.4') {
- begin
- client.configuration[:default_locale] = 'en-GB'
- content_type = client.content_types('u2viwgfeal0o', 'master').find('someType')
- new_entry = content_type.entries.create(id: 'issue61_4')
-
- expected_entry = client.entries('u2viwgfeal0o', 'master').find(new_entry.id)
-
- expected_entry.value = 'goodbye'
-
- expected_entry.save
- expected_entry.publish
-
- expect(expected_entry.value).to eq 'goodbye'
- ensure
- new_entry.destroy
- end
- }
- end
+ expected_entry.save
+ expected_entry.publish
end
- end
+ }
+ end
- describe 'on an entry created through the ui' do
- describe 'with dynamic_entries' do
- let!(:client) { vcr('entry/issue_61_spaces') { Client.new(token, dynamic_entries: {'u2viwgfeal0o' => 'master'}) } }
- it 'on an already populated field' do
- vcr('entry/issue_61.5') {
- begin
- client.configuration[:default_locale] = 'en-GB'
+ it 'on a previously empty field' do
+ vcr('entry/issue_61.6') {
+ begin
+ client.configuration[:default_locale] = 'en-GB'
- expected_entry = client.entries('u2viwgfeal0o', 'master').find('fIpsfQSOd22IsqMQCiG0K')
+ expected_entry = client.entries('u2viwgfeal0o', 'master').find('2GmtCwDBcIu4giMgQGIIcq')
- expect(expected_entry.value).to eq 'hello'
+ expect(expected_entry.value).to eq nil
- expected_entry.value = 'goodbye'
+ expected_entry.value = 'goodbye'
- expected_entry.save
- expected_entry.publish
+ expected_entry.save
+ expected_entry.publish
- expect(expected_entry.value).to eq 'goodbye'
- ensure
- expected_entry.value = 'hello'
+ expect(expected_entry.value).to eq 'goodbye'
+ ensure
+ expected_entry.value = nil
- expected_entry.save
- expected_entry.publish
- end
- }
- end
+ expected_entry.save
+ expected_entry.publish
+ end
+ }
+ end
+ end
+ end
- it 'on a previously empty field' do
- vcr('entry/issue_61.6') {
- begin
- client.configuration[:default_locale] = 'en-GB'
+ describe 'without dynamic entries' do
+ it 'on an already populated field' do
+ vcr('entry/issue_61.7') {
+ begin
+ client.configuration[:default_locale] = 'en-GB'
- expected_entry = client.entries('u2viwgfeal0o', 'master').find('2GmtCwDBcIu4giMgQGIIcq')
+ expected_entry = client.entries('u2viwgfeal0o', 'master').find('fIpsfQSOd22IsqMQCiG0K')
- expect(expected_entry.value).to eq nil
+ expect(expected_entry.value).to eq 'hello'
- expected_entry.value = 'goodbye'
+ expected_entry.value = 'goodbye'
- expected_entry.save
- expected_entry.publish
+ expected_entry.save
+ expected_entry.publish
- expect(expected_entry.value).to eq 'goodbye'
- ensure
- expected_entry.value = nil
+ expect(expected_entry.value).to eq 'goodbye'
+ ensure
+ expected_entry.value = 'hello'
- expected_entry.save
- expected_entry.publish
- end
- }
- end
- end
+ expected_entry.save
+ expected_entry.publish
end
+ }
+ end
- describe 'without dynamic entries' do
- it 'on an already populated field' do
- vcr('entry/issue_61.7') {
- begin
- client.configuration[:default_locale] = 'en-GB'
+ it 'on a previously empty field' do
+ vcr('entry/issue_61.8') {
+ begin
+ client.configuration[:default_locale] = 'en-GB'
- expected_entry = client.entries('u2viwgfeal0o', 'master').find('fIpsfQSOd22IsqMQCiG0K')
+ expected_entry = client.entries('u2viwgfeal0o', 'master').find('2GmtCwDBcIu4giMgQGIIcq')
- expect(expected_entry.value).to eq 'hello'
+ expect(expected_entry.value).to eq nil
- expected_entry.value = 'goodbye'
+ expected_entry.value = 'goodbye'
- expected_entry.save
- expected_entry.publish
+ expected_entry.save
+ expected_entry.publish
- expect(expected_entry.value).to eq 'goodbye'
- ensure
- expected_entry.value = 'hello'
+ expect(expected_entry.value).to eq 'goodbye'
+ ensure
+ expected_entry.value = nil
- expected_entry.save
- expected_entry.publish
- end
- }
- end
-
- it 'on a previously empty field' do
- vcr('entry/issue_61.8') {
- begin
- client.configuration[:default_locale] = 'en-GB'
-
- expected_entry = client.entries('u2viwgfeal0o', 'master').find('2GmtCwDBcIu4giMgQGIIcq')
-
- expect(expected_entry.value).to eq nil
-
- expected_entry.value = 'goodbye'
-
- expected_entry.save
- expected_entry.publish
-
- expect(expected_entry.value).to eq 'goodbye'
- ensure
- expected_entry.value = nil
-
- expected_entry.save
- expected_entry.publish
- end
- }
- end
+ expected_entry.save
+ expected_entry.publish
end
- end
+ }
end
end
end
end
end