ruby-lokalise-api 2.9.0.1 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODE_OF_CONDUCT.md +1 -1
  3. data/.github/CONTRIBUTING.md +9 -2
  4. data/CHANGELOG.md +1 -80
  5. data/LICENSE +9 -18
  6. data/README.md +18 -1734
  7. data/lib/ruby-lokalise-api.rb +2 -0
  8. data/lib/ruby-lokalise-api/client.rb +17 -5
  9. data/lib/ruby-lokalise-api/collections/base.rb +5 -3
  10. data/lib/ruby-lokalise-api/collections/queued_process.rb +15 -0
  11. data/lib/ruby-lokalise-api/connection.rb +1 -1
  12. data/lib/ruby-lokalise-api/data/attributes.json +30 -12
  13. data/lib/ruby-lokalise-api/request.rb +8 -1
  14. data/lib/ruby-lokalise-api/resources/base.rb +55 -25
  15. data/lib/ruby-lokalise-api/resources/branch.rb +1 -1
  16. data/lib/ruby-lokalise-api/resources/contributor.rb +1 -1
  17. data/lib/ruby-lokalise-api/resources/custom_translation_status.rb +1 -1
  18. data/lib/ruby-lokalise-api/resources/file.rb +3 -1
  19. data/lib/ruby-lokalise-api/resources/key.rb +1 -1
  20. data/lib/ruby-lokalise-api/resources/key_comment.rb +1 -1
  21. data/lib/ruby-lokalise-api/resources/order.rb +2 -0
  22. data/lib/ruby-lokalise-api/resources/payment_card.rb +1 -1
  23. data/lib/ruby-lokalise-api/resources/project.rb +2 -2
  24. data/lib/ruby-lokalise-api/resources/project_language.rb +1 -1
  25. data/lib/ruby-lokalise-api/resources/queued_process.rb +18 -0
  26. data/lib/ruby-lokalise-api/resources/screenshot.rb +1 -1
  27. data/lib/ruby-lokalise-api/resources/snapshot.rb +3 -1
  28. data/lib/ruby-lokalise-api/resources/task.rb +1 -1
  29. data/lib/ruby-lokalise-api/resources/team_user.rb +1 -1
  30. data/lib/ruby-lokalise-api/resources/team_user_group.rb +2 -1
  31. data/lib/ruby-lokalise-api/resources/translation.rb +1 -1
  32. data/lib/ruby-lokalise-api/resources/translation_provider.rb +3 -0
  33. data/lib/ruby-lokalise-api/resources/webhook.rb +11 -3
  34. data/lib/ruby-lokalise-api/rest/comments.rb +5 -5
  35. data/lib/ruby-lokalise-api/rest/contributors.rb +5 -5
  36. data/lib/ruby-lokalise-api/rest/custom_translation_statuses.rb +6 -6
  37. data/lib/ruby-lokalise-api/rest/files.rb +3 -3
  38. data/lib/ruby-lokalise-api/rest/keys.rb +7 -7
  39. data/lib/ruby-lokalise-api/rest/languages.rb +6 -6
  40. data/lib/ruby-lokalise-api/rest/payment_cards.rb +3 -3
  41. data/lib/ruby-lokalise-api/rest/projects.rb +6 -6
  42. data/lib/ruby-lokalise-api/rest/queued_processes.rb +26 -0
  43. data/lib/ruby-lokalise-api/rest/screenshots.rb +5 -5
  44. data/lib/ruby-lokalise-api/rest/snapshots.rb +4 -4
  45. data/lib/ruby-lokalise-api/rest/tasks.rb +5 -5
  46. data/lib/ruby-lokalise-api/rest/team_user_group.rb +4 -4
  47. data/lib/ruby-lokalise-api/rest/team_users.rb +4 -4
  48. data/lib/ruby-lokalise-api/rest/teams.rb +1 -1
  49. data/lib/ruby-lokalise-api/rest/translation_providers.rb +2 -2
  50. data/lib/ruby-lokalise-api/rest/translations.rb +3 -3
  51. data/lib/ruby-lokalise-api/rest/webhooks.rb +16 -5
  52. data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +11 -6
  53. data/lib/ruby-lokalise-api/version.rb +1 -1
  54. data/ruby-lokalise-api.gemspec +6 -6
  55. data/spec/lib/ruby-lokalise-api/custom_json_parser_spec.rb +4 -4
  56. data/spec/lib/ruby-lokalise-api/error_spec.rb +8 -0
  57. data/spec/lib/ruby-lokalise-api/rest/branches_spec.rb +12 -0
  58. data/spec/lib/ruby-lokalise-api/rest/comments_spec.rb +12 -0
  59. data/spec/lib/ruby-lokalise-api/rest/contributors_spec.rb +12 -0
  60. data/spec/lib/ruby-lokalise-api/rest/custom_translation_statuses_spec.rb +12 -0
  61. data/spec/lib/ruby-lokalise-api/rest/files_spec.rb +17 -9
  62. data/spec/lib/ruby-lokalise-api/rest/keys_spec.rb +38 -20
  63. data/spec/lib/ruby-lokalise-api/rest/languages_spec.rb +12 -0
  64. data/spec/lib/ruby-lokalise-api/rest/orders_spec.rb +38 -2
  65. data/spec/lib/ruby-lokalise-api/rest/payment_cards_spec.rb +19 -5
  66. data/spec/lib/ruby-lokalise-api/rest/projects_spec.rb +12 -0
  67. data/spec/lib/ruby-lokalise-api/rest/queued_processes_spec.rb +57 -0
  68. data/spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb +12 -0
  69. data/spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb +25 -0
  70. data/spec/lib/ruby-lokalise-api/rest/tasks_spec.rb +20 -7
  71. data/spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb +84 -0
  72. data/spec/lib/ruby-lokalise-api/rest/team_users_spec.rb +13 -0
  73. data/spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb +5 -0
  74. data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +12 -0
  75. data/spec/lib/ruby-lokalise-api/rest/webhooks_spec.rb +50 -0
  76. metadata +21 -16
@@ -51,6 +51,18 @@ RSpec.describe Lokalise::Client do
51
51
  expect(project.statistics['progress_total']).to eq(18)
52
52
  end
53
53
 
54
+ specify '#reload_data' do
55
+ project = VCR.use_cassette('project') do
56
+ test_client.project '803826145ba90b42d5d860.46800099'
57
+ end
58
+
59
+ reloaded_project = VCR.use_cassette('project') do
60
+ project.reload_data
61
+ end
62
+
63
+ expect(reloaded_project.project_id).to eq(project.project_id)
64
+ end
65
+
54
66
  specify '#create_project' do
55
67
  project = VCR.use_cassette('new_project') do
56
68
  test_client.create_project name: 'rspec proj', description: 'demo project for rspec'
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Lokalise::Client do
4
+ let(:project_id) { '803826145ba90b42d5d860.46800099' }
5
+ let(:process_id) { '3b943469e6b3e324b5bdad639b122a623e6e7a1a' }
6
+ let(:queued_process_id) { '85c42bf5eff44648ca2f01f9db67b7d306a2f282' }
7
+
8
+ describe '#queued_processes' do
9
+ it 'returns all queued processes' do
10
+ processes = VCR.use_cassette('all_queued_processes') do
11
+ test_client.queued_processes project_id
12
+ end
13
+
14
+ expect(processes.branch).to eq('master')
15
+ processes = processes.collection
16
+ expect(processes.count).to eq(8)
17
+ expect(processes.first.process_id).to eq(process_id)
18
+ end
19
+ end
20
+
21
+ specify '#queued_process' do
22
+ process = VCR.use_cassette('queued_process') do
23
+ test_client.queued_process project_id, process_id
24
+ end
25
+
26
+ expect(process.branch).to eq('master')
27
+ expect(process.process_id).to eq(process_id)
28
+ expect(process.type).to eq('file-import')
29
+ expect(process.status).to eq('finished')
30
+ expect(process.message).to eq('')
31
+ expect(process.created_by).to eq(20_181)
32
+ expect(process.created_by_email).to eq('bodrovis@protonmail.com')
33
+ expect(process.created_at).to eq('2020-05-13 11:24:37 (Etc/UTC)')
34
+ expect(process.created_at_timestamp).to eq(1_589_369_077)
35
+ files = process.details['files']
36
+ expect(files.count).to eq(1)
37
+ expect(files[0]['status']).to eq('finished')
38
+ expect(files[0]['name_original']).to eq('test_async.json')
39
+ end
40
+
41
+ describe 'process status check' do
42
+ specify '#reload_data' do
43
+ queued_process = VCR.use_cassette('upload_file_status') do
44
+ test_client.queued_process project_id, queued_process_id
45
+ end
46
+
47
+ expect(queued_process.status).to eq('finished')
48
+
49
+ reloaded_process = VCR.use_cassette('upload_file_queued_reload') do
50
+ queued_process.reload_data
51
+ end
52
+
53
+ expect(reloaded_process.process_id).to eq(queued_process.process_id)
54
+ expect(reloaded_process.status).to eq('finished')
55
+ end
56
+ end
57
+ end
@@ -41,6 +41,18 @@ RSpec.describe Lokalise::Client do
41
41
  expect(screenshot.height).to eq(32)
42
42
  end
43
43
 
44
+ specify '#reload_data' do
45
+ screenshot = VCR.use_cassette('screenshot') do
46
+ test_client.screenshot project_id, screenshot_id
47
+ end
48
+
49
+ reloaded_screenshot = VCR.use_cassette('screenshot') do
50
+ screenshot.reload_data
51
+ end
52
+
53
+ expect(reloaded_screenshot.screenshot_id).to eq(screenshot.screenshot_id)
54
+ end
55
+
44
56
  specify '#create_screenshots' do
45
57
  screenshot_from_file do |file|
46
58
  screenshot = VCR.use_cassette('create_screenshots') do
@@ -68,6 +68,31 @@ RSpec.describe Lokalise::Client do
68
68
  end
69
69
 
70
70
  context 'when snapshot methods are chained' do
71
+ it 'allows restored project to receive chained methods' do
72
+ snapshot = VCR.use_cassette('create_snapshot_for_chained') do
73
+ test_client.create_snapshot project_id, title: 'chained rspec snap'
74
+ end
75
+
76
+ new_project = VCR.use_cassette('restore_snapshot_for_chained') do
77
+ snapshot.restore
78
+ end
79
+
80
+ updated_project = VCR.use_cassette('restored_updated_project') do
81
+ new_project.update name: 'Restored and updated'
82
+ end
83
+
84
+ expect(updated_project.client).to eq(test_client)
85
+ expect(updated_project.name).to eq('Restored and updated')
86
+ expect(updated_project.project_id).to eq(new_project.project_id)
87
+
88
+ response = VCR.use_cassette('delete_restored_project') do
89
+ updated_project.destroy
90
+ end
91
+
92
+ expect(response['project_id']).to eq(updated_project.project_id)
93
+ expect(response['project_deleted']).to eq(true)
94
+ end
95
+
71
96
  it 'supports destroy and restore' do
72
97
  snapshot = VCR.use_cassette('create_another_snapshot') do
73
98
  test_client.create_snapshot project_id, title: 'chained'
@@ -35,8 +35,8 @@ RSpec.describe Lokalise::Client do
35
35
  expect(task.task_id).to eq(11_925)
36
36
  expect(task.title).to eq('node updated')
37
37
  expect(task.description).to eq('')
38
- expect(task.status).to eq('in progress')
39
- expect(task.progress).to eq(1)
38
+ expect(task.status).to eq('completed')
39
+ expect(task.progress).to eq(0)
40
40
  expect(task.due_date).to eq(nil)
41
41
  expect(task.due_date_timestamp).to eq(nil)
42
42
  expect(task.keys_count).to eq(16)
@@ -45,21 +45,34 @@ RSpec.describe Lokalise::Client do
45
45
  expect(task.created_at_timestamp).to eq(1_557_764_126)
46
46
  expect(task.created_by).to eq(20_181)
47
47
  expect(task.created_by_email).to eq('bodrovis@protonmail.com')
48
- expect(task.can_be_parent).to eq(true)
48
+ expect(task.can_be_parent).to eq(false)
49
49
  expect(task.task_type).to eq('review')
50
50
  expect(task.parent_task_id).to eq(nil)
51
51
  expect(task.closing_tags).to eq([])
52
52
  expect(task.languages.first['language_iso']).to eq('sq')
53
53
  expect(task.auto_close_languages).to eq(true)
54
54
  expect(task.auto_close_task).to eq(true)
55
- expect(task.completed_by).to eq(nil)
56
- expect(task.completed_by_email).to eq(nil)
57
- expect(task.completed_at).to eq(nil)
58
- expect(task.completed_at_timestamp).to eq(nil)
55
+ expect(task.auto_close_items).to eq(true)
56
+ expect(task.completed_by).to eq(20_181)
57
+ expect(task.completed_by_email).to eq('bodrovis@protonmail.com')
58
+ expect(task.completed_at).to eq('2019-10-01 11:09:12 (Etc/UTC)')
59
+ expect(task.completed_at_timestamp).to eq(1_569_928_152)
59
60
  expect(task.do_lock_translations).to eq(false)
60
61
  expect(task.custom_translation_status_ids).to eq([])
61
62
  end
62
63
 
64
+ specify '#reload_data' do
65
+ task = VCR.use_cassette('task') do
66
+ test_client.task project_id, '11925'
67
+ end
68
+
69
+ reloaded_task = VCR.use_cassette('task') do
70
+ task.reload_data
71
+ end
72
+
73
+ expect(reloaded_task.task_id).to eq(task.task_id)
74
+ end
75
+
63
76
  specify '#create_task' do
64
77
  task = VCR.use_cassette('create_task') do
65
78
  test_client.create_task project_id, title: 'another rspec key',
@@ -45,6 +45,11 @@ RSpec.describe Lokalise::Client do
45
45
  expect(group.team_id).to eq(team_id)
46
46
  expect(group.projects.first).to eq('803826145ba90b42d5d860.46800099')
47
47
  expect(group.members[1]).to eq(25_753)
48
+
49
+ reloaded_group = VCR.use_cassette('team_user_group') do
50
+ group.reload_data
51
+ end
52
+ expect(reloaded_group.group_id).to eq(group.group_id)
48
53
  end
49
54
 
50
55
  specify '#create_team_user_group' do
@@ -60,6 +65,11 @@ RSpec.describe Lokalise::Client do
60
65
 
61
66
  expect(group.name).to eq('RSpec group')
62
67
  expect(group.team_id).to eq(team_id)
68
+
69
+ reloaded_group = VCR.use_cassette('created_team_user_group') do
70
+ group.reload_data
71
+ end
72
+ expect(reloaded_group.group_id).to eq(group.group_id)
63
73
  end
64
74
 
65
75
  specify '#update_team_user_group' do
@@ -91,6 +101,16 @@ RSpec.describe Lokalise::Client do
91
101
  expect(group.team_id).to eq(team_id)
92
102
  expect(group.group_id).to eq(third_group_id)
93
103
  expect(group.projects).to include(project_id)
104
+
105
+ reloaded_group = VCR.use_cassette('another_team_user_group') do
106
+ group.reload_data
107
+ end
108
+ expect(reloaded_group.group_id).to eq(group.group_id)
109
+
110
+ group = VCR.use_cassette('add_projects_to_group') do
111
+ group.add_projects projects: [project_id]
112
+ end
113
+ expect(group.group_id).to eq(third_group_id)
94
114
  end
95
115
 
96
116
  specify '#remove_projects_from_group' do
@@ -101,6 +121,16 @@ RSpec.describe Lokalise::Client do
101
121
  expect(group.group_id).to eq(third_group_id)
102
122
  expect(group.team_id).to eq(team_id)
103
123
  expect(group.projects).to be_empty
124
+
125
+ reloaded_group = VCR.use_cassette('another_team_user_group') do
126
+ group.reload_data
127
+ end
128
+ expect(reloaded_group.group_id).to eq(group.group_id)
129
+
130
+ group = VCR.use_cassette('remove_projects_from_group') do
131
+ group.remove_projects projects: [project_id]
132
+ end
133
+ expect(group.group_id).to eq(third_group_id)
104
134
  end
105
135
 
106
136
  specify '#add_users_to_group' do
@@ -111,6 +141,15 @@ RSpec.describe Lokalise::Client do
111
141
  expect(group.team_id).to eq(team_id)
112
142
  expect(group.group_id).to eq(third_group_id)
113
143
  expect(group.members).to include(user_id)
144
+
145
+ reloaded_group = VCR.use_cassette('another_team_user_group') do
146
+ group.reload_data
147
+ end
148
+ expect(reloaded_group.group_id).to eq(group.group_id)
149
+
150
+ group = VCR.use_cassette('add_users_to_group') do
151
+ group.add_users users: [user_id]
152
+ end
114
153
  end
115
154
 
116
155
  specify '#remove_users_from_group' do
@@ -121,6 +160,15 @@ RSpec.describe Lokalise::Client do
121
160
  expect(group.group_id).to eq(third_group_id)
122
161
  expect(group.team_id).to eq(team_id)
123
162
  expect(group.members).to be_empty
163
+
164
+ reloaded_group = VCR.use_cassette('another_team_user_group') do
165
+ group.reload_data
166
+ end
167
+ expect(reloaded_group.group_id).to eq(group.group_id)
168
+
169
+ group = VCR.use_cassette('remove_users_from_group') do
170
+ group.remove_users users: [user_id]
171
+ end
124
172
  end
125
173
 
126
174
  context 'when team user group methods are chained' do
@@ -160,6 +208,15 @@ RSpec.describe Lokalise::Client do
160
208
  expect(group.group_id).to eq(group_id)
161
209
  expect(group.projects).to include(another_project_id)
162
210
 
211
+ group = VCR.use_cassette('add_project_to_group_chained') do
212
+ group.add_projects(projects: [another_project_id])
213
+ end
214
+
215
+ reloaded_group = VCR.use_cassette('team_user_group') do
216
+ group.reload_data
217
+ end
218
+ expect(reloaded_group.group_id).to eq(group.group_id)
219
+
163
220
  group = VCR.use_cassette('remove_project_from_group_chained') do
164
221
  group.remove_projects(projects: [another_project_id])
165
222
  end
@@ -167,6 +224,15 @@ RSpec.describe Lokalise::Client do
167
224
  expect(group.team_id).to eq(team_id)
168
225
  expect(group.group_id).to eq(group_id)
169
226
  expect(group.projects).not_to include(another_project_id)
227
+
228
+ group = VCR.use_cassette('remove_project_from_group_chained') do
229
+ group.remove_projects(projects: [another_project_id])
230
+ end
231
+
232
+ reloaded_group = VCR.use_cassette('team_user_group') do
233
+ group.reload_data
234
+ end
235
+ expect(reloaded_group.group_id).to eq(group.group_id)
170
236
  end
171
237
 
172
238
  it 'supports users management' do
@@ -182,6 +248,15 @@ RSpec.describe Lokalise::Client do
182
248
  expect(group.group_id).to eq(group_id)
183
249
  expect(group.members).to include(user_id)
184
250
 
251
+ group = VCR.use_cassette('add_user_to_group_chained') do
252
+ group.add_users(users: [user_id])
253
+ end
254
+
255
+ reloaded_group = VCR.use_cassette('team_user_group') do
256
+ group.reload_data
257
+ end
258
+ expect(reloaded_group.group_id).to eq(group.group_id)
259
+
185
260
  group = VCR.use_cassette('remove_user_from_group_chained') do
186
261
  group.remove_users(users: [user_id])
187
262
  end
@@ -189,6 +264,15 @@ RSpec.describe Lokalise::Client do
189
264
  expect(group.team_id).to eq(team_id)
190
265
  expect(group.group_id).to eq(group_id)
191
266
  expect(group.members).not_to include(user_id)
267
+
268
+ group = VCR.use_cassette('remove_user_from_group_chained') do
269
+ group.remove_users(users: [user_id])
270
+ end
271
+
272
+ reloaded_group = VCR.use_cassette('team_user_group') do
273
+ group.reload_data
274
+ end
275
+ expect(reloaded_group.group_id).to eq(group.group_id)
192
276
  end
193
277
  end
194
278
  end
@@ -33,6 +33,7 @@ RSpec.describe Lokalise::Client do
33
33
  test_client.team_user team_id, '20181'
34
34
  end
35
35
 
36
+ expect(team_user.team_id).to eq(team_id)
36
37
  expect(team_user.user_id).to eq(20_181)
37
38
  expect(team_user.email).to eq('bodrovis@protonmail.com')
38
39
  expect(team_user.fullname).to eq('Ilya B')
@@ -41,6 +42,18 @@ RSpec.describe Lokalise::Client do
41
42
  expect(team_user.role).to eq('owner')
42
43
  end
43
44
 
45
+ specify '#reload_data' do
46
+ team_user = VCR.use_cassette('team_user') do
47
+ test_client.team_user team_id, '20181'
48
+ end
49
+
50
+ reloaded_team_user = VCR.use_cassette('team_user') do
51
+ team_user.reload_data
52
+ end
53
+
54
+ expect(reloaded_team_user.user_id).to eq(team_user.user_id)
55
+ end
56
+
44
57
  specify '#update_team_user' do
45
58
  team_user = VCR.use_cassette('update_team_user') do
46
59
  test_client.update_team_user team_id, team_user_id, role: 'admin'
@@ -39,5 +39,10 @@ RSpec.describe Lokalise::Client do
39
39
  expect(provider.description.start_with?('At')).to eq(true)
40
40
  expect(provider.tiers.first['title']).to eq('Native speaker')
41
41
  expect(provider.pairs.first['price_per_word']).to eq('0.05')
42
+
43
+ reloaded_provider = VCR.use_cassette('translation_provider') do
44
+ provider.reload_data
45
+ end
46
+ expect(reloaded_provider.provider_id).to eq(provider.provider_id)
42
47
  end
43
48
  end
@@ -76,6 +76,18 @@ RSpec.describe Lokalise::Client do
76
76
  expect(translation.custom_translation_statuses).to eq([])
77
77
  end
78
78
 
79
+ specify '#reload_data' do
80
+ translation = VCR.use_cassette('translation') do
81
+ test_client.translation project_id, translation_id
82
+ end
83
+
84
+ reloaded_translation = VCR.use_cassette('translation') do
85
+ translation.reload_data
86
+ end
87
+
88
+ expect(reloaded_translation.translation_id).to eq(translation.translation_id)
89
+ end
90
+
79
91
  specify '#update_translation' do
80
92
  translation = VCR.use_cassette('update_translation') do
81
93
  test_client.update_translation project_id, translation_id, translation: 'rspec trans',
@@ -4,6 +4,7 @@ RSpec.describe Lokalise::Client do
4
4
  let(:project_id) { '803826145ba90b42d5d860.46800099' }
5
5
  let(:webhook_id) { 'c7eb7e6e3c2fb2b26d0b64d0de083a5a71675b3d' }
6
6
  let(:new_webhook_id) { 'b345ccc6499920c490e8f4fe9487b1378dbf1dbf' }
7
+ let(:serious_webhook_id) { '795565582e5ab15a59bb68156c7e2e9eaa1e8d1a' }
7
8
 
8
9
  describe '#webhooks' do
9
10
  it 'returns all webhooks' do
@@ -40,6 +41,18 @@ RSpec.describe Lokalise::Client do
40
41
  expect(webhook.event_lang_map.first['event']).to eq('project.translation.updated')
41
42
  end
42
43
 
44
+ specify '#reload_data' do
45
+ webhook = VCR.use_cassette('webhook') do
46
+ test_client.webhook project_id, webhook_id
47
+ end
48
+
49
+ reloaded_webhook = VCR.use_cassette('webhook') do
50
+ webhook.reload_data
51
+ end
52
+
53
+ expect(reloaded_webhook.webhook_id).to eq(webhook.webhook_id)
54
+ end
55
+
43
56
  specify '#create_webhook' do
44
57
  webhook = VCR.use_cassette('create_webhook') do
45
58
  test_client.create_webhook project_id,
@@ -73,4 +86,41 @@ RSpec.describe Lokalise::Client do
73
86
  expect(response['project_id']).to eq(project_id)
74
87
  expect(response['webhook_deleted']).to eq(true)
75
88
  end
89
+
90
+ specify '#regenerate_webhook_secret' do
91
+ response = VCR.use_cassette('regenerate_webhook_secret') do
92
+ test_client.regenerate_webhook_secret project_id,
93
+ serious_webhook_id
94
+ end
95
+
96
+ expect(response['project_id']).to eq(project_id)
97
+ expect(response['secret']).not_to be_nil
98
+ end
99
+
100
+ context 'when webhook chained methods are used' do
101
+ it 'supports regenerate_webhook_secret' do
102
+ webhook = VCR.use_cassette('webhook_2') do
103
+ test_client.webhook project_id, serious_webhook_id
104
+ end
105
+
106
+ expect(webhook.branch).to eq('master')
107
+ expect(webhook.webhook_id).to eq(serious_webhook_id)
108
+
109
+ response = VCR.use_cassette('regenerate_webhook_secret_2') do
110
+ webhook.regenerate_secret
111
+ end
112
+
113
+ expect(response['project_id']).to eq(project_id)
114
+ expect(response['secret']).not_to be_nil
115
+ end
116
+
117
+ it 'supports update and destroy' do
118
+ webhook = VCR.use_cassette('webhook_2') do
119
+ test_client.webhook project_id, serious_webhook_id
120
+ end
121
+
122
+ expect(webhook).to respond_to(:update)
123
+ expect(webhook).to respond_to(:destroy)
124
+ end
125
+ end
76
126
  end