ruby-lokalise-api 2.8.0 → 3.1.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 (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