ruby-lokalise-api 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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