ruby-lokalise-api 2.8.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODE_OF_CONDUCT.md +1 -1
  3. data/.github/CONTRIBUTING.md +2 -2
  4. data/CHANGELOG.md +46 -0
  5. data/Gemfile +2 -0
  6. data/README.md +293 -178
  7. data/Rakefile +6 -1
  8. data/lib/ruby-lokalise-api.rb +4 -0
  9. data/lib/ruby-lokalise-api/client.rb +18 -4
  10. data/lib/ruby-lokalise-api/collections/base.rb +6 -2
  11. data/lib/ruby-lokalise-api/collections/branch.rb +3 -1
  12. data/lib/ruby-lokalise-api/collections/contributor.rb +2 -0
  13. data/lib/ruby-lokalise-api/collections/custom_translation_status.rb +3 -1
  14. data/lib/ruby-lokalise-api/collections/file.rb +2 -0
  15. data/lib/ruby-lokalise-api/collections/key.rb +2 -0
  16. data/lib/ruby-lokalise-api/collections/key_comment.rb +2 -0
  17. data/lib/ruby-lokalise-api/collections/order.rb +2 -0
  18. data/lib/ruby-lokalise-api/collections/payment_card.rb +2 -0
  19. data/lib/ruby-lokalise-api/collections/project.rb +2 -0
  20. data/lib/ruby-lokalise-api/collections/project_comment.rb +2 -0
  21. data/lib/ruby-lokalise-api/collections/project_language.rb +2 -0
  22. data/lib/ruby-lokalise-api/collections/queued_process.rb +15 -0
  23. data/lib/ruby-lokalise-api/collections/screenshot.rb +2 -0
  24. data/lib/ruby-lokalise-api/collections/snapshot.rb +2 -0
  25. data/lib/ruby-lokalise-api/collections/system_language.rb +2 -0
  26. data/lib/ruby-lokalise-api/collections/task.rb +2 -0
  27. data/lib/ruby-lokalise-api/collections/team.rb +2 -0
  28. data/lib/ruby-lokalise-api/collections/team_user.rb +2 -0
  29. data/lib/ruby-lokalise-api/collections/team_user_group.rb +3 -1
  30. data/lib/ruby-lokalise-api/collections/translation.rb +2 -0
  31. data/lib/ruby-lokalise-api/collections/translation_provider.rb +2 -0
  32. data/lib/ruby-lokalise-api/collections/webhook.rb +2 -0
  33. data/lib/ruby-lokalise-api/connection.rb +3 -1
  34. data/lib/ruby-lokalise-api/data/attributes.json +28 -13
  35. data/lib/ruby-lokalise-api/error.rb +2 -0
  36. data/lib/ruby-lokalise-api/json_handler.rb +4 -0
  37. data/lib/ruby-lokalise-api/request.rb +10 -1
  38. data/lib/ruby-lokalise-api/resources/base.rb +53 -21
  39. data/lib/ruby-lokalise-api/resources/branch.rb +3 -1
  40. data/lib/ruby-lokalise-api/resources/contributor.rb +4 -2
  41. data/lib/ruby-lokalise-api/resources/custom_translation_status.rb +4 -2
  42. data/lib/ruby-lokalise-api/resources/file.rb +5 -1
  43. data/lib/ruby-lokalise-api/resources/key.rb +3 -1
  44. data/lib/ruby-lokalise-api/resources/key_comment.rb +5 -3
  45. data/lib/ruby-lokalise-api/resources/order.rb +4 -0
  46. data/lib/ruby-lokalise-api/resources/payment_card.rb +3 -1
  47. data/lib/ruby-lokalise-api/resources/project.rb +3 -1
  48. data/lib/ruby-lokalise-api/resources/project_comment.rb +3 -1
  49. data/lib/ruby-lokalise-api/resources/project_language.rb +5 -3
  50. data/lib/ruby-lokalise-api/resources/queued_process.rb +18 -0
  51. data/lib/ruby-lokalise-api/resources/screenshot.rb +3 -1
  52. data/lib/ruby-lokalise-api/resources/snapshot.rb +5 -1
  53. data/lib/ruby-lokalise-api/resources/system_language.rb +3 -1
  54. data/lib/ruby-lokalise-api/resources/task.rb +3 -1
  55. data/lib/ruby-lokalise-api/resources/team.rb +2 -0
  56. data/lib/ruby-lokalise-api/resources/team_user.rb +4 -2
  57. data/lib/ruby-lokalise-api/resources/team_user_group.rb +6 -3
  58. data/lib/ruby-lokalise-api/resources/translation.rb +3 -1
  59. data/lib/ruby-lokalise-api/resources/translation_provider.rb +5 -0
  60. data/lib/ruby-lokalise-api/resources/webhook.rb +13 -3
  61. data/lib/ruby-lokalise-api/rest/branches.rb +2 -0
  62. data/lib/ruby-lokalise-api/rest/comments.rb +7 -5
  63. data/lib/ruby-lokalise-api/rest/contributors.rb +7 -5
  64. data/lib/ruby-lokalise-api/rest/custom_translation_statuses.rb +8 -6
  65. data/lib/ruby-lokalise-api/rest/files.rb +5 -3
  66. data/lib/ruby-lokalise-api/rest/keys.rb +9 -7
  67. data/lib/ruby-lokalise-api/rest/languages.rb +8 -6
  68. data/lib/ruby-lokalise-api/rest/orders.rb +2 -0
  69. data/lib/ruby-lokalise-api/rest/payment_cards.rb +5 -3
  70. data/lib/ruby-lokalise-api/rest/projects.rb +8 -6
  71. data/lib/ruby-lokalise-api/rest/queued_processes.rb +26 -0
  72. data/lib/ruby-lokalise-api/rest/screenshots.rb +7 -5
  73. data/lib/ruby-lokalise-api/rest/snapshots.rb +6 -4
  74. data/lib/ruby-lokalise-api/rest/tasks.rb +7 -5
  75. data/lib/ruby-lokalise-api/rest/team_user_group.rb +6 -4
  76. data/lib/ruby-lokalise-api/rest/team_users.rb +6 -4
  77. data/lib/ruby-lokalise-api/rest/teams.rb +3 -1
  78. data/lib/ruby-lokalise-api/rest/translation_providers.rb +4 -2
  79. data/lib/ruby-lokalise-api/rest/translations.rb +5 -3
  80. data/lib/ruby-lokalise-api/rest/webhooks.rb +18 -5
  81. data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +2 -0
  82. data/lib/ruby-lokalise-api/utils/endpoint_helpers.rb +2 -0
  83. data/lib/ruby-lokalise-api/utils/string_utils.rb +2 -0
  84. data/lib/ruby-lokalise-api/version.rb +3 -1
  85. data/ruby-lokalise-api.gemspec +9 -5
  86. data/spec/lib/ruby-lokalise-api/connection_spec.rb +10 -7
  87. data/spec/lib/ruby-lokalise-api/custom_json_parser_spec.rb +9 -5
  88. data/spec/lib/ruby-lokalise-api/error_spec.rb +15 -4
  89. data/spec/lib/ruby-lokalise-api/rest/branches_spec.rb +19 -5
  90. data/spec/lib/ruby-lokalise-api/rest/comments_spec.rb +19 -5
  91. data/spec/lib/ruby-lokalise-api/rest/contributors_spec.rb +18 -4
  92. data/spec/lib/ruby-lokalise-api/rest/custom_translation_statuses_spec.rb +18 -4
  93. data/spec/lib/ruby-lokalise-api/rest/files_spec.rb +21 -11
  94. data/spec/lib/ruby-lokalise-api/rest/keys_spec.rb +46 -26
  95. data/spec/lib/ruby-lokalise-api/rest/languages_spec.rb +20 -6
  96. data/spec/lib/ruby-lokalise-api/rest/orders_spec.rb +16 -2
  97. data/spec/lib/ruby-lokalise-api/rest/payment_cards_spec.rb +21 -5
  98. data/spec/lib/ruby-lokalise-api/rest/projects_spec.rb +18 -4
  99. data/spec/lib/ruby-lokalise-api/rest/queued_processes_spec.rb +57 -0
  100. data/spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb +18 -4
  101. data/spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb +31 -4
  102. data/spec/lib/ruby-lokalise-api/rest/tasks_spec.rb +18 -4
  103. data/spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb +92 -6
  104. data/spec/lib/ruby-lokalise-api/rest/team_users_spec.rb +19 -4
  105. data/spec/lib/ruby-lokalise-api/rest/teams_spec.rb +2 -0
  106. data/spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb +9 -2
  107. data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +20 -6
  108. data/spec/lib/ruby-lokalise-api/rest/webhooks_spec.rb +54 -2
  109. data/spec/lib/ruby-lokalise-api/utils/snakecase_spec.rb +2 -0
  110. data/spec/lib/ruby-lokalise-api_spec.rb +12 -9
  111. data/spec/spec_helper.rb +8 -1
  112. data/spec/support/test_client.rb +2 -0
  113. data/spec/support/vcr.rb +2 -0
  114. metadata +59 -12
@@ -1,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(:branch_id) { 41_302 }
4
6
 
5
7
  describe '#branches' do
6
- it 'should return all branches' do
8
+ it 'returns all branches' do
7
9
  branches = VCR.use_cassette('all_branches') do
8
10
  test_client.branches project_id
9
11
  end.collection
@@ -11,7 +13,7 @@ RSpec.describe Lokalise::Client do
11
13
  expect(branches.count).to eq(1)
12
14
  end
13
15
 
14
- it 'should support pagination' do
16
+ it 'supports pagination' do
15
17
  branches = VCR.use_cassette('all_branches_pagination') do
16
18
  test_client.branches project_id, limit: 1, page: 1
17
19
  end
@@ -38,6 +40,18 @@ RSpec.describe Lokalise::Client do
38
40
  expect(branch.created_by_email).to eq('bodrovis@protonmail.com')
39
41
  end
40
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
+
41
55
  specify '#create_branch' do
42
56
  branch = VCR.use_cassette('create_branch') do
43
57
  test_client.create_branch project_id, name: 'ruby-branch'
@@ -82,8 +96,8 @@ RSpec.describe Lokalise::Client do
82
96
  expect(response['branch']['name']).to eq(branch.name)
83
97
  end
84
98
 
85
- context 'branch chained methods' do
86
- it 'should support merge' do
99
+ context 'when branch methods are chained' do
100
+ it 'supports merge' do
87
101
  branch = VCR.use_cassette('create_branch_to_merge2') do
88
102
  test_client.create_branch project_id, name: 'merge-me-plz'
89
103
  end
@@ -102,7 +116,7 @@ RSpec.describe Lokalise::Client do
102
116
  expect(response['branch']['name']).to eq(branch.name)
103
117
  end
104
118
 
105
- it 'should support update and destroy' do
119
+ it 'supports update and destroy' do
106
120
  branch = VCR.use_cassette('create_another_branch') do
107
121
  test_client.create_branch project_id, name: 'ruby-second-branch'
108
122
  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_305_182 }
4
6
  let(:another_key_id) { 15_519_786 }
5
7
 
6
8
  describe '#comments' do
7
- it 'should return all comments' do
9
+ it 'returns all comments' do
8
10
  comments = VCR.use_cassette('all_comments') do
9
11
  test_client.comments project_id, key_id
10
12
  end.collection
@@ -12,7 +14,7 @@ RSpec.describe Lokalise::Client do
12
14
  expect(comments.count).to eq(3)
13
15
  end
14
16
 
15
- it 'should support pagination' do
17
+ it 'supports pagination' do
16
18
  comments = VCR.use_cassette('all_comments_pagination') do
17
19
  test_client.comments project_id, key_id, limit: 1, page: 2
18
20
  end
@@ -29,7 +31,7 @@ RSpec.describe Lokalise::Client do
29
31
  expect(comments.prev_page?).to eq(true)
30
32
  expect(comments.first_page?).to eq(false)
31
33
 
32
- expect(comments.client).to be_an_instance_of(Lokalise::Client)
34
+ expect(comments.client).to be_an_instance_of(described_class)
33
35
  end
34
36
  end
35
37
 
@@ -47,6 +49,18 @@ RSpec.describe Lokalise::Client do
47
49
  expect(comment.added_at_timestamp).to eq(1_544_380_904)
48
50
  end
49
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
+
50
64
  specify '#create_comments' do
51
65
  comments = VCR.use_cassette('create_comments') do
52
66
  test_client.create_comments project_id, key_id, [
@@ -85,8 +99,8 @@ RSpec.describe Lokalise::Client do
85
99
  expect(response['comment_deleted']).to eq(true)
86
100
  end
87
101
 
88
- context 'comment chained methods' do
89
- it 'should support destroy' do
102
+ context 'when comment methods are chained' do
103
+ it 'supports destroy' do
90
104
  comment = VCR.use_cassette('create_another_comment') do
91
105
  test_client.create_comments project_id, another_key_id, comment: 'chained comment'
92
106
  end.collection.first
@@ -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(:contributor_id) { 25_953 }
4
6
 
5
7
  describe '#contributors' do
6
- it 'should return all contributors' do
8
+ it 'returns all contributors' do
7
9
  contributors = VCR.use_cassette('all_contributors') do
8
10
  test_client.contributors project_id
9
11
  end.collection
@@ -12,7 +14,7 @@ RSpec.describe Lokalise::Client do
12
14
  expect(contributors.first.fullname).to eq('John Doe')
13
15
  end
14
16
 
15
- it 'should support pagination' do
17
+ it 'supports pagination' do
16
18
  contributors = VCR.use_cassette('all_contributors_pagination') do
17
19
  test_client.contributors project_id, limit: 1, page: 2
18
20
  end
@@ -46,6 +48,18 @@ RSpec.describe Lokalise::Client do
46
48
  expect(contributor.created_at_timestamp).to eq(1_534_865_725)
47
49
  end
48
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
+
49
63
  specify '#create_contributors' do
50
64
  contributor = VCR.use_cassette('create_contributors') do
51
65
  test_client.create_contributors project_id,
@@ -83,8 +97,8 @@ RSpec.describe Lokalise::Client do
83
97
  expect(response['contributor_deleted']).to eq(true)
84
98
  end
85
99
 
86
- context 'contributor chained methods' do
87
- it 'should support update and destroy' do
100
+ context 'when contributor methods are chained' do
101
+ it 'supports update and destroy' do
88
102
  contributor = VCR.use_cassette('create_another_contributor') do
89
103
  test_client.create_contributors project_id,
90
104
  email: 'demo@test.com',
@@ -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(:status_id) { 128 }
4
6
  let(:new_status_id) { 126 }
5
7
 
6
8
  describe '#translation_statuses' do
7
- it 'should return all statuses' do
9
+ it 'returns all statuses' do
8
10
  statuses = VCR.use_cassette('all_translation_statuses') do
9
11
  test_client.translation_statuses project_id
10
12
  end.collection
@@ -13,7 +15,7 @@ RSpec.describe Lokalise::Client do
13
15
  expect(statuses.first.status_id).to eq(status_id)
14
16
  end
15
17
 
16
- it 'should support pagination' do
18
+ it 'supports pagination' do
17
19
  statuses = VCR.use_cassette('all_translation_statuses_pagination') do
18
20
  test_client.translation_statuses project_id, limit: 1, page: 2
19
21
  end
@@ -41,6 +43,18 @@ RSpec.describe Lokalise::Client do
41
43
  expect(status.color).to eq('#0079bf')
42
44
  end
43
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
+
44
58
  specify '#create_translation_status' do
45
59
  title = 'Reviewed by doctors'
46
60
  color = '#f2d600'
@@ -85,8 +99,8 @@ RSpec.describe Lokalise::Client do
85
99
  expect(response).to include('#f2d600')
86
100
  end
87
101
 
88
- context 'translation status chained methods' do
89
- it 'should support update and destroy' do
102
+ context 'when translation status methods are chained' do
103
+ it 'supports update and destroy' do
90
104
  status = VCR.use_cassette('create_another_translation_status') do
91
105
  test_client.create_translation_status project_id,
92
106
  title: 'rspec',
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Lokalise::Client do
2
4
  let(:project_id) { '803826145ba90b42d5d860.46800099' }
3
5
 
4
6
  describe '#files' do
5
- it 'should return all files' do
7
+ it 'returns all files' do
6
8
  files = VCR.use_cassette('files') do
7
9
  test_client.files project_id
8
10
  end.collection
@@ -14,7 +16,7 @@ RSpec.describe Lokalise::Client do
14
16
  expect(file.key_count).to eq(1)
15
17
  end
16
18
 
17
- it 'should support pagination' do
19
+ it 'supports pagination' do
18
20
  files = VCR.use_cassette('all_files_pagination') do
19
21
  test_client.files project_id, limit: 1, page: 1
20
22
  end
@@ -33,8 +35,8 @@ RSpec.describe Lokalise::Client do
33
35
  specify '#download_files' do
34
36
  response = VCR.use_cassette('download_files') do
35
37
  test_client.download_files project_id,
36
- "format": 'po',
37
- "original_filenames": true
38
+ format: 'po',
39
+ original_filenames: true
38
40
  end
39
41
 
40
42
  expect(response['project_id']).to eq(project_id)
@@ -42,15 +44,23 @@ RSpec.describe Lokalise::Client do
42
44
  end
43
45
 
44
46
  specify '#upload_file' do
45
- response = VCR.use_cassette('upload_file') do
47
+ process = VCR.use_cassette('upload_file') do
46
48
  test_client.upload_file project_id,
47
- "data": 'ZnI6DQogIHRlc3Q6IHRyYW5zbGF0aW9u',
48
- "filename": 'rspec.yml',
49
- 'lang_iso': 'ru'
49
+ data: 'ZnI6DQogIHRlc3Q6IHRyYW5zbGF0aW9u',
50
+ filename: 'rspec_async.yml',
51
+ lang_iso: 'ru'
50
52
  end
51
53
 
52
- expect(response['project_id']).to eq(project_id)
53
- expect(response['file']).to eq('rspec.yml')
54
- expect(response['result']['skipped']).to eq(1)
54
+ expect(process).to be_an_instance_of(Lokalise::Resources::QueuedProcess)
55
+ expect(process.process_id).to eq('85c42bf5eff44648ca2f01f9db67b7d306a2f282')
56
+ expect(process.status).to eq('queued')
57
+
58
+ reloaded_process = VCR.use_cassette('upload_file_queued_reload') do
59
+ process.reload_data
60
+ end
61
+
62
+ expect(reloaded_process.process_id).to eq(process.process_id)
63
+ expect(reloaded_process.status).to eq('finished')
64
+ expect(reloaded_process.details['files'][0]['status']).to eq('finished')
55
65
  end
56
66
  end
@@ -1,59 +1,79 @@
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_305_182 }
4
6
  let(:new_key_id) { 15_519_770 }
5
7
 
6
8
  describe '#keys' do
7
- it 'should return all keys' do
9
+ it 'returns all keys' do
8
10
  keys = VCR.use_cassette('all_keys') do
9
11
  test_client.keys project_id
10
12
  end.collection
11
13
 
12
- expect(keys.count).to eq(1)
14
+ expect(keys.count).to eq(8)
13
15
  end
14
16
 
15
- it 'should support pagination' do
17
+ it 'supports pagination' do
16
18
  keys = VCR.use_cassette('all_keys_pagination') do
17
- test_client.keys project_id, limit: 1, page: 1
19
+ test_client.keys project_id, limit: 2, page: 3
18
20
  end
19
21
 
20
- expect(keys.collection.count).to eq(1)
21
- expect(keys.total_results).to eq(1)
22
- expect(keys.total_pages).to eq(1)
23
- expect(keys.results_per_page).to eq(1)
24
- expect(keys.current_page).to eq(1)
22
+ expect(keys.collection.count).to eq(2)
23
+ expect(keys.total_results).to eq(8)
24
+ expect(keys.total_pages).to eq(4)
25
+ expect(keys.results_per_page).to eq(2)
26
+ expect(keys.current_page).to eq(3)
25
27
 
26
- expect(keys.next_page?).to eq(false)
27
- expect(keys.last_page?).to eq(true)
28
- expect(keys.prev_page?).to eq(false)
29
- expect(keys.first_page?).to eq(true)
28
+ expect(keys.next_page?).to eq(true)
29
+ expect(keys.last_page?).to eq(false)
30
+ expect(keys.prev_page?).to eq(true)
31
+ expect(keys.first_page?).to eq(false)
30
32
  end
31
33
  end
32
34
 
33
35
  specify '#key' do
34
36
  key = VCR.use_cassette('key') do
35
- test_client.key project_id, key_id, disable_references: 0
37
+ test_client.key project_id, 44_596_066, disable_references: 0
36
38
  end
37
39
 
38
- expect(key.key_id).to eq(key_id)
39
- expect(key.created_at).to eq('2018-12-03 19:11:30 (Etc/UTC)')
40
- expect(key.key_name['ios']).to eq('test')
41
- expect(key.filenames['web']).to eq('rspec.yml')
40
+ expect(key.key_id).to eq(44_596_066)
41
+ expect(key.project_id).to eq(project_id)
42
+ expect(key.branch).to eq('master')
43
+ expect(key.created_at).to eq('2020-05-11 11:20:33 (Etc/UTC)')
44
+ expect(key.created_at_timestamp).to eq(1_589_196_033)
45
+ expect(key.key_name['ios']).to eq('static_pages:index:welcome')
46
+ expect(key.filenames['web']).to eq('%LANG_ISO%.yml')
42
47
  expect(key.description).to eq('')
43
48
  expect(key.platforms).to eq(%w[web])
44
49
  expect(key.tags).to eq([])
45
- expect(key.comments.first['comment']).to eq('demo comment')
46
- expect(key.comments[1]['comment_id']).to eq(800_632)
50
+ expect(key.comments).to eq([])
47
51
  expect(key.screenshots).to eq([])
48
52
  expect(key.translations.first['modified_by_email']).to eq('bodrovis@protonmail.com')
49
53
  expect(key.is_plural).to eq(false)
50
54
  expect(key.plural_name).to eq('')
51
- expect(key.is_hidden).to eq(false)
55
+ expect(key.is_hidden).to eq(true)
52
56
  expect(key.is_archived).to eq(false)
53
57
  expect(key.context).to eq('')
58
+ expect(key.base_words).to eq(1)
54
59
  expect(key.char_limit).to eq(0)
55
60
  expect(key.custom_attributes).to eq('')
56
- expect(key.base_words).to eq(1)
61
+ expect(key.modified_at).to eq('2020-05-11 11:20:33 (Etc/UTC)')
62
+ expect(key.modified_at_timestamp).to eq(1_589_196_033)
63
+ expect(key.translations_modified_at).to eq('2020-05-15 10:44:42 (Etc/UTC)')
64
+ expect(key.translations_modified_at_timestamp).to eq(1_589_539_482)
65
+ end
66
+
67
+ specify '#reload_data' do
68
+ key = VCR.use_cassette('key') do
69
+ test_client.key project_id, 44_596_066, disable_references: 0
70
+ end
71
+
72
+ reloaded_key = VCR.use_cassette('key') do
73
+ key.reload_data disable_references: 0
74
+ end
75
+
76
+ expect(reloaded_key.key_id).to eq(key.key_id)
57
77
  end
58
78
 
59
79
  specify '#create_keys' do
@@ -126,8 +146,8 @@ RSpec.describe Lokalise::Client do
126
146
  expect(response['keys_removed']).to eq(true)
127
147
  end
128
148
 
129
- context 'key chained methods' do
130
- it 'should support update and destroy' do
149
+ context 'when key methods are chained' do
150
+ it 'supports update and destroy' do
131
151
  key = VCR.use_cassette('create_another_key') do
132
152
  test_client.create_keys project_id, key_name: 'chained_k', platforms: %w[ios]
133
153
  end.collection.first
@@ -153,8 +173,8 @@ RSpec.describe Lokalise::Client do
153
173
  end
154
174
  end
155
175
 
156
- context 'keys collection chained methods' do
157
- it 'should support destroy_all' do
176
+ context 'when keys collection methods are chained' do
177
+ it 'supports destroy_all' do
158
178
  keys = VCR.use_cassette('create_keys_collection') do
159
179
  test_client.create_keys project_id, [
160
180
  {
@@ -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(:language_id) { 640 }
4
6
  let(:new_language_id) { 894 }
5
7
 
6
8
  describe '#system_languages' do
7
- it 'should return all system languages' do
9
+ it 'returns all system languages' do
8
10
  languages = VCR.use_cassette('all_system_languages') do
9
11
  test_client.system_languages
10
12
  end.collection
@@ -13,7 +15,7 @@ RSpec.describe Lokalise::Client do
13
15
  expect(languages.first.lang_iso).to eq('ab')
14
16
  end
15
17
 
16
- it 'should support pagination' do
18
+ it 'supports pagination' do
17
19
  languages = VCR.use_cassette('all_system_languages_pagination') do
18
20
  test_client.system_languages limit: 10, page: 3
19
21
  end
@@ -27,7 +29,7 @@ RSpec.describe Lokalise::Client do
27
29
  end
28
30
 
29
31
  describe '#project_languages' do
30
- it 'should return all project languages' do
32
+ it 'returns all project languages' do
31
33
  languages = VCR.use_cassette('all_project_languages') do
32
34
  test_client.project_languages project_id
33
35
  end.collection
@@ -36,7 +38,7 @@ RSpec.describe Lokalise::Client do
36
38
  expect(languages.first.lang_iso).to eq('en')
37
39
  end
38
40
 
39
- it 'should support pagination' do
41
+ it 'supports pagination' do
40
42
  languages = VCR.use_cassette('all_project_languages_pagination') do
41
43
  test_client.project_languages project_id, limit: 1, page: 2
42
44
  end
@@ -61,6 +63,18 @@ RSpec.describe Lokalise::Client do
61
63
  expect(language.plural_forms).to eq(%w[one other])
62
64
  end
63
65
 
66
+ specify '#reload_data' do
67
+ language = VCR.use_cassette('language') do
68
+ test_client.language project_id, language_id
69
+ end
70
+
71
+ reloaded_language = VCR.use_cassette('language') do
72
+ language.reload_data
73
+ end
74
+
75
+ expect(reloaded_language.lang_id).to eq(language.lang_id)
76
+ end
77
+
64
78
  specify '#create_languages' do
65
79
  language = VCR.use_cassette('create_languages') do
66
80
  test_client.create_languages project_id, lang_iso: 'ab', custom_name: 'rspec lang'
@@ -89,8 +103,8 @@ RSpec.describe Lokalise::Client do
89
103
  expect(response['language_deleted']).to eq(true)
90
104
  end
91
105
 
92
- context 'project language chained methods' do
93
- it 'should support update and destroy' do
106
+ context 'when project language methods are chained' do
107
+ it 'supports update and destroy' do
94
108
  language = VCR.use_cassette('create_another_language') do
95
109
  test_client.create_languages project_id, lang_iso: 'ab', custom_name: 'chained lang'
96
110
  end.collection.first