ruby-lokalise-api 2.8.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODE_OF_CONDUCT.md +1 -1
  3. data/.github/CONTRIBUTING.md +2 -2
  4. data/CHANGELOG.md +46 -0
  5. data/Gemfile +2 -0
  6. data/README.md +293 -178
  7. data/Rakefile +6 -1
  8. data/lib/ruby-lokalise-api.rb +4 -0
  9. data/lib/ruby-lokalise-api/client.rb +18 -4
  10. data/lib/ruby-lokalise-api/collections/base.rb +6 -2
  11. data/lib/ruby-lokalise-api/collections/branch.rb +3 -1
  12. data/lib/ruby-lokalise-api/collections/contributor.rb +2 -0
  13. data/lib/ruby-lokalise-api/collections/custom_translation_status.rb +3 -1
  14. data/lib/ruby-lokalise-api/collections/file.rb +2 -0
  15. data/lib/ruby-lokalise-api/collections/key.rb +2 -0
  16. data/lib/ruby-lokalise-api/collections/key_comment.rb +2 -0
  17. data/lib/ruby-lokalise-api/collections/order.rb +2 -0
  18. data/lib/ruby-lokalise-api/collections/payment_card.rb +2 -0
  19. data/lib/ruby-lokalise-api/collections/project.rb +2 -0
  20. data/lib/ruby-lokalise-api/collections/project_comment.rb +2 -0
  21. data/lib/ruby-lokalise-api/collections/project_language.rb +2 -0
  22. data/lib/ruby-lokalise-api/collections/queued_process.rb +15 -0
  23. data/lib/ruby-lokalise-api/collections/screenshot.rb +2 -0
  24. data/lib/ruby-lokalise-api/collections/snapshot.rb +2 -0
  25. data/lib/ruby-lokalise-api/collections/system_language.rb +2 -0
  26. data/lib/ruby-lokalise-api/collections/task.rb +2 -0
  27. data/lib/ruby-lokalise-api/collections/team.rb +2 -0
  28. data/lib/ruby-lokalise-api/collections/team_user.rb +2 -0
  29. data/lib/ruby-lokalise-api/collections/team_user_group.rb +3 -1
  30. data/lib/ruby-lokalise-api/collections/translation.rb +2 -0
  31. data/lib/ruby-lokalise-api/collections/translation_provider.rb +2 -0
  32. data/lib/ruby-lokalise-api/collections/webhook.rb +2 -0
  33. data/lib/ruby-lokalise-api/connection.rb +3 -1
  34. data/lib/ruby-lokalise-api/data/attributes.json +28 -13
  35. data/lib/ruby-lokalise-api/error.rb +2 -0
  36. data/lib/ruby-lokalise-api/json_handler.rb +4 -0
  37. data/lib/ruby-lokalise-api/request.rb +10 -1
  38. data/lib/ruby-lokalise-api/resources/base.rb +53 -21
  39. data/lib/ruby-lokalise-api/resources/branch.rb +3 -1
  40. data/lib/ruby-lokalise-api/resources/contributor.rb +4 -2
  41. data/lib/ruby-lokalise-api/resources/custom_translation_status.rb +4 -2
  42. data/lib/ruby-lokalise-api/resources/file.rb +5 -1
  43. data/lib/ruby-lokalise-api/resources/key.rb +3 -1
  44. data/lib/ruby-lokalise-api/resources/key_comment.rb +5 -3
  45. data/lib/ruby-lokalise-api/resources/order.rb +4 -0
  46. data/lib/ruby-lokalise-api/resources/payment_card.rb +3 -1
  47. data/lib/ruby-lokalise-api/resources/project.rb +3 -1
  48. data/lib/ruby-lokalise-api/resources/project_comment.rb +3 -1
  49. data/lib/ruby-lokalise-api/resources/project_language.rb +5 -3
  50. data/lib/ruby-lokalise-api/resources/queued_process.rb +18 -0
  51. data/lib/ruby-lokalise-api/resources/screenshot.rb +3 -1
  52. data/lib/ruby-lokalise-api/resources/snapshot.rb +5 -1
  53. data/lib/ruby-lokalise-api/resources/system_language.rb +3 -1
  54. data/lib/ruby-lokalise-api/resources/task.rb +3 -1
  55. data/lib/ruby-lokalise-api/resources/team.rb +2 -0
  56. data/lib/ruby-lokalise-api/resources/team_user.rb +4 -2
  57. data/lib/ruby-lokalise-api/resources/team_user_group.rb +6 -3
  58. data/lib/ruby-lokalise-api/resources/translation.rb +3 -1
  59. data/lib/ruby-lokalise-api/resources/translation_provider.rb +5 -0
  60. data/lib/ruby-lokalise-api/resources/webhook.rb +13 -3
  61. data/lib/ruby-lokalise-api/rest/branches.rb +2 -0
  62. data/lib/ruby-lokalise-api/rest/comments.rb +7 -5
  63. data/lib/ruby-lokalise-api/rest/contributors.rb +7 -5
  64. data/lib/ruby-lokalise-api/rest/custom_translation_statuses.rb +8 -6
  65. data/lib/ruby-lokalise-api/rest/files.rb +5 -3
  66. data/lib/ruby-lokalise-api/rest/keys.rb +9 -7
  67. data/lib/ruby-lokalise-api/rest/languages.rb +8 -6
  68. data/lib/ruby-lokalise-api/rest/orders.rb +2 -0
  69. data/lib/ruby-lokalise-api/rest/payment_cards.rb +5 -3
  70. data/lib/ruby-lokalise-api/rest/projects.rb +8 -6
  71. data/lib/ruby-lokalise-api/rest/queued_processes.rb +26 -0
  72. data/lib/ruby-lokalise-api/rest/screenshots.rb +7 -5
  73. data/lib/ruby-lokalise-api/rest/snapshots.rb +6 -4
  74. data/lib/ruby-lokalise-api/rest/tasks.rb +7 -5
  75. data/lib/ruby-lokalise-api/rest/team_user_group.rb +6 -4
  76. data/lib/ruby-lokalise-api/rest/team_users.rb +6 -4
  77. data/lib/ruby-lokalise-api/rest/teams.rb +3 -1
  78. data/lib/ruby-lokalise-api/rest/translation_providers.rb +4 -2
  79. data/lib/ruby-lokalise-api/rest/translations.rb +5 -3
  80. data/lib/ruby-lokalise-api/rest/webhooks.rb +18 -5
  81. data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +2 -0
  82. data/lib/ruby-lokalise-api/utils/endpoint_helpers.rb +2 -0
  83. data/lib/ruby-lokalise-api/utils/string_utils.rb +2 -0
  84. data/lib/ruby-lokalise-api/version.rb +3 -1
  85. data/ruby-lokalise-api.gemspec +9 -5
  86. data/spec/lib/ruby-lokalise-api/connection_spec.rb +10 -7
  87. data/spec/lib/ruby-lokalise-api/custom_json_parser_spec.rb +9 -5
  88. data/spec/lib/ruby-lokalise-api/error_spec.rb +15 -4
  89. data/spec/lib/ruby-lokalise-api/rest/branches_spec.rb +19 -5
  90. data/spec/lib/ruby-lokalise-api/rest/comments_spec.rb +19 -5
  91. data/spec/lib/ruby-lokalise-api/rest/contributors_spec.rb +18 -4
  92. data/spec/lib/ruby-lokalise-api/rest/custom_translation_statuses_spec.rb +18 -4
  93. data/spec/lib/ruby-lokalise-api/rest/files_spec.rb +21 -11
  94. data/spec/lib/ruby-lokalise-api/rest/keys_spec.rb +46 -26
  95. data/spec/lib/ruby-lokalise-api/rest/languages_spec.rb +20 -6
  96. data/spec/lib/ruby-lokalise-api/rest/orders_spec.rb +16 -2
  97. data/spec/lib/ruby-lokalise-api/rest/payment_cards_spec.rb +21 -5
  98. data/spec/lib/ruby-lokalise-api/rest/projects_spec.rb +18 -4
  99. data/spec/lib/ruby-lokalise-api/rest/queued_processes_spec.rb +57 -0
  100. data/spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb +18 -4
  101. data/spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb +31 -4
  102. data/spec/lib/ruby-lokalise-api/rest/tasks_spec.rb +18 -4
  103. data/spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb +92 -6
  104. data/spec/lib/ruby-lokalise-api/rest/team_users_spec.rb +19 -4
  105. data/spec/lib/ruby-lokalise-api/rest/teams_spec.rb +2 -0
  106. data/spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb +9 -2
  107. data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +20 -6
  108. data/spec/lib/ruby-lokalise-api/rest/webhooks_spec.rb +54 -2
  109. data/spec/lib/ruby-lokalise-api/utils/snakecase_spec.rb +2 -0
  110. data/spec/lib/ruby-lokalise-api_spec.rb +12 -9
  111. data/spec/spec_helper.rb +8 -1
  112. data/spec/support/test_client.rb +2 -0
  113. data/spec/support/vcr.rb +2 -0
  114. metadata +59 -12
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Lokalise::Client do
2
4
  let(:team_id) { 176_692 }
3
5
  let(:project_id) { '803826145ba90b42d5d860.46800099' }
@@ -6,7 +8,7 @@ RSpec.describe Lokalise::Client do
6
8
  let(:card_id) { 1774 }
7
9
 
8
10
  describe '#orders' do
9
- it 'should return all orders' do
11
+ it 'returns all orders' do
10
12
  orders = VCR.use_cassette('all_orders') do
11
13
  test_client.orders team_id
12
14
  end.collection
@@ -15,7 +17,7 @@ RSpec.describe Lokalise::Client do
15
17
  expect(orders.first.order_id).to eq(order_id)
16
18
  end
17
19
 
18
- it 'should support pagination' do
20
+ it 'supports pagination' do
19
21
  orders = VCR.use_cassette('all_orders_pagination') do
20
22
  test_client.orders team_id, limit: 1, page: 1
21
23
  end
@@ -52,6 +54,18 @@ RSpec.describe Lokalise::Client do
52
54
  expect(order.total).to eq(0.07)
53
55
  end
54
56
 
57
+ specify '#reload_data' do
58
+ order = VCR.use_cassette('order') do
59
+ test_client.order team_id, order_id
60
+ end
61
+
62
+ reloaded_order = VCR.use_cassette('order') do
63
+ order.reload_data
64
+ end
65
+
66
+ expect(reloaded_order.order_id).to eq(order.order_id)
67
+ end
68
+
55
69
  specify '#create_order' do
56
70
  order = VCR.use_cassette('create_order') do
57
71
  test_client.create_order team_id,
@@ -1,18 +1,21 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Lokalise::Client do
2
4
  let(:card_id) { 1773 }
3
5
 
4
6
  describe '#payment_cards' do
5
- it 'should return all payment cards' do
7
+ it 'returns all payment cards' do
6
8
  cards = VCR.use_cassette('all_payment_cards') do
7
9
  test_client.payment_cards
8
- end.collection
10
+ end
9
11
 
10
- card = cards.first
12
+ expect(cards.user_id).to eq(20_181)
13
+ card = cards.collection.first
11
14
  expect(card.card_id).to eq(1774)
12
15
  expect(card.last4).to eq('0358')
13
16
  end
14
17
 
15
- it 'should support pagination' do
18
+ it 'supports pagination' do
16
19
  cards = VCR.use_cassette('all_payment_cards_pagination') do
17
20
  test_client.payment_cards limit: 1, page: 1
18
21
  end
@@ -47,12 +50,25 @@ RSpec.describe Lokalise::Client do
47
50
  test_client.payment_card card_id
48
51
  end
49
52
 
53
+ expect(card.user_id).to eq(20_181)
50
54
  expect(card.card_id).to eq(card_id)
51
55
  expect(card.brand).to eq('Visa')
52
56
  expect(card.last4).to eq('4242')
53
57
  expect(card.created_at).to eq('2019-03-19 17:01:22 (Etc/UTC)')
54
58
  end
55
59
 
60
+ specify '#reload_data' do
61
+ card = VCR.use_cassette('payment_card') do
62
+ test_client.payment_card card_id
63
+ end
64
+
65
+ reloaded_card = VCR.use_cassette('payment_card') do
66
+ card.reload_data
67
+ end
68
+
69
+ expect(reloaded_card.card_id).to eq(card.card_id)
70
+ end
71
+
56
72
  specify '#destroy_payment_card' do
57
73
  result = VCR.use_cassette('destroy_payment_card') do
58
74
  test_client.destroy_payment_card card_id
@@ -62,7 +78,7 @@ RSpec.describe Lokalise::Client do
62
78
  expect(result['card_id']).to eq(card_id)
63
79
  end
64
80
 
65
- it 'should support chained destroy' do
81
+ it 'supports chained destroy' do
66
82
  card = VCR.use_cassette('payment_card') do
67
83
  test_client.payment_card card_id
68
84
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Lokalise::Client do
2
4
  let(:new_project_id) { '572222075c0953fd70d492.30502628' }
3
5
 
4
6
  describe '#projects' do
5
- it 'should return all projects' do
7
+ it 'returns all projects' do
6
8
  projects = VCR.use_cassette('all_projects') do
7
9
  test_client.projects
8
10
  end.collection
@@ -12,7 +14,7 @@ RSpec.describe Lokalise::Client do
12
14
  expect(project.name).to eq('demo phoenix')
13
15
  end
14
16
 
15
- it 'should support pagination' do
17
+ it 'supports pagination' do
16
18
  projects = VCR.use_cassette('all_projects_pagination') do
17
19
  test_client.projects limit: 1, page: 2
18
20
  end
@@ -49,6 +51,18 @@ RSpec.describe Lokalise::Client do
49
51
  expect(project.statistics['progress_total']).to eq(18)
50
52
  end
51
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
+
52
66
  specify '#create_project' do
53
67
  project = VCR.use_cassette('new_project') do
54
68
  test_client.create_project name: 'rspec proj', description: 'demo project for rspec'
@@ -87,8 +101,8 @@ RSpec.describe Lokalise::Client do
87
101
  expect(response['project_deleted']).to eq(true)
88
102
  end
89
103
 
90
- context 'project chained methods' do
91
- it 'should support update, empty, and destroy' do
104
+ context 'when project methods are chained' do
105
+ it 'supports update, empty, and destroy' do
92
106
  project = VCR.use_cassette('create_another_project') do
93
107
  test_client.create_project name: 'chained proj'
94
108
  end
@@ -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
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Lokalise::Client do
2
4
  let(:project_id) { '803826145ba90b42d5d860.46800099' }
3
5
  let(:screenshot_id) { 115_185 }
4
6
 
5
7
  describe '#screenshots' do
6
- it 'should return all screenshots' do
8
+ it 'returns all screenshots' do
7
9
  screenshots = VCR.use_cassette('all_screenshots') do
8
10
  test_client.screenshots project_id
9
11
  end.collection
@@ -11,7 +13,7 @@ RSpec.describe Lokalise::Client do
11
13
  expect(screenshots.count).to eq(1)
12
14
  end
13
15
 
14
- it 'should support pagination' do
16
+ it 'supports pagination' do
15
17
  screenshots = VCR.use_cassette('all_screenshots_pagination') do
16
18
  test_client.screenshots project_id, limit: 1, page: 1
17
19
  end
@@ -39,6 +41,18 @@ RSpec.describe Lokalise::Client do
39
41
  expect(screenshot.height).to eq(32)
40
42
  end
41
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
+
42
56
  specify '#create_screenshots' do
43
57
  screenshot_from_file do |file|
44
58
  screenshot = VCR.use_cassette('create_screenshots') do
@@ -69,8 +83,8 @@ RSpec.describe Lokalise::Client do
69
83
  expect(response['screenshot_deleted']).to eq(true)
70
84
  end
71
85
 
72
- context 'screenshot chained methods' do
73
- it 'should support update and destroy' do
86
+ context 'when screenshot methods are chained' do
87
+ it 'supports update and destroy' do
74
88
  screenshot = screenshot_from_file do |file|
75
89
  VCR.use_cassette('create_another_screenshot') do
76
90
  test_client.create_screenshots project_id, data: file.read, title: 'chained screen'
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Lokalise::Client do
2
4
  let(:project_id) { '803826145ba90b42d5d860.46800099' }
3
5
  let(:snapshot_id) { 27_881 }
4
6
 
5
7
  describe '#snapshots' do
6
- it 'should return all snapshots' do
8
+ it 'returns all snapshots' do
7
9
  snapshots = VCR.use_cassette('all_snapshots') do
8
10
  test_client.snapshots project_id
9
11
  end.collection
@@ -19,7 +21,7 @@ RSpec.describe Lokalise::Client do
19
21
  expect(snapshot.created_at_timestamp).to eq(1_544_461_324)
20
22
  end
21
23
 
22
- it 'should support pagination' do
24
+ it 'supports pagination' do
23
25
  snapshots = VCR.use_cassette('all_snapshots_pagination') do
24
26
  test_client.snapshots project_id, limit: 1, page: 2
25
27
  end
@@ -65,8 +67,33 @@ RSpec.describe Lokalise::Client do
65
67
  expect(response['snapshot_deleted']).to eq(true)
66
68
  end
67
69
 
68
- context 'snapshot chained methods' do
69
- it 'should support destroy and restore' do
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
+
96
+ it 'supports destroy and restore' do
70
97
  snapshot = VCR.use_cassette('create_another_snapshot') do
71
98
  test_client.create_snapshot project_id, title: 'chained'
72
99
  end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Lokalise::Client do
2
4
  let(:project_id) { '803826145ba90b42d5d860.46800099' }
3
5
  let(:key_id) { 15_571_976 }
4
6
  let(:task_id) { 4387 }
5
7
 
6
8
  describe '#tasks' do
7
- it 'should return all tasks' do
9
+ it 'returns all tasks' do
8
10
  tasks = VCR.use_cassette('all_tasks') do
9
11
  test_client.tasks project_id
10
12
  end.collection
@@ -12,7 +14,7 @@ RSpec.describe Lokalise::Client do
12
14
  expect(tasks.count).to eq(3)
13
15
  end
14
16
 
15
- it 'should support pagination' do
17
+ it 'supports pagination' do
16
18
  tasks = VCR.use_cassette('all_tasks_pagination') do
17
19
  test_client.tasks project_id, limit: 2, page: 2
18
20
  end
@@ -58,6 +60,18 @@ RSpec.describe Lokalise::Client do
58
60
  expect(task.custom_translation_status_ids).to eq([])
59
61
  end
60
62
 
63
+ specify '#reload_data' do
64
+ task = VCR.use_cassette('task') do
65
+ test_client.task project_id, '11925'
66
+ end
67
+
68
+ reloaded_task = VCR.use_cassette('task') do
69
+ task.reload_data
70
+ end
71
+
72
+ expect(reloaded_task.task_id).to eq(task.task_id)
73
+ end
74
+
61
75
  specify '#create_task' do
62
76
  task = VCR.use_cassette('create_task') do
63
77
  test_client.create_task project_id, title: 'another rspec key',
@@ -92,8 +106,8 @@ RSpec.describe Lokalise::Client do
92
106
  expect(response['task_deleted']).to eq(true)
93
107
  end
94
108
 
95
- context 'task chained methods' do
96
- it 'should support update and destroy' do
109
+ context 'when task methods are chained' do
110
+ it 'supports update and destroy' do
97
111
  task = VCR.use_cassette('create_another_task') do
98
112
  test_client.create_task project_id, title: 'chained',
99
113
  keys: [key_id],
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Lokalise::Client do
2
4
  let(:team_id) { 176_692 }
3
5
  let(:group_id) { 515 }
@@ -8,7 +10,7 @@ RSpec.describe Lokalise::Client do
8
10
  let(:user_id) { 35_554 }
9
11
 
10
12
  describe '#team_user_groups' do
11
- it 'should return all team_user_groups' do
13
+ it 'returns all team_user_groups' do
12
14
  team_user_groups = VCR.use_cassette('team_user_groups') do
13
15
  test_client.team_user_groups team_id
14
16
  end
@@ -17,7 +19,7 @@ RSpec.describe Lokalise::Client do
17
19
  expect(team_user_groups.team_id).to eq(team_id)
18
20
  end
19
21
 
20
- it 'should support pagination' do
22
+ it 'supports pagination' do
21
23
  team_users = VCR.use_cassette('team_user_groups_pagination') do
22
24
  test_client.team_user_groups team_id, limit: 1, page: 2
23
25
  end
@@ -43,6 +45,11 @@ RSpec.describe Lokalise::Client do
43
45
  expect(group.team_id).to eq(team_id)
44
46
  expect(group.projects.first).to eq('803826145ba90b42d5d860.46800099')
45
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)
46
53
  end
47
54
 
48
55
  specify '#create_team_user_group' do
@@ -58,6 +65,11 @@ RSpec.describe Lokalise::Client do
58
65
 
59
66
  expect(group.name).to eq('RSpec group')
60
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)
61
73
  end
62
74
 
63
75
  specify '#update_team_user_group' do
@@ -89,6 +101,16 @@ RSpec.describe Lokalise::Client do
89
101
  expect(group.team_id).to eq(team_id)
90
102
  expect(group.group_id).to eq(third_group_id)
91
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)
92
114
  end
93
115
 
94
116
  specify '#remove_projects_from_group' do
@@ -99,6 +121,16 @@ RSpec.describe Lokalise::Client do
99
121
  expect(group.group_id).to eq(third_group_id)
100
122
  expect(group.team_id).to eq(team_id)
101
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)
102
134
  end
103
135
 
104
136
  specify '#add_users_to_group' do
@@ -109,6 +141,15 @@ RSpec.describe Lokalise::Client do
109
141
  expect(group.team_id).to eq(team_id)
110
142
  expect(group.group_id).to eq(third_group_id)
111
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
112
153
  end
113
154
 
114
155
  specify '#remove_users_from_group' do
@@ -119,10 +160,19 @@ RSpec.describe Lokalise::Client do
119
160
  expect(group.group_id).to eq(third_group_id)
120
161
  expect(group.team_id).to eq(team_id)
121
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
122
172
  end
123
173
 
124
- context 'team user group chained methods' do
125
- it 'should support update and destroy' do
174
+ context 'when team user group methods are chained' do
175
+ it 'supports update and destroy' do
126
176
  group = VCR.use_cassette('another_team_user_group') do
127
177
  test_client.team_user_group team_id, third_group_id
128
178
  end
@@ -145,7 +195,7 @@ RSpec.describe Lokalise::Client do
145
195
  expect(response['group_deleted']).to eq(true)
146
196
  end
147
197
 
148
- it 'should support project management' do
198
+ it 'supports project management' do
149
199
  group = VCR.use_cassette('team_user_group') do
150
200
  test_client.team_user_group team_id, group_id
151
201
  end
@@ -158,6 +208,15 @@ RSpec.describe Lokalise::Client do
158
208
  expect(group.group_id).to eq(group_id)
159
209
  expect(group.projects).to include(another_project_id)
160
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
+
161
220
  group = VCR.use_cassette('remove_project_from_group_chained') do
162
221
  group.remove_projects(projects: [another_project_id])
163
222
  end
@@ -165,9 +224,18 @@ RSpec.describe Lokalise::Client do
165
224
  expect(group.team_id).to eq(team_id)
166
225
  expect(group.group_id).to eq(group_id)
167
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)
168
236
  end
169
237
 
170
- it 'should support users management' do
238
+ it 'supports users management' do
171
239
  group = VCR.use_cassette('team_user_group') do
172
240
  test_client.team_user_group team_id, group_id
173
241
  end
@@ -180,6 +248,15 @@ RSpec.describe Lokalise::Client do
180
248
  expect(group.group_id).to eq(group_id)
181
249
  expect(group.members).to include(user_id)
182
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
+
183
260
  group = VCR.use_cassette('remove_user_from_group_chained') do
184
261
  group.remove_users(users: [user_id])
185
262
  end
@@ -187,6 +264,15 @@ RSpec.describe Lokalise::Client do
187
264
  expect(group.team_id).to eq(team_id)
188
265
  expect(group.group_id).to eq(group_id)
189
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)
190
276
  end
191
277
  end
192
278
  end