contentful-management 3.3.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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +23 -0
  3. data/CHANGELOG.md +4 -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/entry.rb +3 -3
  9. data/lib/contentful/management/environment.rb +10 -0
  10. data/lib/contentful/management/environment_tag_methods_factory.rb +11 -0
  11. data/lib/contentful/management/resource/refresher.rb +1 -0
  12. data/lib/contentful/management/resource_requester.rb +2 -2
  13. data/lib/contentful/management/tag.rb +27 -0
  14. data/lib/contentful/management/version.rb +1 -1
  15. data/spec/fixtures/vcr_cassettes/environment/tag_proxy.yml +658 -0
  16. data/spec/fixtures/vcr_cassettes/tag/add_tag_to_asset.yml +456 -0
  17. data/spec/fixtures/vcr_cassettes/tag/add_tag_to_entry.yml +315 -0
  18. data/spec/fixtures/vcr_cassettes/tag/all.yml +252 -0
  19. data/spec/fixtures/vcr_cassettes/tag/create_asset_with_tags.yml +147 -0
  20. data/spec/fixtures/vcr_cassettes/tag/create_entry_with_tags.yml +293 -0
  21. data/spec/fixtures/vcr_cassettes/tag/create_visibility_private.yml +125 -0
  22. data/spec/fixtures/vcr_cassettes/tag/create_visibility_public.yml +125 -0
  23. data/spec/fixtures/vcr_cassettes/tag/destroy.yml +208 -0
  24. data/spec/fixtures/vcr_cassettes/tag/destroy_referenced.yml +226 -0
  25. data/spec/fixtures/vcr_cassettes/tag/find.yml +125 -0
  26. data/spec/fixtures/vcr_cassettes/tag/not_found.yml +98 -0
  27. data/spec/fixtures/vcr_cassettes/tag/remove_tag_from_asset.yml +456 -0
  28. data/spec/fixtures/vcr_cassettes/tag/remove_tag_from_entry.yml +315 -0
  29. data/spec/fixtures/vcr_cassettes/tag/update.yml +251 -0
  30. data/spec/lib/contentful/management/environment_spec.rb +12 -0
  31. data/spec/lib/contentful/management/tag_spec.rb +186 -0
  32. metadata +41 -7
  33. 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.3.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-08-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
@@ -639,6 +641,7 @@ files:
639
641
  - spec/fixtures/vcr_cassettes/environment/find_3.yml
640
642
  - spec/fixtures/vcr_cassettes/environment/issue_189.yml
641
643
  - spec/fixtures/vcr_cassettes/environment/not_found.yml
644
+ - spec/fixtures/vcr_cassettes/environment/tag_proxy.yml
642
645
  - spec/fixtures/vcr_cassettes/get_request.yml
643
646
  - spec/fixtures/vcr_cassettes/locale/all_for_space.yml
644
647
  - spec/fixtures/vcr_cassettes/locale/create_for_space.yml
@@ -739,6 +742,20 @@ files:
739
742
  - spec/fixtures/vcr_cassettes/space_memberships/find_2.yml
740
743
  - spec/fixtures/vcr_cassettes/space_periodic_usage/all.yml
741
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
742
759
  - spec/fixtures/vcr_cassettes/ui_extension/all.yml
743
760
  - spec/fixtures/vcr_cassettes/ui_extension/create.yml
744
761
  - spec/fixtures/vcr_cassettes/ui_extension/create_parameters.yml
@@ -785,6 +802,7 @@ files:
785
802
  - spec/lib/contentful/management/space_membership_spec.rb
786
803
  - spec/lib/contentful/management/space_periodic_usage_spec.rb
787
804
  - spec/lib/contentful/management/space_spec.rb
805
+ - spec/lib/contentful/management/tag_spec.rb
788
806
  - spec/lib/contentful/management/ui_extension_spec.rb
789
807
  - spec/lib/contentful/management/upload_spec.rb
790
808
  - spec/lib/contentful/management/user_spec.rb
@@ -798,7 +816,7 @@ homepage: https://github.com/contentful/contentful-management.rb
798
816
  licenses:
799
817
  - MIT
800
818
  metadata: {}
801
- post_install_message:
819
+ post_install_message:
802
820
  rdoc_options: []
803
821
  require_paths:
804
822
  - lib
@@ -813,8 +831,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
813
831
  - !ruby/object:Gem::Version
814
832
  version: '0'
815
833
  requirements: []
816
- rubygems_version: 3.0.3
817
- signing_key:
834
+ rubygems_version: 3.1.2
835
+ signing_key:
818
836
  specification_version: 4
819
837
  summary: contentful management api
820
838
  test_files:
@@ -1053,6 +1071,7 @@ test_files:
1053
1071
  - spec/fixtures/vcr_cassettes/environment/find_3.yml
1054
1072
  - spec/fixtures/vcr_cassettes/environment/issue_189.yml
1055
1073
  - spec/fixtures/vcr_cassettes/environment/not_found.yml
1074
+ - spec/fixtures/vcr_cassettes/environment/tag_proxy.yml
1056
1075
  - spec/fixtures/vcr_cassettes/get_request.yml
1057
1076
  - spec/fixtures/vcr_cassettes/locale/all_for_space.yml
1058
1077
  - spec/fixtures/vcr_cassettes/locale/create_for_space.yml
@@ -1153,6 +1172,20 @@ test_files:
1153
1172
  - spec/fixtures/vcr_cassettes/space_memberships/find_2.yml
1154
1173
  - spec/fixtures/vcr_cassettes/space_periodic_usage/all.yml
1155
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
1156
1189
  - spec/fixtures/vcr_cassettes/ui_extension/all.yml
1157
1190
  - spec/fixtures/vcr_cassettes/ui_extension/create.yml
1158
1191
  - spec/fixtures/vcr_cassettes/ui_extension/create_parameters.yml
@@ -1199,6 +1232,7 @@ test_files:
1199
1232
  - spec/lib/contentful/management/space_membership_spec.rb
1200
1233
  - spec/lib/contentful/management/space_periodic_usage_spec.rb
1201
1234
  - spec/lib/contentful/management/space_spec.rb
1235
+ - spec/lib/contentful/management/tag_spec.rb
1202
1236
  - spec/lib/contentful/management/ui_extension_spec.rb
1203
1237
  - spec/lib/contentful/management/upload_spec.rb
1204
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=