ruby-lokalise-api 4.5.1 → 6.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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -3
  3. data/lib/ruby_lokalise_api/base_request.rb +24 -0
  4. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/client.rb +25 -26
  5. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/base.rb +10 -10
  6. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/branch.rb +1 -1
  7. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/contributor.rb +1 -1
  8. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/custom_translation_status.rb +1 -1
  9. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/file.rb +1 -1
  10. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/key.rb +2 -2
  11. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/key_comment.rb +1 -1
  12. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/order.rb +1 -1
  13. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/payment_card.rb +1 -1
  14. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/project.rb +1 -1
  15. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/project_comment.rb +1 -1
  16. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/project_language.rb +1 -1
  17. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/queued_process.rb +1 -1
  18. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/screenshot.rb +1 -1
  19. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/segment.rb +1 -1
  20. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/snapshot.rb +1 -1
  21. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/system_language.rb +1 -1
  22. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/task.rb +1 -1
  23. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/team.rb +1 -1
  24. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/team_user.rb +1 -1
  25. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/team_user_group.rb +1 -1
  26. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/translation.rb +1 -1
  27. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/translation_provider.rb +1 -1
  28. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/webhook.rb +1 -1
  29. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/connection.rb +4 -3
  30. data/lib/ruby_lokalise_api/data/attributes.yml +235 -0
  31. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/error.rb +14 -14
  32. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/json_handler.rb +1 -1
  33. data/lib/ruby_lokalise_api/oauth2/auth.rb +62 -0
  34. data/lib/ruby_lokalise_api/oauth2/connection.rb +25 -0
  35. data/lib/ruby_lokalise_api/oauth2/request.rb +23 -0
  36. data/lib/{ruby-lokalise-api/oauth_client.rb → ruby_lokalise_api/oauth2_client.rb} +2 -2
  37. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/request.rb +5 -16
  38. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/base.rb +8 -8
  39. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/branch.rb +1 -1
  40. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/contributor.rb +1 -1
  41. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/custom_translation_status.rb +1 -1
  42. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/file.rb +2 -2
  43. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/key.rb +1 -1
  44. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/key_comment.rb +1 -1
  45. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/order.rb +1 -1
  46. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/payment_card.rb +1 -1
  47. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/project.rb +1 -1
  48. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/project_comment.rb +1 -1
  49. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/project_language.rb +1 -1
  50. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/queued_process.rb +1 -1
  51. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/screenshot.rb +1 -1
  52. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/segment.rb +1 -1
  53. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/snapshot.rb +2 -2
  54. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/system_language.rb +1 -1
  55. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/task.rb +1 -1
  56. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/team.rb +1 -1
  57. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/team_user.rb +1 -1
  58. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/team_user_billing_details.rb +1 -1
  59. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/team_user_group.rb +1 -1
  60. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/translation.rb +1 -1
  61. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/translation_provider.rb +1 -1
  62. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/webhook.rb +1 -1
  63. data/lib/ruby_lokalise_api/rest/branches.rb +69 -0
  64. data/lib/ruby_lokalise_api/rest/comments.rb +61 -0
  65. data/lib/ruby_lokalise_api/rest/contributors.rb +58 -0
  66. data/lib/ruby_lokalise_api/rest/custom_translation_statuses.rb +67 -0
  67. data/lib/ruby_lokalise_api/rest/files.rb +49 -0
  68. data/lib/ruby_lokalise_api/rest/keys.rb +79 -0
  69. data/lib/ruby_lokalise_api/rest/languages.rb +67 -0
  70. data/lib/ruby_lokalise_api/rest/orders.rb +37 -0
  71. data/lib/ruby_lokalise_api/rest/payment_cards.rb +43 -0
  72. data/lib/ruby_lokalise_api/rest/projects.rb +62 -0
  73. data/lib/ruby_lokalise_api/rest/queued_processes.rb +28 -0
  74. data/lib/ruby_lokalise_api/rest/screenshots.rb +58 -0
  75. data/lib/ruby_lokalise_api/rest/segments.rb +45 -0
  76. data/lib/ruby_lokalise_api/rest/snapshots.rb +47 -0
  77. data/lib/ruby_lokalise_api/rest/tasks.rb +58 -0
  78. data/lib/ruby_lokalise_api/rest/team_user_billing_details.rb +36 -0
  79. data/lib/ruby_lokalise_api/rest/team_user_groups.rb +109 -0
  80. data/lib/ruby_lokalise_api/rest/team_users.rb +48 -0
  81. data/lib/ruby_lokalise_api/rest/teams.rb +16 -0
  82. data/lib/ruby_lokalise_api/rest/translation_providers.rb +27 -0
  83. data/lib/ruby_lokalise_api/rest/translations.rb +39 -0
  84. data/lib/ruby_lokalise_api/rest/webhooks.rb +69 -0
  85. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/utils/attribute_helpers.rb +7 -7
  86. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/utils/endpoint_helpers.rb +1 -1
  87. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/utils/string_utils.rb +1 -1
  88. data/lib/ruby_lokalise_api/version.rb +5 -0
  89. data/lib/ruby_lokalise_api.rb +50 -0
  90. data/ruby-lokalise-api.gemspec +9 -8
  91. metadata +129 -155
  92. data/lib/ruby-lokalise-api/data/attributes.json +0 -259
  93. data/lib/ruby-lokalise-api/rest/branches.rb +0 -67
  94. data/lib/ruby-lokalise-api/rest/comments.rb +0 -59
  95. data/lib/ruby-lokalise-api/rest/contributors.rb +0 -56
  96. data/lib/ruby-lokalise-api/rest/custom_translation_statuses.rb +0 -65
  97. data/lib/ruby-lokalise-api/rest/files.rb +0 -36
  98. data/lib/ruby-lokalise-api/rest/keys.rb +0 -77
  99. data/lib/ruby-lokalise-api/rest/languages.rb +0 -65
  100. data/lib/ruby-lokalise-api/rest/orders.rb +0 -35
  101. data/lib/ruby-lokalise-api/rest/payment_cards.rb +0 -41
  102. data/lib/ruby-lokalise-api/rest/projects.rb +0 -60
  103. data/lib/ruby-lokalise-api/rest/queued_processes.rb +0 -26
  104. data/lib/ruby-lokalise-api/rest/screenshots.rb +0 -56
  105. data/lib/ruby-lokalise-api/rest/segments.rb +0 -43
  106. data/lib/ruby-lokalise-api/rest/snapshots.rb +0 -45
  107. data/lib/ruby-lokalise-api/rest/tasks.rb +0 -56
  108. data/lib/ruby-lokalise-api/rest/team_user_billing_details.rb +0 -34
  109. data/lib/ruby-lokalise-api/rest/team_user_group.rb +0 -107
  110. data/lib/ruby-lokalise-api/rest/team_users.rb +0 -46
  111. data/lib/ruby-lokalise-api/rest/teams.rb +0 -14
  112. data/lib/ruby-lokalise-api/rest/translation_providers.rb +0 -25
  113. data/lib/ruby-lokalise-api/rest/translations.rb +0 -37
  114. data/lib/ruby-lokalise-api/rest/webhooks.rb +0 -67
  115. data/lib/ruby-lokalise-api/version.rb +0 -5
  116. data/lib/ruby-lokalise-api.rb +0 -101
  117. data/spec/lib/ruby-lokalise-api/connection_spec.rb +0 -89
  118. data/spec/lib/ruby-lokalise-api/custom_json_parser_spec.rb +0 -81
  119. data/spec/lib/ruby-lokalise-api/error_spec.rb +0 -41
  120. data/spec/lib/ruby-lokalise-api/rest/branches_spec.rb +0 -140
  121. data/spec/lib/ruby-lokalise-api/rest/comments_spec.rb +0 -118
  122. data/spec/lib/ruby-lokalise-api/rest/contributors_spec.rb +0 -132
  123. data/spec/lib/ruby-lokalise-api/rest/custom_translation_statuses_spec.rb +0 -131
  124. data/spec/lib/ruby-lokalise-api/rest/files_spec.rb +0 -66
  125. data/spec/lib/ruby-lokalise-api/rest/keys_spec.rb +0 -199
  126. data/spec/lib/ruby-lokalise-api/rest/languages_spec.rb +0 -134
  127. data/spec/lib/ruby-lokalise-api/rest/orders_spec.rb +0 -113
  128. data/spec/lib/ruby-lokalise-api/rest/payment_cards_spec.rb +0 -92
  129. data/spec/lib/ruby-lokalise-api/rest/projects_spec.rb +0 -137
  130. data/spec/lib/ruby-lokalise-api/rest/queued_processes_spec.rb +0 -57
  131. data/spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb +0 -127
  132. data/spec/lib/ruby-lokalise-api/rest/segments_spec.rb +0 -106
  133. data/spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb +0 -117
  134. data/spec/lib/ruby-lokalise-api/rest/tasks_spec.rb +0 -145
  135. data/spec/lib/ruby-lokalise-api/rest/team_user_billing_details_spec.rb +0 -48
  136. data/spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb +0 -278
  137. data/spec/lib/ruby-lokalise-api/rest/team_users_spec.rb +0 -95
  138. data/spec/lib/ruby-lokalise-api/rest/teams_spec.rb +0 -25
  139. data/spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb +0 -48
  140. data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +0 -118
  141. data/spec/lib/ruby-lokalise-api/rest/webhooks_spec.rb +0 -126
  142. data/spec/lib/ruby-lokalise-api_spec.rb +0 -54
  143. data/spec/spec_helper.rb +0 -22
  144. data/spec/support/test_client.rb +0 -11
  145. data/spec/support/vcr.rb +0 -10
@@ -1,81 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'oj'
4
-
5
- RSpec.describe Lokalise::JsonHandler do
6
- let(:loaded_json) do
7
- {'projects' => [{'project_id' => '547879415c01a0e6e0b855.29978928',
8
- 'name' => 'demo phoenix copy',
9
- 'description' => '',
10
- 'created_at' => '2018-11-30 20:43:18 (Etc/UTC)',
11
- 'created_by' => 20_181,
12
- 'created_by_email' => 'bodrovis@protonmail.com',
13
- 'team_id' => 176_692,
14
- 'statistics' =>
15
- {'progress' => 0,
16
- 'keys' => 1,
17
- 'team' => 1,
18
- 'base_words' => 0,
19
- 'qa_issues' => 1,
20
- 'languages' =>
21
- [{'language_id' => 640, 'language_iso' => 'en', 'progress' => 0, 'words_to_do' => 0},
22
- {'language_id' => 597, 'language_iso' => 'ru', 'progress' => 0, 'words_to_do' => 0},
23
- {'language_id' => 673, 'language_iso' => 'f_over', 'progress' => 0, 'words_to_do' => 0}]}}]}
24
- end
25
-
26
- let(:dumped_json) do
27
- '{":name":"rspec proj",":description":"demo project for rspec"}'
28
- end
29
-
30
- # rubocop:disable RSpec/LeakyConstantDeclaration, Lint/ConstantDefinitionInBlock
31
- before do
32
- module Lokalise
33
- module JsonHandler
34
- def custom_dump(obj)
35
- Oj.dump obj
36
- end
37
-
38
- def custom_load(obj)
39
- Oj.load obj
40
- end
41
- end
42
- end
43
- end
44
-
45
- after do
46
- module Lokalise
47
- module JsonHandler
48
- def custom_dump(obj)
49
- JSON.dump obj
50
- end
51
-
52
- def custom_load(obj)
53
- JSON.parse obj
54
- end
55
- end
56
- end
57
- end
58
- # rubocop:enable RSpec/LeakyConstantDeclaration, Lint/ConstantDefinitionInBlock
59
-
60
- it 'allows to customize #load' do
61
- allow(Oj).to receive(:load).and_return(loaded_json)
62
- expect(JSON).not_to receive(:parse)
63
- projects = VCR.use_cassette('all_projects_pagination') do
64
- test_client.projects limit: 1, page: 2
65
- end
66
-
67
- expect(projects.collection.count).to eq(1)
68
- expect(projects.total_results).to eq(5)
69
- expect(projects.collection.first.name).to eq('demo phoenix copy')
70
- end
71
-
72
- it 'allows to customize #dump' do
73
- allow(Oj).to receive(:dump).and_return(dumped_json)
74
- expect(JSON).not_to receive(:dump)
75
- project = VCR.use_cassette('new_project') do
76
- test_client.create_project name: 'rspec proj', description: 'demo project for rspec'
77
- end
78
-
79
- expect(project.name).to eq('rspec proj')
80
- end
81
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Lokalise::Error do
4
- include Lokalise::Request
5
-
6
- before { Lokalise.reset_client! }
7
-
8
- after { Lokalise.reset_client! }
9
-
10
- it 'raises a generic error when the code is unknown' do
11
- expect do
12
- VCR.use_cassette('error_unknown_code') do
13
- get 'projects', Lokalise.client('invalid')
14
- end
15
- end.to raise_error(described_class)
16
- end
17
-
18
- it 'handles an exception when the response does not contain an error key' do
19
- expect do
20
- VCR.use_cassette('error_no_error_key') do
21
- get 'projects', Lokalise.client('invalid')
22
- end
23
- end.to raise_error(Lokalise::Error::BadRequest)
24
- end
25
-
26
- it 'raises BadRequest when API token is invalid' do
27
- expect do
28
- VCR.use_cassette('error_invalid_token') do
29
- get 'projects', Lokalise.client('invalid')
30
- end
31
- end.to raise_error(Lokalise::Error::BadRequest)
32
- end
33
-
34
- it 'raises NotFound when the provided path cannot be found' do
35
- expect do
36
- VCR.use_cassette('error_not_found') do
37
- get 'invalid_path', test_client
38
- end
39
- end.to raise_error(Lokalise::Error::NotFound)
40
- end
41
- end
@@ -1,140 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Lokalise::Client do
4
- let(:project_id) { '803826145ba90b42d5d860.46800099' }
5
- let(:branch_id) { 41_302 }
6
-
7
- describe '#branches' do
8
- it 'returns all branches' do
9
- branches = VCR.use_cassette('all_branches') do
10
- test_client.branches project_id
11
- end.collection
12
-
13
- expect(branches.count).to eq(1)
14
- end
15
-
16
- it 'supports pagination' do
17
- branches = VCR.use_cassette('all_branches_pagination') do
18
- test_client.branches project_id, limit: 1, page: 1
19
- end
20
-
21
- expect(branches.collection.count).to eq(1)
22
- expect(branches.total_results).to eq(1)
23
- expect(branches.total_pages).to eq(1)
24
- expect(branches.results_per_page).to eq(1)
25
- expect(branches.current_page).to eq(1)
26
- expect(branches.collection.first.name).to eq('ruby-branch')
27
- end
28
- end
29
-
30
- specify '#branch' do
31
- branch = VCR.use_cassette('branch') do
32
- test_client.branch project_id, branch_id
33
- end
34
-
35
- expect(branch.branch_id).to eq(branch_id)
36
- expect(branch.name).to eq('ruby-branch')
37
- expect(branch.created_at).to eq('2019-10-30 14:24:41 (Etc/UTC)')
38
- expect(branch.created_at_timestamp).to eq(1_572_445_481)
39
- expect(branch.created_by).to eq(20_181)
40
- expect(branch.created_by_email).to eq('bodrovis@protonmail.com')
41
- end
42
-
43
- specify '#reload_data' do
44
- branch = VCR.use_cassette('branch') do
45
- test_client.branch project_id, branch_id
46
- end
47
-
48
- reloaded_branch = VCR.use_cassette('branch') do
49
- branch.reload_data
50
- end
51
-
52
- expect(reloaded_branch.branch_id).to eq(branch.branch_id)
53
- end
54
-
55
- specify '#create_branch' do
56
- branch = VCR.use_cassette('create_branch') do
57
- test_client.create_branch project_id, name: 'ruby-branch'
58
- end
59
-
60
- expect(branch.name).to eq('ruby-branch')
61
- end
62
-
63
- specify '#update_branch' do
64
- branch = VCR.use_cassette('update_branch') do
65
- test_client.update_branch project_id, branch_id, name: 'updated-ruby-branch'
66
- end
67
-
68
- expect(branch.name).to eq('updated-ruby-branch')
69
- end
70
-
71
- specify '#destroy_branch' do
72
- response = VCR.use_cassette('destroy_branch') do
73
- test_client.destroy_branch project_id, branch_id
74
- end
75
-
76
- expect(response['project_id']).to eq(project_id)
77
- expect(response['branch_deleted']).to eq(true)
78
- end
79
-
80
- specify '#merge_branch' do
81
- branch = VCR.use_cassette('create_branch_to_merge') do
82
- test_client.create_branch project_id, name: 'merge-me'
83
- end
84
-
85
- expect(branch.name).to eq('merge-me')
86
-
87
- branch_id = branch.branch_id
88
-
89
- response = VCR.use_cassette('merge_branch') do
90
- test_client.merge_branch project_id, branch_id, force_conflict_resolve_using: 'master'
91
- end
92
-
93
- expect(response['project_id']).to eq(project_id)
94
- expect(response['branch_merged']).to eq(true)
95
- expect(response['branch']['branch_id']).to eq(branch_id)
96
- expect(response['branch']['name']).to eq(branch.name)
97
- end
98
-
99
- context 'when branch methods are chained' do
100
- it 'supports merge' do
101
- branch = VCR.use_cassette('create_branch_to_merge2') do
102
- test_client.create_branch project_id, name: 'merge-me-plz'
103
- end
104
-
105
- expect(branch.name).to eq('merge-me-plz')
106
-
107
- branch_id = branch.branch_id
108
-
109
- response = VCR.use_cassette('merge_branch_chained') do
110
- branch.merge force_conflict_resolve_using: 'master'
111
- end
112
-
113
- expect(response['project_id']).to eq(project_id)
114
- expect(response['branch_merged']).to eq(true)
115
- expect(response['branch']['branch_id']).to eq(branch_id)
116
- expect(response['branch']['name']).to eq(branch.name)
117
- end
118
-
119
- it 'supports update and destroy' do
120
- branch = VCR.use_cassette('create_another_branch') do
121
- test_client.create_branch project_id, name: 'ruby-second-branch'
122
- end
123
-
124
- expect(branch.name).to eq('ruby-second-branch')
125
-
126
- branch = VCR.use_cassette('update_another_branch') do
127
- branch.update name: 'updated-ruby-second-branch'
128
- end
129
-
130
- expect(branch.name).to eq('updated-ruby-second-branch')
131
-
132
- response = VCR.use_cassette('destroy_another_branch') do
133
- branch.destroy
134
- end
135
-
136
- expect(response['project_id']).to eq(project_id)
137
- expect(response['branch_deleted']).to eq(true)
138
- end
139
- end
140
- end
@@ -1,118 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Lokalise::Client do
4
- let(:project_id) { '803826145ba90b42d5d860.46800099' }
5
- let(:key_id) { 15_305_182 }
6
- let(:another_key_id) { 15_519_786 }
7
-
8
- describe '#comments' do
9
- it 'returns all comments' do
10
- comments = VCR.use_cassette('all_comments') do
11
- test_client.comments project_id, key_id
12
- end.collection
13
-
14
- expect(comments.count).to eq(3)
15
- end
16
-
17
- it 'supports pagination' do
18
- comments = VCR.use_cassette('all_comments_pagination') do
19
- test_client.comments project_id, key_id, limit: 1, page: 2
20
- end
21
-
22
- expect(comments.collection.count).to eq(1)
23
- expect(comments.total_results).to eq(3)
24
- expect(comments.total_pages).to eq(3)
25
- expect(comments.results_per_page).to eq(1)
26
- expect(comments.current_page).to eq(2)
27
- expect(comments.collection.first.comment).to eq('demo comment')
28
-
29
- expect(comments.next_page?).to eq(true)
30
- expect(comments.last_page?).to eq(false)
31
- expect(comments.prev_page?).to eq(true)
32
- expect(comments.first_page?).to eq(false)
33
-
34
- expect(comments.client).to be_an_instance_of(described_class)
35
- end
36
- end
37
-
38
- specify '#comment' do
39
- comment = VCR.use_cassette('comment') do
40
- test_client.comment project_id, another_key_id, '800746'
41
- end
42
-
43
- expect(comment.comment).to eq('rspec comment')
44
- expect(comment.comment_id).to eq(800_746)
45
- expect(comment.key_id).to eq(another_key_id)
46
- expect(comment.added_by).to eq(20_181)
47
- expect(comment.added_by_email).to eq('bodrovis@protonmail.com')
48
- expect(comment.added_at).to eq('2018-12-09 18:41:44 (Etc/UTC)')
49
- expect(comment.added_at_timestamp).to eq(1_544_380_904)
50
- end
51
-
52
- specify '#reload_data' do
53
- comment = VCR.use_cassette('comment') do
54
- test_client.comment project_id, another_key_id, '800746'
55
- end
56
-
57
- reloaded_comment = VCR.use_cassette('comment') do
58
- comment.reload_data
59
- end
60
-
61
- expect(reloaded_comment.key_id).to eq(comment.key_id)
62
- end
63
-
64
- specify '#create_comments' do
65
- comments = VCR.use_cassette('create_comments') do
66
- test_client.create_comments project_id, key_id, [
67
- {comment: 'demo comment'},
68
- {comment: 'from rspec'}
69
- ]
70
- end
71
-
72
- first_comment = comments.collection.first
73
- second_comment = comments.collection[1]
74
-
75
- expect(comments.project_id).to eq(project_id)
76
- expect(first_comment.comment).to eq('demo comment')
77
- expect(first_comment.key_id).to eq(key_id)
78
- expect(second_comment.comment).to eq('from rspec')
79
- expect(second_comment.key_id).to eq(key_id)
80
- end
81
-
82
- specify '#project_comments' do
83
- comments = VCR.use_cassette('project_comments') do
84
- test_client.project_comments project_id
85
- end
86
-
87
- comment = comments.collection.first
88
-
89
- expect(comments.total_results).to eq(3)
90
- expect(comment.comment).to eq('test')
91
- expect(comment.comment_id).to eq(767_938)
92
- end
93
-
94
- specify '#destroy_comment' do
95
- response = VCR.use_cassette('delete_comment') do
96
- test_client.destroy_comment project_id, key_id, 767_938
97
- end
98
- expect(response['project_id']).to eq(project_id)
99
- expect(response['comment_deleted']).to eq(true)
100
- end
101
-
102
- context 'when comment methods are chained' do
103
- it 'supports destroy' do
104
- comment = VCR.use_cassette('create_another_comment') do
105
- test_client.create_comments project_id, another_key_id, comment: 'chained comment'
106
- end.collection.first
107
-
108
- expect(comment.comment).to eq('chained comment')
109
-
110
- delete_response = VCR.use_cassette('delete_comment_chained') do
111
- comment.destroy
112
- end
113
-
114
- expect(delete_response['project_id']).to eq(project_id)
115
- expect(delete_response['comment_deleted']).to eq(true)
116
- end
117
- end
118
- end
@@ -1,132 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Lokalise::Client do
4
- let(:project_id) { '803826145ba90b42d5d860.46800099' }
5
- let(:contributor_id) { 25_953 }
6
-
7
- describe '#contributors' do
8
- it 'returns all contributors' do
9
- contributors = VCR.use_cassette('all_contributors') do
10
- test_client.contributors project_id
11
- end.collection
12
-
13
- expect(contributors.count).to eq(2)
14
- expect(contributors.first.fullname).to eq('John Doe')
15
- end
16
-
17
- it 'supports pagination' do
18
- contributors = VCR.use_cassette('all_contributors_pagination') do
19
- test_client.contributors project_id, limit: 1, page: 2
20
- end
21
-
22
- expect(contributors.collection.count).to eq(1)
23
- expect(contributors.total_results).to eq(2)
24
- expect(contributors.total_pages).to eq(2)
25
- expect(contributors.results_per_page).to eq(1)
26
- expect(contributors.current_page).to eq(2)
27
-
28
- expect(contributors.next_page?).to eq(false)
29
- expect(contributors.last_page?).to eq(true)
30
- expect(contributors.prev_page?).to eq(true)
31
- expect(contributors.first_page?).to eq(false)
32
- end
33
- end
34
-
35
- specify '#contributor' do
36
- contributor = VCR.use_cassette('contributor') do
37
- test_client.contributor project_id, '20181'
38
- end
39
-
40
- expect(contributor.user_id).to eq(20_181)
41
- expect(contributor.email).to eq('bodrovis@protonmail.com')
42
- expect(contributor.fullname).to eq('Ilya B')
43
- expect(contributor.created_at).to eq('2018-08-21 15:35:25 (Etc/UTC)')
44
- expect(contributor.is_admin).to eq(true)
45
- expect(contributor.is_reviewer).to eq(true)
46
- expect(contributor.languages.first['lang_id']).to eq(803)
47
- expect(contributor.admin_rights.first).to eq('upload')
48
- expect(contributor.created_at_timestamp).to eq(1_534_865_725)
49
- end
50
-
51
- specify '#reload_data' do
52
- contributor = VCR.use_cassette('contributor') do
53
- test_client.contributor project_id, '20181'
54
- end
55
-
56
- reloaded_contributor = VCR.use_cassette('contributor') do
57
- contributor.reload_data
58
- end
59
-
60
- expect(reloaded_contributor.user_id).to eq(contributor.user_id)
61
- end
62
-
63
- specify '#create_contributors' do
64
- contributor = VCR.use_cassette('create_contributors') do
65
- test_client.create_contributors project_id,
66
- email: 'rspec@test.com',
67
- fullname: 'Rspec test',
68
- languages: [{
69
- lang_iso: 'en'
70
- },
71
- {
72
- lang_iso: 'ru'
73
- }]
74
- end.collection.first
75
-
76
- expect(contributor.fullname).to eq('Rspec test')
77
- expect(contributor.email).to eq('rspec@test.com')
78
- expect(contributor.languages[1]['lang_iso']).to eq('ru')
79
- end
80
-
81
- specify '#update_contributor' do
82
- contributor = VCR.use_cassette('update_contributor') do
83
- test_client.update_contributor project_id, contributor_id,
84
- languages: [{lang_iso: 'en'}]
85
- end
86
-
87
- expect(contributor.user_id).to eq(contributor_id)
88
- expect(contributor.languages[0]['lang_iso']).to eq('en')
89
- expect(contributor.languages.length).to eq(1)
90
- end
91
-
92
- specify '#destroy_contributor' do
93
- response = VCR.use_cassette('delete_contributor') do
94
- test_client.destroy_contributor project_id, contributor_id
95
- end
96
- expect(response['project_id']).to eq(project_id)
97
- expect(response['contributor_deleted']).to eq(true)
98
- end
99
-
100
- context 'when contributor methods are chained' do
101
- it 'supports update and destroy' do
102
- contributor = VCR.use_cassette('create_another_contributor') do
103
- test_client.create_contributors project_id,
104
- email: 'demo@test.com',
105
- fullname: 'chained',
106
- languages: [{lang_iso: 'en'}]
107
- end.collection.first
108
-
109
- expect(contributor.client.token).to eq(test_client.token)
110
- expect(contributor.fullname).to eq('chained')
111
-
112
- id = contributor.user_id
113
- path = contributor.path
114
-
115
- updated_contributor = VCR.use_cassette('update_contributor_chained') do
116
- contributor.update fullname: 'updated!'
117
- end
118
-
119
- expect(updated_contributor.client.token).to eq(test_client.token)
120
- expect(updated_contributor.fullname).to eq('updated!')
121
- expect(updated_contributor.user_id).to eq(id)
122
- expect(updated_contributor.path).to eq(path)
123
-
124
- delete_response = VCR.use_cassette('delete_contributor_chained') do
125
- updated_contributor.destroy
126
- end
127
-
128
- expect(delete_response['project_id']).to eq(project_id)
129
- expect(delete_response['contributor_deleted']).to eq(true)
130
- end
131
- end
132
- end
@@ -1,131 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Lokalise::Client do
4
- let(:project_id) { '803826145ba90b42d5d860.46800099' }
5
- let(:status_id) { 128 }
6
- let(:new_status_id) { 126 }
7
-
8
- describe '#translation_statuses' do
9
- it 'returns all statuses' do
10
- statuses = VCR.use_cassette('all_translation_statuses') do
11
- test_client.translation_statuses project_id
12
- end.collection
13
-
14
- expect(statuses.count).to eq(3)
15
- expect(statuses.first.status_id).to eq(status_id)
16
- end
17
-
18
- it 'supports pagination' do
19
- statuses = VCR.use_cassette('all_translation_statuses_pagination') do
20
- test_client.translation_statuses project_id, limit: 1, page: 2
21
- end
22
-
23
- expect(statuses.collection.count).to eq(1)
24
- expect(statuses.total_results).to eq(3)
25
- expect(statuses.total_pages).to eq(3)
26
- expect(statuses.results_per_page).to eq(1)
27
- expect(statuses.current_page).to eq(2)
28
-
29
- expect(statuses.next_page?).to eq(true)
30
- expect(statuses.last_page?).to eq(false)
31
- expect(statuses.prev_page?).to eq(true)
32
- expect(statuses.first_page?).to eq(false)
33
- end
34
- end
35
-
36
- specify '#translation_status' do
37
- status = VCR.use_cassette('translation_status') do
38
- test_client.translation_status project_id, status_id
39
- end
40
-
41
- expect(status.status_id).to eq(status_id)
42
- expect(status.title).to eq('random')
43
- expect(status.color).to eq('#0079bf')
44
- end
45
-
46
- specify '#reload_data' do
47
- status = VCR.use_cassette('translation_status') do
48
- test_client.translation_status project_id, status_id
49
- end
50
-
51
- reloaded_status = VCR.use_cassette('translation_status') do
52
- status.reload_data
53
- end
54
-
55
- expect(reloaded_status.status_id).to eq(status.status_id)
56
- end
57
-
58
- specify '#create_translation_status' do
59
- title = 'Reviewed by doctors'
60
- color = '#f2d600'
61
- status = VCR.use_cassette('create_translation_status') do
62
- test_client.create_translation_status project_id,
63
- title: title,
64
- color: color
65
- end
66
-
67
- expect(status.title).to eq(title)
68
- expect(status.color).to eq(color)
69
- end
70
-
71
- specify '#update_translation_status' do
72
- title = 'Reviewed by rubyists'
73
- color = '#c377e0'
74
- status = VCR.use_cassette('update_translation_status') do
75
- test_client.update_translation_status project_id, new_status_id,
76
- title: title,
77
- color: color
78
- end
79
-
80
- expect(status.title).to eq(title)
81
- expect(status.color).to eq(color)
82
- end
83
-
84
- specify '#destroy_translation_status' do
85
- response = VCR.use_cassette('destroy_translation_status') do
86
- test_client.destroy_translation_status project_id, new_status_id
87
- end
88
-
89
- expect(response['project_id']).to eq(project_id)
90
- expect(response['custom_translation_status_deleted']).to eq(true)
91
- end
92
-
93
- specify '#translation_status_colors' do
94
- response = VCR.use_cassette('translation_status_colors') do
95
- test_client.translation_status_colors project_id
96
- end
97
-
98
- expect(response).to be_an(Array)
99
- expect(response).to include('#f2d600')
100
- end
101
-
102
- context 'when translation status methods are chained' do
103
- it 'supports update and destroy' do
104
- status = VCR.use_cassette('create_another_translation_status') do
105
- test_client.create_translation_status project_id,
106
- title: 'rspec',
107
- color: '#c377e0'
108
- end
109
-
110
- expect(status.title).to eq('rspec')
111
- expect(status.color).to eq('#c377e0')
112
-
113
- status = VCR.use_cassette('update_another_translation_status') do
114
- status.update(
115
- title: 'updated rspec',
116
- color: '#0079bf'
117
- )
118
- end
119
-
120
- expect(status.title).to eq('updated rspec')
121
- expect(status.color).to eq('#0079bf')
122
-
123
- response = VCR.use_cassette('delete_another_translation_status') do
124
- status.destroy
125
- end
126
-
127
- expect(response['project_id']).to eq(project_id)
128
- expect(response['custom_translation_status_deleted']).to eq(true)
129
- end
130
- end
131
- end