contentful-management 3.1.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +23 -0
  3. data/CHANGELOG.md +10 -0
  4. data/README.md +45 -1
  5. data/lib/contentful/management/asset.rb +2 -2
  6. data/lib/contentful/management/client.rb +10 -0
  7. data/lib/contentful/management/client_tag_methods_factory.rb +11 -0
  8. data/lib/contentful/management/editor_interface.rb +12 -4
  9. data/lib/contentful/management/entry.rb +3 -3
  10. data/lib/contentful/management/environment.rb +10 -0
  11. data/lib/contentful/management/environment_tag_methods_factory.rb +11 -0
  12. data/lib/contentful/management/organization_user_methods_factory.rb +2 -2
  13. data/lib/contentful/management/resource/refresher.rb +1 -0
  14. data/lib/contentful/management/resource_requester.rb +2 -2
  15. data/lib/contentful/management/space_user_methods_factory.rb +2 -2
  16. data/lib/contentful/management/tag.rb +27 -0
  17. data/lib/contentful/management/version.rb +1 -1
  18. data/spec/fixtures/vcr_cassettes/editor_interfaces/update_sidebar.yml +553 -0
  19. data/spec/fixtures/vcr_cassettes/environment/tag_proxy.yml +658 -0
  20. data/spec/fixtures/vcr_cassettes/tag/add_tag_to_asset.yml +456 -0
  21. data/spec/fixtures/vcr_cassettes/tag/add_tag_to_entry.yml +315 -0
  22. data/spec/fixtures/vcr_cassettes/tag/all.yml +252 -0
  23. data/spec/fixtures/vcr_cassettes/tag/create_asset_with_tags.yml +147 -0
  24. data/spec/fixtures/vcr_cassettes/tag/create_entry_with_tags.yml +293 -0
  25. data/spec/fixtures/vcr_cassettes/tag/create_visibility_private.yml +125 -0
  26. data/spec/fixtures/vcr_cassettes/tag/create_visibility_public.yml +125 -0
  27. data/spec/fixtures/vcr_cassettes/tag/destroy.yml +208 -0
  28. data/spec/fixtures/vcr_cassettes/tag/destroy_referenced.yml +226 -0
  29. data/spec/fixtures/vcr_cassettes/tag/find.yml +125 -0
  30. data/spec/fixtures/vcr_cassettes/tag/not_found.yml +98 -0
  31. data/spec/fixtures/vcr_cassettes/tag/remove_tag_from_asset.yml +456 -0
  32. data/spec/fixtures/vcr_cassettes/tag/remove_tag_from_entry.yml +315 -0
  33. data/spec/fixtures/vcr_cassettes/tag/update.yml +251 -0
  34. data/spec/lib/contentful/management/editor_interface_spec.rb +30 -0
  35. data/spec/lib/contentful/management/environment_spec.rb +12 -0
  36. data/spec/lib/contentful/management/tag_spec.rb +186 -0
  37. metadata +43 -7
  38. data/.travis.yml +0 -12
@@ -0,0 +1,186 @@
1
+ require 'spec_helper'
2
+ require 'contentful/management/space'
3
+ require 'contentful/management/client'
4
+
5
+ module Contentful
6
+ module Management
7
+ describe Tag do
8
+ let(:token) { ENV.fetch('CF_TEST_CMA_TOKEN', '<ACCESS_TOKEN>') }
9
+ let(:space_id) { 'o4h6g9w3pooi' }
10
+ let(:tag_id) { 'fooTag' }
11
+
12
+ let!(:client) { Contentful::Management::Client.new(token) }
13
+
14
+ subject { client.tags(space_id, 'master') }
15
+
16
+ describe '.all' do
17
+ it 'class method also works' do
18
+ vcr('tag/all') { expect(Contentful::Management::Tag.all(client, 'o4h6g9w3pooi', 'master')).to be_kind_of Contentful::Management::Array }
19
+ end
20
+ it 'returns a Contentful::Array' do
21
+ vcr('tag/all') { expect(described_class.all(client, 'o4h6g9w3pooi', 'master')).to be_kind_of Contentful::Management::Array }
22
+ end
23
+ it 'builds a Contentful::Management::Tag object' do
24
+ vcr('tag/all') { expect(described_class.all(client, 'o4h6g9w3pooi', 'master').first).to be_kind_of Contentful::Management::Tag }
25
+ end
26
+ end
27
+
28
+ describe '.find' do
29
+ it 'class method also works' do
30
+ vcr('tag/find') { expect(Contentful::Management::Tag.find(client, space_id, 'master', tag_id)).to be_kind_of Contentful::Management::Tag }
31
+ end
32
+ it 'returns a Contentful::Management::Tag' do
33
+ vcr('tag/find') { expect(subject.find(tag_id)).to be_kind_of Contentful::Management::Tag }
34
+ end
35
+ it 'returns the tag for a given tag id' do
36
+ vcr('tag/find') do
37
+ tag = subject.find(tag_id)
38
+ expect(tag.id).to eql tag_id
39
+ expect(tag.name).to eql 'Foo Tag'
40
+ end
41
+ end
42
+ it 'returns an error when tag does not exists' do
43
+ vcr('tag/not_found') do
44
+ result = subject.find('not_exist')
45
+ expect(result).to be_kind_of Contentful::Management::NotFound
46
+ end
47
+ end
48
+ end
49
+
50
+ describe '.create' do
51
+ it "create tag with default 'private' visibility" do
52
+ vcr('tag/create_visibility_private') do
53
+ tag = client.tags(space_id, 'master').create(name: 'test private', id: 'testPrivate')
54
+ expect(tag.name).to eql 'test private'
55
+ expect(tag.id).to eql 'testPrivate'
56
+ expect(tag.sys[:visibility]).to eql 'private'
57
+ end
58
+ end
59
+
60
+ it "create tag with 'public' visibility" do
61
+ vcr('tag/create_visibility_public') do
62
+ tag = client.tags(space_id, 'master').create(name: 'test public', id: 'testPublic', visibility: 'public')
63
+ expect(tag.name).to eql 'test public'
64
+ expect(tag.id).to eql 'testPublic'
65
+ expect(tag.sys[:visibility]).to eql 'public'
66
+ end
67
+ end
68
+ end
69
+
70
+ describe '.update' do
71
+ it 'updates tag name' do
72
+ vcr('tag/update') do
73
+ tag = subject.find(tag_id)
74
+ tag.update(name: 'updated tag')
75
+ expect(tag.name).to eq 'updated tag'
76
+ end
77
+ end
78
+ end
79
+
80
+ describe '#destroy' do
81
+ it 'returns validation error when tag is referenced by another entity' do
82
+ vcr('tag/destroy_referenced') do
83
+ result = subject.find('icon').destroy
84
+ message = "HTTP status code: 422 Unprocessable Entity\n"\
85
+ "Message: Validation error\n"\
86
+ "Details: \n"\
87
+ "\t* Name: reference - Path: '' - Value: ''\n"\
88
+ "Request ID: 727a53d1-e679-4654-8bec-f955da1334e9"
89
+
90
+ expect(result).to be_kind_of Contentful::Management::Error
91
+ expect(result.message).to eq message
92
+ end
93
+ end
94
+
95
+ it 'returns true when content type is not activated' do
96
+ vcr('tag/destroy') do
97
+ result = subject.find('randomTag').destroy
98
+ expect(result).to eql true
99
+ end
100
+ end
101
+ end
102
+
103
+ describe 'tag an entry' do
104
+ it 'creates entry with tags' do
105
+ vcr('tag/create_entry_with_tags') do
106
+ content_type = client.content_types(space_id, 'master').find('simple')
107
+ entry = client.entries(space_id, 'master').create(
108
+ content_type,
109
+ title: 'Entry title',
110
+ _metadata: { "tags": [{ "sys": { "type": "Link", "linkType": "Tag", "id": "icon" } }] }
111
+ )
112
+
113
+ expect(entry._metadata[:tags].count).to eq(1)
114
+ expect(entry._metadata[:tags].first.id).to eq('icon')
115
+ end
116
+ end
117
+
118
+ it 'add tags to an entry' do
119
+ vcr('tag/add_tag_to_entry') do
120
+ entry = client.entries(space_id, 'master').find('28spH12WTOl0xUQeC4AL1a')
121
+ expect(entry._metadata[:tags]).to be_empty
122
+
123
+ result = entry.update(_metadata: { "tags": [{ "sys": { "type": "Link", "linkType": "Tag", "id": "icon" } }] })
124
+ expect(result).to be_kind_of Contentful::Management::Entry
125
+ expect(result._metadata[:tags].count).to eq(1)
126
+ expect(result._metadata[:tags].first.id).to eq('icon')
127
+ end
128
+ end
129
+
130
+ it 'remove tags from an entry' do
131
+ vcr('tag/remove_tag_from_entry') do
132
+ entry = client.entries(space_id, 'master').find('28spH12WTOl0xUQeC4AL1a')
133
+ expect(entry._metadata[:tags]).not_to be_empty
134
+
135
+ entry.update(_metadata: { "tags": [] })
136
+ expect(entry._metadata[:tags]).to be_empty
137
+ end
138
+ end
139
+ end
140
+
141
+ describe 'tag an asset' do
142
+ it 'creates asset with tags' do
143
+ vcr('tag/create_asset_with_tags') do
144
+ file = Contentful::Management::File.new
145
+ file.properties[:contentType] = 'image/jpeg'
146
+ file.properties[:fileName] = 'pic1.jpg'
147
+ file.properties[:upload] = 'https://upload.wikimedia.org/wikipedia/commons/c/c7/Gasometer_Berlin_Sch%C3%B6neberg_2011.jpg'
148
+
149
+ asset = client.assets(space_id, 'master').create(
150
+ title: 'Asset title',
151
+ file: file,
152
+ _metadata: { "tags": [{ "sys": { "type": "Link", "linkType": "Tag", "id": "icon" } }] }
153
+ )
154
+
155
+ expect(asset._metadata[:tags].count).to eq(1)
156
+ expect(asset._metadata[:tags].first.id).to eq('icon')
157
+ end
158
+ end
159
+
160
+ it 'add tags to an asset' do
161
+ vcr('tag/add_tag_to_asset') do
162
+ environment = client.environments(space_id).find('master')
163
+ asset = environment.assets.find('686aLBcjj1f47uFWxrepj6')
164
+ expect(asset._metadata[:tags]).to be_empty
165
+
166
+ result = asset.update(_metadata: { "tags": [{ "sys": { "type": "Link", "linkType": "Tag", "id": "icon" } }] })
167
+ expect(result).to be_kind_of Contentful::Management::Asset
168
+ expect(result._metadata[:tags].count).to eq(1)
169
+ expect(result._metadata[:tags].first.id).to eq('icon')
170
+ end
171
+ end
172
+
173
+ it 'remove tags from an asset' do
174
+ vcr('tag/remove_tag_from_asset') do
175
+ environment = client.environments(space_id).find('master')
176
+ asset = environment.assets.find('686aLBcjj1f47uFWxrepj6')
177
+ expect(asset._metadata[:tags]).not_to be_empty
178
+
179
+ asset.update(_metadata: { "tags": [] })
180
+ expect(asset._metadata[:tags]).to be_empty
181
+ end
182
+ end
183
+ end
184
+ end
185
+ end
186
+ end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contentful-management
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Protas
8
8
  - Tomasz Warkocki
9
9
  - Contentful GmbH (Andreas Tiefenthaler)
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-05-31 00:00:00.000000000 Z
13
+ date: 2022-04-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: http
@@ -286,12 +286,12 @@ executables:
286
286
  extensions: []
287
287
  extra_rdoc_files: []
288
288
  files:
289
+ - ".circleci/config.yml"
289
290
  - ".gitignore"
290
291
  - ".reek"
291
292
  - ".rspec"
292
293
  - ".rubocop.yml"
293
294
  - ".rubocop_todo.yml"
294
- - ".travis.yml"
295
295
  - ".yardopts"
296
296
  - CHANGELOG.md
297
297
  - Gemfile
@@ -328,6 +328,7 @@ files:
328
328
  - lib/contentful/management/client_space_membership_methods_factory.rb
329
329
  - lib/contentful/management/client_space_methods_factory.rb
330
330
  - lib/contentful/management/client_space_periodic_usage_methods_factory.rb
331
+ - lib/contentful/management/client_tag_methods_factory.rb
331
332
  - lib/contentful/management/client_ui_extension_methods_factory.rb
332
333
  - lib/contentful/management/client_upload_methods_factory.rb
333
334
  - lib/contentful/management/client_user_methods_factory.rb
@@ -350,6 +351,7 @@ files:
350
351
  - lib/contentful/management/environment_editor_interface_methods_factory.rb
351
352
  - lib/contentful/management/environment_entry_methods_factory.rb
352
353
  - lib/contentful/management/environment_locale_methods_factory.rb
354
+ - lib/contentful/management/environment_tag_methods_factory.rb
353
355
  - lib/contentful/management/environment_ui_extension_methods_factory.rb
354
356
  - lib/contentful/management/error.rb
355
357
  - lib/contentful/management/field.rb
@@ -546,6 +548,7 @@ files:
546
548
  - spec/fixtures/vcr_cassettes/delete_request.yml
547
549
  - spec/fixtures/vcr_cassettes/editor_interfaces/default_for_space.yml
548
550
  - spec/fixtures/vcr_cassettes/editor_interfaces/update.yml
551
+ - spec/fixtures/vcr_cassettes/editor_interfaces/update_sidebar.yml
549
552
  - spec/fixtures/vcr_cassettes/entry/all.yml
550
553
  - spec/fixtures/vcr_cassettes/entry/archive.yml
551
554
  - spec/fixtures/vcr_cassettes/entry/archive_published.yml
@@ -638,6 +641,7 @@ files:
638
641
  - spec/fixtures/vcr_cassettes/environment/find_3.yml
639
642
  - spec/fixtures/vcr_cassettes/environment/issue_189.yml
640
643
  - spec/fixtures/vcr_cassettes/environment/not_found.yml
644
+ - spec/fixtures/vcr_cassettes/environment/tag_proxy.yml
641
645
  - spec/fixtures/vcr_cassettes/get_request.yml
642
646
  - spec/fixtures/vcr_cassettes/locale/all_for_space.yml
643
647
  - spec/fixtures/vcr_cassettes/locale/create_for_space.yml
@@ -738,6 +742,20 @@ files:
738
742
  - spec/fixtures/vcr_cassettes/space_memberships/find_2.yml
739
743
  - spec/fixtures/vcr_cassettes/space_periodic_usage/all.yml
740
744
  - spec/fixtures/vcr_cassettes/space_periodic_usage/filters.yml
745
+ - spec/fixtures/vcr_cassettes/tag/add_tag_to_asset.yml
746
+ - spec/fixtures/vcr_cassettes/tag/add_tag_to_entry.yml
747
+ - spec/fixtures/vcr_cassettes/tag/all.yml
748
+ - spec/fixtures/vcr_cassettes/tag/create_asset_with_tags.yml
749
+ - spec/fixtures/vcr_cassettes/tag/create_entry_with_tags.yml
750
+ - spec/fixtures/vcr_cassettes/tag/create_visibility_private.yml
751
+ - spec/fixtures/vcr_cassettes/tag/create_visibility_public.yml
752
+ - spec/fixtures/vcr_cassettes/tag/destroy.yml
753
+ - spec/fixtures/vcr_cassettes/tag/destroy_referenced.yml
754
+ - spec/fixtures/vcr_cassettes/tag/find.yml
755
+ - spec/fixtures/vcr_cassettes/tag/not_found.yml
756
+ - spec/fixtures/vcr_cassettes/tag/remove_tag_from_asset.yml
757
+ - spec/fixtures/vcr_cassettes/tag/remove_tag_from_entry.yml
758
+ - spec/fixtures/vcr_cassettes/tag/update.yml
741
759
  - spec/fixtures/vcr_cassettes/ui_extension/all.yml
742
760
  - spec/fixtures/vcr_cassettes/ui_extension/create.yml
743
761
  - spec/fixtures/vcr_cassettes/ui_extension/create_parameters.yml
@@ -784,6 +802,7 @@ files:
784
802
  - spec/lib/contentful/management/space_membership_spec.rb
785
803
  - spec/lib/contentful/management/space_periodic_usage_spec.rb
786
804
  - spec/lib/contentful/management/space_spec.rb
805
+ - spec/lib/contentful/management/tag_spec.rb
787
806
  - spec/lib/contentful/management/ui_extension_spec.rb
788
807
  - spec/lib/contentful/management/upload_spec.rb
789
808
  - spec/lib/contentful/management/user_spec.rb
@@ -797,7 +816,7 @@ homepage: https://github.com/contentful/contentful-management.rb
797
816
  licenses:
798
817
  - MIT
799
818
  metadata: {}
800
- post_install_message:
819
+ post_install_message:
801
820
  rdoc_options: []
802
821
  require_paths:
803
822
  - lib
@@ -812,8 +831,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
812
831
  - !ruby/object:Gem::Version
813
832
  version: '0'
814
833
  requirements: []
815
- rubygems_version: 3.0.3
816
- signing_key:
834
+ rubygems_version: 3.1.2
835
+ signing_key:
817
836
  specification_version: 4
818
837
  summary: contentful management api
819
838
  test_files:
@@ -959,6 +978,7 @@ test_files:
959
978
  - spec/fixtures/vcr_cassettes/delete_request.yml
960
979
  - spec/fixtures/vcr_cassettes/editor_interfaces/default_for_space.yml
961
980
  - spec/fixtures/vcr_cassettes/editor_interfaces/update.yml
981
+ - spec/fixtures/vcr_cassettes/editor_interfaces/update_sidebar.yml
962
982
  - spec/fixtures/vcr_cassettes/entry/all.yml
963
983
  - spec/fixtures/vcr_cassettes/entry/archive.yml
964
984
  - spec/fixtures/vcr_cassettes/entry/archive_published.yml
@@ -1051,6 +1071,7 @@ test_files:
1051
1071
  - spec/fixtures/vcr_cassettes/environment/find_3.yml
1052
1072
  - spec/fixtures/vcr_cassettes/environment/issue_189.yml
1053
1073
  - spec/fixtures/vcr_cassettes/environment/not_found.yml
1074
+ - spec/fixtures/vcr_cassettes/environment/tag_proxy.yml
1054
1075
  - spec/fixtures/vcr_cassettes/get_request.yml
1055
1076
  - spec/fixtures/vcr_cassettes/locale/all_for_space.yml
1056
1077
  - spec/fixtures/vcr_cassettes/locale/create_for_space.yml
@@ -1151,6 +1172,20 @@ test_files:
1151
1172
  - spec/fixtures/vcr_cassettes/space_memberships/find_2.yml
1152
1173
  - spec/fixtures/vcr_cassettes/space_periodic_usage/all.yml
1153
1174
  - spec/fixtures/vcr_cassettes/space_periodic_usage/filters.yml
1175
+ - spec/fixtures/vcr_cassettes/tag/add_tag_to_asset.yml
1176
+ - spec/fixtures/vcr_cassettes/tag/add_tag_to_entry.yml
1177
+ - spec/fixtures/vcr_cassettes/tag/all.yml
1178
+ - spec/fixtures/vcr_cassettes/tag/create_asset_with_tags.yml
1179
+ - spec/fixtures/vcr_cassettes/tag/create_entry_with_tags.yml
1180
+ - spec/fixtures/vcr_cassettes/tag/create_visibility_private.yml
1181
+ - spec/fixtures/vcr_cassettes/tag/create_visibility_public.yml
1182
+ - spec/fixtures/vcr_cassettes/tag/destroy.yml
1183
+ - spec/fixtures/vcr_cassettes/tag/destroy_referenced.yml
1184
+ - spec/fixtures/vcr_cassettes/tag/find.yml
1185
+ - spec/fixtures/vcr_cassettes/tag/not_found.yml
1186
+ - spec/fixtures/vcr_cassettes/tag/remove_tag_from_asset.yml
1187
+ - spec/fixtures/vcr_cassettes/tag/remove_tag_from_entry.yml
1188
+ - spec/fixtures/vcr_cassettes/tag/update.yml
1154
1189
  - spec/fixtures/vcr_cassettes/ui_extension/all.yml
1155
1190
  - spec/fixtures/vcr_cassettes/ui_extension/create.yml
1156
1191
  - spec/fixtures/vcr_cassettes/ui_extension/create_parameters.yml
@@ -1197,6 +1232,7 @@ test_files:
1197
1232
  - spec/lib/contentful/management/space_membership_spec.rb
1198
1233
  - spec/lib/contentful/management/space_periodic_usage_spec.rb
1199
1234
  - spec/lib/contentful/management/space_spec.rb
1235
+ - spec/lib/contentful/management/tag_spec.rb
1200
1236
  - spec/lib/contentful/management/ui_extension_spec.rb
1201
1237
  - spec/lib/contentful/management/upload_spec.rb
1202
1238
  - spec/lib/contentful/management/user_spec.rb
data/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.6.1
4
- - 2.5.1
5
- - 2.4.1
6
- - 2.3.1
7
-
8
- before_install: gem install bundler
9
- script: bundle exec rake rspec_rubocop
10
- notifications:
11
- slack:
12
- secure: P+BWOt+sKPUlIwxUMaD7o4bVG19nIsedyv9D1MCBJELKxTYkXOyJECSNw1f5SDf9z0n4lKhfp8SY0dVigvxdUBd9/wsGqRZMMI2sykDJ8E85cYsUb8corEnIgQtwwzkAzWzhCbmWrZe39ai1Sr5ET/7bdEJ7SXIKbFS350SOn9s=