ruby-lokalise-api 1.1.0 → 2.0.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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -2
  3. data/README.md +172 -10
  4. data/lib/ruby-lokalise-api.rb +2 -0
  5. data/lib/ruby-lokalise-api/client.rb +18 -0
  6. data/lib/ruby-lokalise-api/collections/base.rb +11 -10
  7. data/lib/ruby-lokalise-api/collections/contributor.rb +1 -3
  8. data/lib/ruby-lokalise-api/collections/file.rb +1 -3
  9. data/lib/ruby-lokalise-api/collections/key.rb +8 -3
  10. data/lib/ruby-lokalise-api/collections/key_comment.rb +2 -3
  11. data/lib/ruby-lokalise-api/collections/project.rb +1 -3
  12. data/lib/ruby-lokalise-api/collections/project_comment.rb +1 -3
  13. data/lib/ruby-lokalise-api/collections/project_language.rb +1 -3
  14. data/lib/ruby-lokalise-api/collections/screenshot.rb +1 -3
  15. data/lib/ruby-lokalise-api/collections/snapshot.rb +1 -3
  16. data/lib/ruby-lokalise-api/collections/system_language.rb +1 -3
  17. data/lib/ruby-lokalise-api/collections/task.rb +1 -3
  18. data/lib/ruby-lokalise-api/collections/team.rb +1 -3
  19. data/lib/ruby-lokalise-api/collections/team_user.rb +1 -3
  20. data/lib/ruby-lokalise-api/collections/translation.rb +1 -3
  21. data/lib/ruby-lokalise-api/error.rb +2 -0
  22. data/lib/ruby-lokalise-api/request.rb +11 -3
  23. data/lib/ruby-lokalise-api/resources/base.rb +51 -41
  24. data/lib/ruby-lokalise-api/resources/contributor.rb +6 -4
  25. data/lib/ruby-lokalise-api/resources/file.rb +7 -12
  26. data/lib/ruby-lokalise-api/resources/key.rb +5 -4
  27. data/lib/ruby-lokalise-api/resources/key_comment.rb +6 -4
  28. data/lib/ruby-lokalise-api/resources/project.rb +10 -7
  29. data/lib/ruby-lokalise-api/resources/project_language.rb +5 -4
  30. data/lib/ruby-lokalise-api/resources/screenshot.rb +5 -4
  31. data/lib/ruby-lokalise-api/resources/snapshot.rb +10 -5
  32. data/lib/ruby-lokalise-api/resources/task.rb +5 -4
  33. data/lib/ruby-lokalise-api/resources/team_user.rb +6 -4
  34. data/lib/ruby-lokalise-api/resources/translation.rb +5 -4
  35. data/lib/ruby-lokalise-api/rest/comments.rb +6 -6
  36. data/lib/ruby-lokalise-api/rest/contributors.rb +6 -6
  37. data/lib/ruby-lokalise-api/rest/files.rb +3 -3
  38. data/lib/ruby-lokalise-api/rest/keys.rb +9 -9
  39. data/lib/ruby-lokalise-api/rest/languages.rb +7 -7
  40. data/lib/ruby-lokalise-api/rest/projects.rb +7 -7
  41. data/lib/ruby-lokalise-api/rest/screenshots.rb +6 -6
  42. data/lib/ruby-lokalise-api/rest/snapshots.rb +5 -5
  43. data/lib/ruby-lokalise-api/rest/tasks.rb +6 -6
  44. data/lib/ruby-lokalise-api/rest/team_users.rb +5 -5
  45. data/lib/ruby-lokalise-api/rest/teams.rb +1 -1
  46. data/lib/ruby-lokalise-api/rest/translations.rb +3 -3
  47. data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +19 -5
  48. data/lib/ruby-lokalise-api/utils/endpoint_helpers.rb +12 -0
  49. data/lib/ruby-lokalise-api/utils/string_utils.rb +4 -0
  50. data/lib/ruby-lokalise-api/version.rb +1 -1
  51. data/ruby-lokalise-api.gemspec +1 -0
  52. data/spec/lib/ruby-lokalise-api/rest/comments_spec.rb +22 -5
  53. data/spec/lib/ruby-lokalise-api/rest/contributors_spec.rb +35 -2
  54. data/spec/lib/ruby-lokalise-api/rest/keys_spec.rb +55 -4
  55. data/spec/lib/ruby-lokalise-api/rest/languages_spec.rb +31 -2
  56. data/spec/lib/ruby-lokalise-api/rest/projects_spec.rb +36 -2
  57. data/spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb +45 -8
  58. data/spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb +25 -2
  59. data/spec/lib/ruby-lokalise-api/rest/tasks_spec.rb +38 -2
  60. data/spec/lib/ruby-lokalise-api/rest/team_users_spec.rb +25 -2
  61. data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +17 -3
  62. metadata +17 -2
@@ -81,11 +81,40 @@ RSpec.describe Lokalise::Client do
81
81
  expect(language.plural_forms).to eq(%w[one])
82
82
  end
83
83
 
84
- specify '#delete_language' do
84
+ specify '#destroy_language' do
85
85
  response = VCR.use_cassette('delete_language') do
86
- test_client.delete_language project_id, new_language_id
86
+ test_client.destroy_language project_id, new_language_id
87
87
  end
88
88
  expect(response['project_id']).to eq(project_id)
89
89
  expect(response['language_deleted']).to eq(true)
90
90
  end
91
+
92
+ context 'project language chained methods' do
93
+ it 'should support update and destroy' do
94
+ language = VCR.use_cassette('create_another_language') do
95
+ test_client.create_languages project_id, lang_iso: 'ab', custom_name: 'chained lang'
96
+ end.collection.first
97
+
98
+ expect(language.client).to eq(test_client)
99
+ expect(language.lang_name).to eq('chained lang')
100
+
101
+ path = language.path
102
+
103
+ updated_language = VCR.use_cassette('update_language_chained') do
104
+ language.update lang_name: 'updated!'
105
+ end
106
+
107
+ expect(updated_language.client).to eq(test_client)
108
+ expect(updated_language.lang_name).to eq('updated!')
109
+ expect(updated_language.lang_id).to eq(language.lang_id)
110
+ expect(updated_language.path).to eq(path)
111
+
112
+ delete_response = VCR.use_cassette('delete_language_chained') do
113
+ updated_language.destroy
114
+ end
115
+
116
+ expect(delete_response['project_id']).to eq(project_id)
117
+ expect(delete_response['language_deleted']).to eq(true)
118
+ end
119
+ end
91
120
  end
@@ -74,11 +74,45 @@ RSpec.describe Lokalise::Client do
74
74
  expect(response['keys_deleted']).to eq(true)
75
75
  end
76
76
 
77
- specify '#delete_project' do
77
+ specify '#destroy_project' do
78
78
  response = VCR.use_cassette('delete_project') do
79
- test_client.delete_project new_project_id
79
+ test_client.destroy_project new_project_id
80
80
  end
81
81
  expect(response['project_id']).to eq(new_project_id)
82
82
  expect(response['project_deleted']).to eq(true)
83
83
  end
84
+
85
+ context 'project chained methods' do
86
+ it 'should support update, empty, and destroy' do
87
+ project = VCR.use_cassette('create_another_project') do
88
+ test_client.create_project name: 'chained proj'
89
+ end
90
+
91
+ expect(project.name).to eq('chained proj')
92
+
93
+ path = project.path
94
+
95
+ updated_project = VCR.use_cassette('update_project_chained') do
96
+ project.update name: 'updated!'
97
+ end
98
+
99
+ expect(updated_project.client).to eq(test_client)
100
+ expect(updated_project.name).to eq('updated!')
101
+ expect(updated_project.path).to eq(path)
102
+
103
+ empty_response = VCR.use_cassette('empty_project_chained') do
104
+ updated_project.empty
105
+ end
106
+
107
+ expect(empty_response['project_id']).to eq(updated_project.project_id)
108
+ expect(empty_response['keys_deleted']).to eq(true)
109
+
110
+ delete_response = VCR.use_cassette('delete_project_chained') do
111
+ updated_project.destroy
112
+ end
113
+
114
+ expect(delete_response['project_id']).to eq(updated_project.project_id)
115
+ expect(delete_response['project_deleted']).to eq(true)
116
+ end
117
+ end
84
118
  end
@@ -40,18 +40,13 @@ RSpec.describe Lokalise::Client do
40
40
  end
41
41
 
42
42
  specify '#create_screenshots' do
43
- file = File.open File.expand_path('spec/fixtures/screenshot_base64.txt')
44
- begin
43
+ screenshot_from_file do |file|
45
44
  screenshot = VCR.use_cassette('create_screenshots') do
46
45
  test_client.create_screenshots project_id, data: file.read, title: 'rspec screen'
47
46
  end.collection.first
48
47
 
49
48
  expect(screenshot.title).to eq('rspec screen')
50
49
  expect(screenshot.url).to include('amazonaws.com')
51
- rescue StandardError => e
52
- puts e
53
- ensure
54
- file.close
55
50
  end
56
51
  end
57
52
 
@@ -66,11 +61,53 @@ RSpec.describe Lokalise::Client do
66
61
  expect(screenshot.description).to eq('demo desc')
67
62
  end
68
63
 
69
- specify '#delete_screenshot' do
64
+ specify '#destroy_screenshot' do
70
65
  response = VCR.use_cassette('delete_screenshot') do
71
- test_client.delete_screenshot project_id, screenshot_id
66
+ test_client.destroy_screenshot project_id, screenshot_id
72
67
  end
73
68
  expect(response['project_id']).to eq(project_id)
74
69
  expect(response['screenshot_deleted']).to eq(true)
75
70
  end
71
+
72
+ context 'screenshot chained methods' do
73
+ it 'should support update and destroy' do
74
+ screenshot = screenshot_from_file do |file|
75
+ VCR.use_cassette('create_another_screenshot') do
76
+ test_client.create_screenshots project_id, data: file.read, title: 'chained screen'
77
+ end.collection.first
78
+ end
79
+
80
+ expect(screenshot.client).to eq(test_client)
81
+ expect(screenshot.title).to eq('chained screen')
82
+
83
+ path = screenshot.path
84
+
85
+ updated_screenshot = VCR.use_cassette('update_screenshot_chained') do
86
+ screenshot.update title: 'updated!'
87
+ end
88
+
89
+ expect(updated_screenshot.client).to eq(test_client)
90
+ expect(updated_screenshot.title).to eq('updated!')
91
+ expect(updated_screenshot.screenshot_id).to eq(screenshot.screenshot_id)
92
+ expect(updated_screenshot.path).to eq(path)
93
+
94
+ delete_response = VCR.use_cassette('delete_screenshot_chained') do
95
+ updated_screenshot.destroy
96
+ end
97
+
98
+ expect(delete_response['project_id']).to eq(project_id)
99
+ expect(delete_response['screenshot_deleted']).to eq(true)
100
+ end
101
+ end
102
+ end
103
+
104
+ def screenshot_from_file
105
+ file = File.open File.expand_path('spec/fixtures/screenshot_base64.txt')
106
+ begin
107
+ yield file
108
+ rescue StandardError => e
109
+ puts e
110
+ ensure
111
+ file.close
112
+ end
76
113
  end
@@ -55,12 +55,35 @@ RSpec.describe Lokalise::Client do
55
55
  expect(project.project_id).not_to eq(project_id)
56
56
  end
57
57
 
58
- specify '#delete_snapshot' do
58
+ specify '#destroy_snapshot' do
59
59
  response = VCR.use_cassette('delete_snapshot') do
60
- test_client.delete_snapshot project_id, snapshot_id
60
+ test_client.destroy_snapshot project_id, snapshot_id
61
61
  end
62
62
 
63
63
  expect(response['project_id']).to eq(project_id)
64
64
  expect(response['snapshot_deleted']).to eq(true)
65
65
  end
66
+
67
+ context 'snapshot chained methods' do
68
+ it 'should support destroy and restore' do
69
+ snapshot = VCR.use_cassette('create_another_snapshot') do
70
+ test_client.create_snapshot project_id, title: 'chained'
71
+ end
72
+
73
+ expect(snapshot.title).to eq('chained')
74
+
75
+ restored_project = VCR.use_cassette('restore_snapshot_chained') do
76
+ snapshot.restore
77
+ end
78
+
79
+ expect(restored_project.name).to eq('demo phoenix copy')
80
+
81
+ delete_response = VCR.use_cassette('delete_snapshot_chained') do
82
+ snapshot.destroy
83
+ end
84
+
85
+ expect(delete_response['project_id']).to eq(project_id)
86
+ expect(delete_response['snapshot_deleted']).to eq(true)
87
+ end
88
+ end
66
89
  end
@@ -79,11 +79,47 @@ RSpec.describe Lokalise::Client do
79
79
  expect(task.auto_close_task).to eq(true)
80
80
  end
81
81
 
82
- specify '#delete_task' do
82
+ specify '#destroy_task' do
83
83
  response = VCR.use_cassette('delete_task') do
84
- test_client.delete_task project_id, task_id
84
+ test_client.destroy_task project_id, task_id
85
85
  end
86
86
  expect(response['project_id']).to eq(project_id)
87
87
  expect(response['task_deleted']).to eq(true)
88
88
  end
89
+
90
+ context 'task chained methods' do
91
+ it 'should support update and destroy' do
92
+ task = VCR.use_cassette('create_another_task') do
93
+ test_client.create_task project_id, title: 'chained',
94
+ keys: [key_id],
95
+ languages: [
96
+ {
97
+ language_iso: 'ru',
98
+ users: ['20181']
99
+ }
100
+ ]
101
+ end
102
+
103
+ expect(task.client).to eq(test_client)
104
+ expect(task.title).to eq('chained')
105
+
106
+ path = task.path
107
+
108
+ updated_task = VCR.use_cassette('update_task_chained') do
109
+ task.update title: 'updated!'
110
+ end
111
+
112
+ expect(updated_task.client).to eq(test_client)
113
+ expect(updated_task.title).to eq('updated!')
114
+ expect(updated_task.task_id).to eq(task.task_id)
115
+ expect(updated_task.path).to eq(path)
116
+
117
+ delete_response = VCR.use_cassette('delete_task_chained') do
118
+ updated_task.destroy
119
+ end
120
+
121
+ expect(delete_response['project_id']).to eq(project_id)
122
+ expect(delete_response['task_deleted']).to eq(true)
123
+ end
124
+ end
89
125
  end
@@ -1,6 +1,7 @@
1
1
  RSpec.describe Lokalise::Client do
2
2
  let(:team_id) { 176_692 }
3
3
  let(:team_user_id) { 25_953 }
4
+ let(:another_user_id) { 26_265 }
4
5
 
5
6
  describe '#team_users' do
6
7
  it 'should return all team_users' do
@@ -46,11 +47,33 @@ RSpec.describe Lokalise::Client do
46
47
  expect(team_user.role).to eq('admin')
47
48
  end
48
49
 
49
- specify '#delete_team_user' do
50
+ specify '#destroy_team_user' do
50
51
  response = VCR.use_cassette('delete_team_user') do
51
- test_client.delete_team_user team_id, team_user_id
52
+ test_client.destroy_team_user team_id, team_user_id
52
53
  end
53
54
  expect(response['team_id']).to eq(team_id)
54
55
  expect(response['team_user_deleted']).to eq(true)
55
56
  end
57
+
58
+ context 'team user chained methods' do
59
+ it 'should support update and destroy' do
60
+ team_user = VCR.use_cassette('another_team_user') do
61
+ test_client.team_user team_id, another_user_id
62
+ end
63
+
64
+ updated_team_user = VCR.use_cassette('update_team_user_chained') do
65
+ team_user.update role: 'admin'
66
+ end
67
+
68
+ expect(updated_team_user.client).to eq(test_client)
69
+ expect(updated_team_user.role).to eq('admin')
70
+
71
+ delete_response = VCR.use_cassette('delete_team_user_chained') do
72
+ updated_team_user.destroy
73
+ end
74
+
75
+ expect(delete_response['team_id']).to eq(team_id)
76
+ expect(delete_response['team_user_deleted']).to eq(true)
77
+ end
78
+ end
56
79
  end
@@ -1,6 +1,7 @@
1
1
  RSpec.describe Lokalise::Client do
2
2
  let(:project_id) { '803826145ba90b42d5d860.46800099' }
3
3
  let(:translation_id) { 80_015_147 }
4
+ let(:another_translation_id) { 82_070_312 }
4
5
 
5
6
  describe '#translations' do
6
7
  it 'should return all translations' do
@@ -23,7 +24,6 @@ RSpec.describe Lokalise::Client do
23
24
  expect(translations.current_page).to eq(2)
24
25
  expect(translations.request_params[:page]).to eq(2)
25
26
  expect(translations.request_params[:disable_references]).to eq(0)
26
- expect(translations.ids).to eq([project_id])
27
27
 
28
28
  next_page_trans = VCR.use_cassette('translations_next_page') do
29
29
  translations.next_page
@@ -35,7 +35,6 @@ RSpec.describe Lokalise::Client do
35
35
  expect(next_page_trans.request_params[:disable_references]).to eq(0)
36
36
  expect(next_page_trans.total_results).to eq(9)
37
37
  expect(next_page_trans.current_page).to eq(3)
38
- expect(next_page_trans.ids).to eq([project_id])
39
38
  expect(next_page_trans.next_page?).to eq(false)
40
39
  expect(next_page_trans.prev_page?).to eq(true)
41
40
 
@@ -51,7 +50,6 @@ RSpec.describe Lokalise::Client do
51
50
  expect(prev_page_trans.current_page).to eq(1)
52
51
  expect(prev_page_trans.next_page?).to eq(true)
53
52
  expect(prev_page_trans.prev_page?).to eq(false)
54
- expect(prev_page_trans.ids).to eq([project_id])
55
53
  end
56
54
  end
57
55
 
@@ -82,4 +80,20 @@ RSpec.describe Lokalise::Client do
82
80
  expect(translation.translation).to eq('rspec trans')
83
81
  expect(translation.is_reviewed).to eq(true)
84
82
  end
83
+
84
+ context 'translation chained methods' do
85
+ it 'should support update' do
86
+ translation = VCR.use_cassette('another_translation') do
87
+ test_client.translation project_id, another_translation_id
88
+ end
89
+
90
+ updated_translation = VCR.use_cassette('update_translation_chained') do
91
+ translation.update translation: 'chained updated'
92
+ end
93
+
94
+ expect(updated_translation.client).to eq(test_client)
95
+ expect(updated_translation.translation).to eq('chained updated')
96
+ expect(updated_translation.translation_id).to eq(translation.translation_id)
97
+ end
98
+ end
85
99
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lokalise-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilya Bodrov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-11 00:00:00.000000000 Z
11
+ date: 2018-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: addressable
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.5'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: faraday
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -189,6 +203,7 @@ files:
189
203
  - lib/ruby-lokalise-api/rest/teams.rb
190
204
  - lib/ruby-lokalise-api/rest/translations.rb
191
205
  - lib/ruby-lokalise-api/utils/attribute_helpers.rb
206
+ - lib/ruby-lokalise-api/utils/endpoint_helpers.rb
192
207
  - lib/ruby-lokalise-api/utils/string_utils.rb
193
208
  - lib/ruby-lokalise-api/version.rb
194
209
  - ruby-lokalise-api.gemspec