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,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