ruby-lokalise-api 4.3.0 → 4.5.1
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.
- checksums.yaml +4 -4
- data/.github/CONTRIBUTING.md +1 -1
- data/README.md +11 -3
- data/lib/ruby-lokalise-api/client.rb +4 -1
- data/lib/ruby-lokalise-api/collections/base.rb +19 -7
- data/lib/ruby-lokalise-api/collections/segment.rb +15 -0
- data/lib/ruby-lokalise-api/connection.rb +1 -1
- data/lib/ruby-lokalise-api/data/attributes.json +26 -0
- data/lib/ruby-lokalise-api/error.rb +4 -3
- data/lib/ruby-lokalise-api/oauth_client.rb +11 -0
- data/lib/ruby-lokalise-api/request.rb +3 -2
- data/lib/ruby-lokalise-api/resources/base.rb +18 -7
- data/lib/ruby-lokalise-api/resources/branch.rb +3 -1
- data/lib/ruby-lokalise-api/resources/contributor.rb +1 -1
- data/lib/ruby-lokalise-api/resources/custom_translation_status.rb +1 -1
- data/lib/ruby-lokalise-api/resources/key.rb +1 -0
- data/lib/ruby-lokalise-api/resources/key_comment.rb +1 -1
- data/lib/ruby-lokalise-api/resources/order.rb +1 -0
- data/lib/ruby-lokalise-api/resources/payment_card.rb +1 -0
- data/lib/ruby-lokalise-api/resources/project.rb +1 -0
- data/lib/ruby-lokalise-api/resources/project_comment.rb +1 -0
- data/lib/ruby-lokalise-api/resources/project_language.rb +1 -1
- data/lib/ruby-lokalise-api/resources/queued_process.rb +1 -1
- data/lib/ruby-lokalise-api/resources/screenshot.rb +1 -0
- data/lib/ruby-lokalise-api/resources/segment.rb +19 -0
- data/lib/ruby-lokalise-api/resources/snapshot.rb +1 -0
- data/lib/ruby-lokalise-api/resources/task.rb +1 -0
- data/lib/ruby-lokalise-api/resources/team_user.rb +1 -1
- data/lib/ruby-lokalise-api/resources/team_user_billing_details.rb +14 -0
- data/lib/ruby-lokalise-api/resources/team_user_group.rb +1 -1
- data/lib/ruby-lokalise-api/resources/translation.rb +1 -0
- data/lib/ruby-lokalise-api/resources/translation_provider.rb +1 -1
- data/lib/ruby-lokalise-api/resources/webhook.rb +1 -0
- data/lib/ruby-lokalise-api/rest/segments.rb +43 -0
- data/lib/ruby-lokalise-api/rest/team_user_billing_details.rb +34 -0
- data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +3 -1
- data/lib/ruby-lokalise-api/utils/string_utils.rb +24 -18
- data/lib/ruby-lokalise-api/version.rb +1 -1
- data/lib/ruby-lokalise-api.rb +19 -1
- data/ruby-lokalise-api.gemspec +18 -15
- data/spec/lib/ruby-lokalise-api/connection_spec.rb +6 -0
- data/spec/lib/ruby-lokalise-api/error_spec.rb +8 -0
- data/spec/lib/ruby-lokalise-api/rest/contributors_spec.rb +2 -2
- data/spec/lib/ruby-lokalise-api/rest/keys_spec.rb +1 -1
- data/spec/lib/ruby-lokalise-api/rest/languages_spec.rb +2 -2
- data/spec/lib/ruby-lokalise-api/rest/projects_spec.rb +1 -1
- data/spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb +2 -2
- data/spec/lib/ruby-lokalise-api/rest/segments_spec.rb +106 -0
- data/spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb +1 -1
- data/spec/lib/ruby-lokalise-api/rest/tasks_spec.rb +2 -2
- data/spec/lib/ruby-lokalise-api/rest/team_user_billing_details_spec.rb +48 -0
- data/spec/lib/ruby-lokalise-api/rest/team_users_spec.rb +1 -1
- data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +1 -1
- data/spec/lib/ruby-lokalise-api_spec.rb +16 -1
- data/spec/support/test_client.rb +4 -0
- metadata +19 -10
- data/spec/lib/ruby-lokalise-api/utils/snakecase_spec.rb +0 -19
@@ -3,6 +3,8 @@
|
|
3
3
|
module Lokalise
|
4
4
|
module Utils
|
5
5
|
module AttributeHelpers
|
6
|
+
using Lokalise::Utils::StringUtils
|
7
|
+
|
6
8
|
UNIFIED_RESOURCES = %w[comment language].freeze
|
7
9
|
|
8
10
|
# Returns the name of the API resource for the given class.
|
@@ -40,7 +42,7 @@ module Lokalise
|
|
40
42
|
# @return [String]
|
41
43
|
# @param model_class [String]
|
42
44
|
def id_key_for(model_class)
|
43
|
-
|
45
|
+
get_key name: 'ID_KEY', model_class: model_class
|
44
46
|
end
|
45
47
|
|
46
48
|
# Loads attributes for the given resource based on its name
|
@@ -3,25 +3,31 @@
|
|
3
3
|
# Initial code taken from Facets gem by Rubyworks
|
4
4
|
# https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/snakecase.rb
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
6
|
+
module Lokalise
|
7
|
+
module Utils
|
8
|
+
module StringUtils
|
9
|
+
refine String do
|
10
|
+
# Underscore a string such that camelcase, dashes and spaces are
|
11
|
+
# replaced by underscores.
|
12
|
+
def snakecase
|
13
|
+
base_class_name.
|
14
|
+
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
|
15
|
+
gsub(/([a-z\d])([A-Z])/, '\1_\2').
|
16
|
+
tr('-', '_').
|
17
|
+
gsub(/\s/, '_').
|
18
|
+
gsub(/__+/, '_').
|
19
|
+
downcase
|
20
|
+
end
|
18
21
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
22
|
+
# Turn `Module::Nested::ClassName` to just `ClassName`
|
23
|
+
def base_class_name
|
24
|
+
split('::').last
|
25
|
+
end
|
23
26
|
|
24
|
-
|
25
|
-
|
27
|
+
def remove_trailing_slash
|
28
|
+
delete_suffix '/'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
26
32
|
end
|
27
33
|
end
|
data/lib/ruby-lokalise-api.rb
CHANGED
@@ -37,6 +37,8 @@ require 'ruby-lokalise-api/resources/translation_provider'
|
|
37
37
|
require 'ruby-lokalise-api/resources/team_user_group'
|
38
38
|
require 'ruby-lokalise-api/resources/custom_translation_status'
|
39
39
|
require 'ruby-lokalise-api/resources/webhook'
|
40
|
+
require 'ruby-lokalise-api/resources/segment'
|
41
|
+
require 'ruby-lokalise-api/resources/team_user_billing_details'
|
40
42
|
|
41
43
|
require 'ruby-lokalise-api/collections/base'
|
42
44
|
require 'ruby-lokalise-api/collections/branch'
|
@@ -61,8 +63,10 @@ require 'ruby-lokalise-api/collections/translation_provider'
|
|
61
63
|
require 'ruby-lokalise-api/collections/team_user_group'
|
62
64
|
require 'ruby-lokalise-api/collections/custom_translation_status'
|
63
65
|
require 'ruby-lokalise-api/collections/webhook'
|
66
|
+
require 'ruby-lokalise-api/collections/segment'
|
64
67
|
|
65
68
|
require 'ruby-lokalise-api/client'
|
69
|
+
require 'ruby-lokalise-api/oauth_client'
|
66
70
|
|
67
71
|
module Lokalise
|
68
72
|
class << self
|
@@ -72,12 +76,26 @@ module Lokalise
|
|
72
76
|
# @param token [String]
|
73
77
|
# @param params [Hash]
|
74
78
|
def client(token, params = {})
|
75
|
-
@client
|
79
|
+
@client = Lokalise::Client.new token, params
|
76
80
|
end
|
77
81
|
|
78
82
|
# Reset the currently set client
|
79
83
|
def reset_client!
|
80
84
|
@client = nil
|
81
85
|
end
|
86
|
+
|
87
|
+
# Initializes a new OAuthClient object
|
88
|
+
#
|
89
|
+
# @return [Lokalise::OAuthClient]
|
90
|
+
# @param token [String]
|
91
|
+
# @param params [Hash]
|
92
|
+
def oauth_client(token, params = {})
|
93
|
+
@oauth_client = Lokalise::OAuthClient.new token, params
|
94
|
+
end
|
95
|
+
|
96
|
+
# Reset the currently set OAuth client
|
97
|
+
def reset_oauth_client!
|
98
|
+
@oauth_client = nil
|
99
|
+
end
|
82
100
|
end
|
83
101
|
end
|
data/ruby-lokalise-api.gemspec
CHANGED
@@ -5,7 +5,7 @@ require File.expand_path('lib/ruby-lokalise-api/version', __dir__)
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'ruby-lokalise-api'
|
7
7
|
spec.version = Lokalise::VERSION
|
8
|
-
spec.authors = ['Ilya Bodrov']
|
8
|
+
spec.authors = ['Ilya Bodrov-Krukowski']
|
9
9
|
spec.email = ['golosizpru@gmail.com']
|
10
10
|
spec.summary = 'Ruby interface to the Lokalise API'
|
11
11
|
spec.description = 'Opinionated Ruby client for the Lokalise platform API allowing to work with translations, projects, users and other resources as with Ruby objects.'
|
@@ -22,19 +22,22 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.extra_rdoc_files = ['README.md']
|
23
23
|
spec.require_paths = ['lib']
|
24
24
|
|
25
|
-
spec.add_dependency 'addressable',
|
26
|
-
spec.add_dependency 'faraday',
|
27
|
-
spec.add_dependency 'faraday_middleware',
|
28
|
-
spec.add_dependency 'json',
|
25
|
+
spec.add_dependency 'addressable', '~> 2.5'
|
26
|
+
spec.add_dependency 'faraday', '~> 1.0'
|
27
|
+
spec.add_dependency 'faraday_middleware', '~> 1.0'
|
28
|
+
spec.add_dependency 'json', '>= 1.8.0'
|
29
29
|
|
30
|
-
spec.add_development_dependency 'codecov',
|
31
|
-
spec.add_development_dependency 'dotenv',
|
32
|
-
spec.add_development_dependency 'oj',
|
33
|
-
spec.add_development_dependency 'rake',
|
34
|
-
spec.add_development_dependency 'rspec',
|
35
|
-
spec.add_development_dependency 'rubocop',
|
36
|
-
spec.add_development_dependency 'rubocop-performance',
|
37
|
-
spec.add_development_dependency 'rubocop-rspec',
|
38
|
-
spec.add_development_dependency 'simplecov',
|
39
|
-
spec.add_development_dependency 'vcr',
|
30
|
+
spec.add_development_dependency 'codecov', '~> 0.1'
|
31
|
+
spec.add_development_dependency 'dotenv', '~> 2.5'
|
32
|
+
spec.add_development_dependency 'oj', '~> 3.10'
|
33
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
34
|
+
spec.add_development_dependency 'rspec', '~> 3.6'
|
35
|
+
spec.add_development_dependency 'rubocop', '~> 1.6'
|
36
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.5'
|
37
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.0'
|
38
|
+
spec.add_development_dependency 'simplecov', '~> 0.16'
|
39
|
+
spec.add_development_dependency 'vcr', '~> 6.0'
|
40
|
+
spec.metadata = {
|
41
|
+
'rubygems_mfa_required' => 'true'
|
42
|
+
}
|
40
43
|
end
|
@@ -13,6 +13,12 @@ RSpec.describe Lokalise::Connection do
|
|
13
13
|
Faraday.default_adapter = :net_http
|
14
14
|
end
|
15
15
|
|
16
|
+
it 'Authorization header must be present for OAuth client' do
|
17
|
+
conn = connection test_oauth_client
|
18
|
+
expect(conn.headers['Authorization']).to eq("Bearer #{test_client.token}")
|
19
|
+
expect(conn.headers['X-api-token']).to be_nil
|
20
|
+
end
|
21
|
+
|
16
22
|
it 'timeouts and compression should not be set by default but the token must be present' do
|
17
23
|
conn = connection test_client
|
18
24
|
expect(conn.options.timeout).to be_nil
|
@@ -15,6 +15,14 @@ RSpec.describe Lokalise::Error do
|
|
15
15
|
end.to raise_error(described_class)
|
16
16
|
end
|
17
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
|
+
|
18
26
|
it 'raises BadRequest when API token is invalid' do
|
19
27
|
expect do
|
20
28
|
VCR.use_cassette('error_invalid_token') do
|
@@ -106,7 +106,7 @@ RSpec.describe Lokalise::Client do
|
|
106
106
|
languages: [{lang_iso: 'en'}]
|
107
107
|
end.collection.first
|
108
108
|
|
109
|
-
expect(contributor.client).to eq(test_client)
|
109
|
+
expect(contributor.client.token).to eq(test_client.token)
|
110
110
|
expect(contributor.fullname).to eq('chained')
|
111
111
|
|
112
112
|
id = contributor.user_id
|
@@ -116,7 +116,7 @@ RSpec.describe Lokalise::Client do
|
|
116
116
|
contributor.update fullname: 'updated!'
|
117
117
|
end
|
118
118
|
|
119
|
-
expect(updated_contributor.client).to eq(test_client)
|
119
|
+
expect(updated_contributor.client.token).to eq(test_client.token)
|
120
120
|
expect(updated_contributor.fullname).to eq('updated!')
|
121
121
|
expect(updated_contributor.user_id).to eq(id)
|
122
122
|
expect(updated_contributor.path).to eq(path)
|
@@ -160,7 +160,7 @@ RSpec.describe Lokalise::Client do
|
|
160
160
|
key.update key_name: 'updated!'
|
161
161
|
end
|
162
162
|
|
163
|
-
expect(updated_key.client).to eq(test_client)
|
163
|
+
expect(updated_key.client.token).to eq(test_client.token)
|
164
164
|
expect(updated_key.key_name['ios']).to eq('updated!')
|
165
165
|
expect(updated_key.path).to eq(path)
|
166
166
|
|
@@ -109,7 +109,7 @@ RSpec.describe Lokalise::Client do
|
|
109
109
|
test_client.create_languages project_id, lang_iso: 'ab', custom_name: 'chained lang'
|
110
110
|
end.collection.first
|
111
111
|
|
112
|
-
expect(language.client).to eq(test_client)
|
112
|
+
expect(language.client.token).to eq(test_client.token)
|
113
113
|
expect(language.lang_name).to eq('chained lang')
|
114
114
|
|
115
115
|
path = language.path
|
@@ -118,7 +118,7 @@ RSpec.describe Lokalise::Client do
|
|
118
118
|
language.update lang_name: 'updated!'
|
119
119
|
end
|
120
120
|
|
121
|
-
expect(updated_language.client).to eq(test_client)
|
121
|
+
expect(updated_language.client.token).to eq(test_client.token)
|
122
122
|
expect(updated_language.lang_name).to eq('updated!')
|
123
123
|
expect(updated_language.lang_id).to eq(language.lang_id)
|
124
124
|
expect(updated_language.path).to eq(path)
|
@@ -115,7 +115,7 @@ RSpec.describe Lokalise::Client do
|
|
115
115
|
project.update name: 'updated!'
|
116
116
|
end
|
117
117
|
|
118
|
-
expect(updated_project.client).to eq(test_client)
|
118
|
+
expect(updated_project.client.token).to eq(test_client.token)
|
119
119
|
expect(updated_project.name).to eq('updated!')
|
120
120
|
expect(updated_project.path).to eq(path)
|
121
121
|
|
@@ -91,7 +91,7 @@ RSpec.describe Lokalise::Client do
|
|
91
91
|
end.collection.first
|
92
92
|
end
|
93
93
|
|
94
|
-
expect(screenshot.client).to eq(test_client)
|
94
|
+
expect(screenshot.client.token).to eq(test_client.token)
|
95
95
|
expect(screenshot.title).to eq('chained screen')
|
96
96
|
|
97
97
|
path = screenshot.path
|
@@ -100,7 +100,7 @@ RSpec.describe Lokalise::Client do
|
|
100
100
|
screenshot.update title: 'updated!'
|
101
101
|
end
|
102
102
|
|
103
|
-
expect(updated_screenshot.client).to eq(test_client)
|
103
|
+
expect(updated_screenshot.client.token).to eq(test_client.token)
|
104
104
|
expect(updated_screenshot.title).to eq('updated!')
|
105
105
|
expect(updated_screenshot.screenshot_id).to eq(screenshot.screenshot_id)
|
106
106
|
expect(updated_screenshot.path).to eq(path)
|
@@ -0,0 +1,106 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe Lokalise::Client do
|
4
|
+
let(:project_id) { '39066161618d4ecb9fdc12.00274309' }
|
5
|
+
let(:key_id) { 129_358_815 }
|
6
|
+
|
7
|
+
describe '#segments' do
|
8
|
+
it 'returns all segments for a key under lang_iso' do
|
9
|
+
segments = VCR.use_cassette('all_key_segments') do
|
10
|
+
test_client.segments project_id, key_id, 'en'
|
11
|
+
end.collection
|
12
|
+
|
13
|
+
expect(segments.count).to eq(4)
|
14
|
+
expect(segments.first.value).to eq('Hello!')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#segment' do
|
19
|
+
it 'returns a single segment' do
|
20
|
+
lang_iso = 'en'
|
21
|
+
segment_number = 2
|
22
|
+
|
23
|
+
segment = VCR.use_cassette('key_segment') do
|
24
|
+
test_client.segment project_id, key_id, lang_iso, segment_number
|
25
|
+
end
|
26
|
+
|
27
|
+
expect(segment.key_id).to eq(key_id)
|
28
|
+
expect(segment.segment_number).to eq(segment_number)
|
29
|
+
expect(segment.language_iso).to eq(lang_iso)
|
30
|
+
expect(segment.modified_at).to eq('2021-11-22 16:46:50 (Etc/UTC)')
|
31
|
+
expect(segment.modified_at_timestamp).to eq(1_637_599_610)
|
32
|
+
expect(segment.modified_by).to eq(20_181)
|
33
|
+
expect(segment.modified_by_email).to eq('bodrovis@protonmail.com')
|
34
|
+
expect(segment.value).to eq('This is just a simple text.')
|
35
|
+
expect(segment.is_fuzzy).to eq(false)
|
36
|
+
expect(segment.is_reviewed).to eq(false)
|
37
|
+
expect(segment.reviewed_by).to eq(0)
|
38
|
+
expect(segment.words).to eq(6)
|
39
|
+
expect(segment.custom_translation_statuses.first['color']).to eq('#61bd4f')
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'allows to pass params' do
|
43
|
+
lang_iso = 'en'
|
44
|
+
segment_number = 2
|
45
|
+
|
46
|
+
segment = VCR.use_cassette('key_segment_params') do
|
47
|
+
test_client.segment project_id, key_id, lang_iso, segment_number, disable_references: '1'
|
48
|
+
end
|
49
|
+
|
50
|
+
expect(segment.segment_number).to eq(segment_number)
|
51
|
+
expect(segment.value).to eq('This is just a simple text.')
|
52
|
+
expect(segment.language_iso).to eq(lang_iso)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
specify '#update_segment' do
|
57
|
+
lang_iso = 'en'
|
58
|
+
segment_number = 3
|
59
|
+
|
60
|
+
segment = VCR.use_cassette('update_key_segment') do
|
61
|
+
test_client.update_segment project_id, key_id, lang_iso, segment_number,
|
62
|
+
value: 'Updated via API',
|
63
|
+
is_reviewed: true
|
64
|
+
end
|
65
|
+
|
66
|
+
expect(segment.segment_number).to eq(segment_number)
|
67
|
+
expect(segment.value).to eq('Updated via API')
|
68
|
+
expect(segment.language_iso).to eq(lang_iso)
|
69
|
+
end
|
70
|
+
|
71
|
+
context 'when segment methods are chained' do
|
72
|
+
specify '#reload_data' do
|
73
|
+
lang_iso = 'en'
|
74
|
+
segment_number = 2
|
75
|
+
|
76
|
+
segment = VCR.use_cassette('key_segment') do
|
77
|
+
test_client.segment project_id, key_id, lang_iso, segment_number
|
78
|
+
end
|
79
|
+
|
80
|
+
reloaded_segment = VCR.use_cassette('reload_key_segment') do
|
81
|
+
segment.reload_data
|
82
|
+
end
|
83
|
+
|
84
|
+
expect(reloaded_segment.segment_number).to eq(segment_number)
|
85
|
+
expect(reloaded_segment.key_id).to eq(key_id)
|
86
|
+
end
|
87
|
+
|
88
|
+
specify '#update' do
|
89
|
+
lang_iso = 'en'
|
90
|
+
segment_number = 4
|
91
|
+
|
92
|
+
segment = VCR.use_cassette('another_key_segment') do
|
93
|
+
test_client.segment project_id, key_id, lang_iso, segment_number
|
94
|
+
end
|
95
|
+
|
96
|
+
updated_segment = VCR.use_cassette('update_key_segment_chained') do
|
97
|
+
segment.update value: 'Chain Updated',
|
98
|
+
is_fuzzy: true
|
99
|
+
end
|
100
|
+
|
101
|
+
expect(updated_segment.segment_number).to eq(segment_number)
|
102
|
+
expect(updated_segment.is_fuzzy).to eq(true)
|
103
|
+
expect(updated_segment.value).to eq('Chain Updated')
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -81,7 +81,7 @@ RSpec.describe Lokalise::Client do
|
|
81
81
|
new_project.update name: 'Restored and updated'
|
82
82
|
end
|
83
83
|
|
84
|
-
expect(updated_project.client).to eq(test_client)
|
84
|
+
expect(updated_project.client.token).to eq(test_client.token)
|
85
85
|
expect(updated_project.name).to eq('Restored and updated')
|
86
86
|
expect(updated_project.project_id).to eq(new_project.project_id)
|
87
87
|
|
@@ -120,7 +120,7 @@ RSpec.describe Lokalise::Client do
|
|
120
120
|
]
|
121
121
|
end
|
122
122
|
|
123
|
-
expect(task.client).to eq(test_client)
|
123
|
+
expect(task.client.token).to eq(test_client.token)
|
124
124
|
expect(task.title).to eq('chained')
|
125
125
|
|
126
126
|
path = task.path
|
@@ -129,7 +129,7 @@ RSpec.describe Lokalise::Client do
|
|
129
129
|
task.update title: 'updated!'
|
130
130
|
end
|
131
131
|
|
132
|
-
expect(updated_task.client).to eq(test_client)
|
132
|
+
expect(updated_task.client.token).to eq(test_client.token)
|
133
133
|
expect(updated_task.title).to eq('updated!')
|
134
134
|
expect(updated_task.task_id).to eq(task.task_id)
|
135
135
|
expect(updated_task.path).to eq(path)
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe Lokalise::Client do
|
4
|
+
let(:team_id) { 176_692 }
|
5
|
+
let(:team_id2) { 273_879 }
|
6
|
+
|
7
|
+
specify '#team_user_billing_details' do
|
8
|
+
details = VCR.use_cassette('team_user_billing_details') do
|
9
|
+
test_client.team_user_billing_details team_id
|
10
|
+
end
|
11
|
+
|
12
|
+
expect(details.billing_email).to eq('hello@example.com')
|
13
|
+
expect(details.country_code).to eq('LV')
|
14
|
+
expect(details.zip).to eq('LV-6543')
|
15
|
+
expect(details.state_code).to eq('')
|
16
|
+
expect(details.address1).to eq('Sample line 1')
|
17
|
+
expect(details.address2).to eq('Sample line 2')
|
18
|
+
expect(details.city).to eq('Riga')
|
19
|
+
expect(details.phone).to eq('+371123456')
|
20
|
+
expect(details.company).to eq('Self-employed')
|
21
|
+
expect(details.vatnumber).to eq('123')
|
22
|
+
end
|
23
|
+
|
24
|
+
specify '#create_team_user_billing_details' do
|
25
|
+
details = VCR.use_cassette('create_team_user_billing_details') do
|
26
|
+
test_client.create_team_user_billing_details team_id2, billing_email: 'ruby@example.com',
|
27
|
+
country_code: 'LV',
|
28
|
+
zip: 'LV-1111'
|
29
|
+
end
|
30
|
+
|
31
|
+
expect(details.billing_email).to eq('ruby@example.com')
|
32
|
+
expect(details.country_code).to eq('LV')
|
33
|
+
expect(details.address1).to eq('')
|
34
|
+
end
|
35
|
+
|
36
|
+
specify '#update_team_user_billing_details' do
|
37
|
+
details = VCR.use_cassette('update_team_user_billing_details') do
|
38
|
+
test_client.update_team_user_billing_details team_id2, billing_email: 'ruby_rspec@example.com',
|
39
|
+
country_code: 'LV',
|
40
|
+
zip: 'LV-1111',
|
41
|
+
address1: 'Addr line 1'
|
42
|
+
end
|
43
|
+
|
44
|
+
expect(details.billing_email).to eq('ruby_rspec@example.com')
|
45
|
+
expect(details.country_code).to eq('LV')
|
46
|
+
expect(details.address1).to eq('Addr line 1')
|
47
|
+
end
|
48
|
+
end
|
@@ -81,7 +81,7 @@ RSpec.describe Lokalise::Client do
|
|
81
81
|
team_user.update role: 'admin'
|
82
82
|
end
|
83
83
|
|
84
|
-
expect(updated_team_user.client).to eq(test_client)
|
84
|
+
expect(updated_team_user.client.token).to eq(test_client.token)
|
85
85
|
expect(updated_team_user.role).to eq('admin')
|
86
86
|
|
87
87
|
delete_response = VCR.use_cassette('delete_team_user_chained') do
|
@@ -110,7 +110,7 @@ RSpec.describe Lokalise::Client do
|
|
110
110
|
translation.update translation: 'chained updated'
|
111
111
|
end
|
112
112
|
|
113
|
-
expect(updated_translation.client).to eq(test_client)
|
113
|
+
expect(updated_translation.client.token).to eq(test_client.token)
|
114
114
|
expect(updated_translation.translation).to eq('chained updated')
|
115
115
|
expect(updated_translation.translation_id).to eq(translation.translation_id)
|
116
116
|
end
|
@@ -12,10 +12,25 @@ RSpec.describe Lokalise do
|
|
12
12
|
specify '.reset_client!' do
|
13
13
|
expect(test_client).to be_an_instance_of(Lokalise::Client)
|
14
14
|
described_class.reset_client!
|
15
|
-
current_client = described_class.instance_variable_get
|
15
|
+
current_client = described_class.instance_variable_get :@client
|
16
16
|
expect(current_client).to be_nil
|
17
17
|
end
|
18
18
|
|
19
|
+
specify '.oauth_client' do
|
20
|
+
expect(test_oauth_client).to be_an_instance_of(Lokalise::OAuthClient)
|
21
|
+
expect(test_oauth_client.token).to eq("Bearer #{ENV['LOKALISE_API_TOKEN']}")
|
22
|
+
expect(test_oauth_client.timeout).to be_nil
|
23
|
+
expect(test_oauth_client.open_timeout).to be_nil
|
24
|
+
expect(test_oauth_client.enable_compression).to be false
|
25
|
+
end
|
26
|
+
|
27
|
+
specify '.reset_oauth_client!' do
|
28
|
+
expect(test_oauth_client).to be_an_instance_of(Lokalise::OAuthClient)
|
29
|
+
described_class.reset_oauth_client!
|
30
|
+
current_oauth_client = described_class.instance_variable_get :@oauth_client
|
31
|
+
expect(current_oauth_client).to be_nil
|
32
|
+
end
|
33
|
+
|
19
34
|
context 'with client params' do
|
20
35
|
before { described_class.reset_client! }
|
21
36
|
|
data/spec/support/test_client.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-lokalise-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Ilya Bodrov
|
7
|
+
- Ilya Bodrov-Krukowski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -239,6 +239,7 @@ files:
|
|
239
239
|
- lib/ruby-lokalise-api/collections/project_language.rb
|
240
240
|
- lib/ruby-lokalise-api/collections/queued_process.rb
|
241
241
|
- lib/ruby-lokalise-api/collections/screenshot.rb
|
242
|
+
- lib/ruby-lokalise-api/collections/segment.rb
|
242
243
|
- lib/ruby-lokalise-api/collections/snapshot.rb
|
243
244
|
- lib/ruby-lokalise-api/collections/system_language.rb
|
244
245
|
- lib/ruby-lokalise-api/collections/task.rb
|
@@ -252,6 +253,7 @@ files:
|
|
252
253
|
- lib/ruby-lokalise-api/data/attributes.json
|
253
254
|
- lib/ruby-lokalise-api/error.rb
|
254
255
|
- lib/ruby-lokalise-api/json_handler.rb
|
256
|
+
- lib/ruby-lokalise-api/oauth_client.rb
|
255
257
|
- lib/ruby-lokalise-api/request.rb
|
256
258
|
- lib/ruby-lokalise-api/resources/base.rb
|
257
259
|
- lib/ruby-lokalise-api/resources/branch.rb
|
@@ -267,11 +269,13 @@ files:
|
|
267
269
|
- lib/ruby-lokalise-api/resources/project_language.rb
|
268
270
|
- lib/ruby-lokalise-api/resources/queued_process.rb
|
269
271
|
- lib/ruby-lokalise-api/resources/screenshot.rb
|
272
|
+
- lib/ruby-lokalise-api/resources/segment.rb
|
270
273
|
- lib/ruby-lokalise-api/resources/snapshot.rb
|
271
274
|
- lib/ruby-lokalise-api/resources/system_language.rb
|
272
275
|
- lib/ruby-lokalise-api/resources/task.rb
|
273
276
|
- lib/ruby-lokalise-api/resources/team.rb
|
274
277
|
- lib/ruby-lokalise-api/resources/team_user.rb
|
278
|
+
- lib/ruby-lokalise-api/resources/team_user_billing_details.rb
|
275
279
|
- lib/ruby-lokalise-api/resources/team_user_group.rb
|
276
280
|
- lib/ruby-lokalise-api/resources/translation.rb
|
277
281
|
- lib/ruby-lokalise-api/resources/translation_provider.rb
|
@@ -288,8 +292,10 @@ files:
|
|
288
292
|
- lib/ruby-lokalise-api/rest/projects.rb
|
289
293
|
- lib/ruby-lokalise-api/rest/queued_processes.rb
|
290
294
|
- lib/ruby-lokalise-api/rest/screenshots.rb
|
295
|
+
- lib/ruby-lokalise-api/rest/segments.rb
|
291
296
|
- lib/ruby-lokalise-api/rest/snapshots.rb
|
292
297
|
- lib/ruby-lokalise-api/rest/tasks.rb
|
298
|
+
- lib/ruby-lokalise-api/rest/team_user_billing_details.rb
|
293
299
|
- lib/ruby-lokalise-api/rest/team_user_group.rb
|
294
300
|
- lib/ruby-lokalise-api/rest/team_users.rb
|
295
301
|
- lib/ruby-lokalise-api/rest/teams.rb
|
@@ -316,15 +322,16 @@ files:
|
|
316
322
|
- spec/lib/ruby-lokalise-api/rest/projects_spec.rb
|
317
323
|
- spec/lib/ruby-lokalise-api/rest/queued_processes_spec.rb
|
318
324
|
- spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb
|
325
|
+
- spec/lib/ruby-lokalise-api/rest/segments_spec.rb
|
319
326
|
- spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb
|
320
327
|
- spec/lib/ruby-lokalise-api/rest/tasks_spec.rb
|
328
|
+
- spec/lib/ruby-lokalise-api/rest/team_user_billing_details_spec.rb
|
321
329
|
- spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb
|
322
330
|
- spec/lib/ruby-lokalise-api/rest/team_users_spec.rb
|
323
331
|
- spec/lib/ruby-lokalise-api/rest/teams_spec.rb
|
324
332
|
- spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb
|
325
333
|
- spec/lib/ruby-lokalise-api/rest/translations_spec.rb
|
326
334
|
- spec/lib/ruby-lokalise-api/rest/webhooks_spec.rb
|
327
|
-
- spec/lib/ruby-lokalise-api/utils/snakecase_spec.rb
|
328
335
|
- spec/lib/ruby-lokalise-api_spec.rb
|
329
336
|
- spec/spec_helper.rb
|
330
337
|
- spec/support/test_client.rb
|
@@ -332,7 +339,8 @@ files:
|
|
332
339
|
homepage: https://github.com/lokalise/ruby-lokalise-api
|
333
340
|
licenses:
|
334
341
|
- BSD-3-Clause
|
335
|
-
metadata:
|
342
|
+
metadata:
|
343
|
+
rubygems_mfa_required: 'true'
|
336
344
|
post_install_message:
|
337
345
|
rdoc_options: []
|
338
346
|
require_paths:
|
@@ -348,7 +356,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
348
356
|
- !ruby/object:Gem::Version
|
349
357
|
version: '0'
|
350
358
|
requirements: []
|
351
|
-
rubygems_version: 3.
|
359
|
+
rubygems_version: 3.3.5
|
352
360
|
signing_key:
|
353
361
|
specification_version: 4
|
354
362
|
summary: Ruby interface to the Lokalise API
|
@@ -368,15 +376,16 @@ test_files:
|
|
368
376
|
- spec/lib/ruby-lokalise-api/rest/projects_spec.rb
|
369
377
|
- spec/lib/ruby-lokalise-api/rest/queued_processes_spec.rb
|
370
378
|
- spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb
|
379
|
+
- spec/lib/ruby-lokalise-api/rest/segments_spec.rb
|
371
380
|
- spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb
|
372
381
|
- spec/lib/ruby-lokalise-api/rest/tasks_spec.rb
|
373
|
-
- spec/lib/ruby-lokalise-api/rest/
|
374
|
-
- spec/lib/ruby-lokalise-api/rest/team_users_spec.rb
|
382
|
+
- spec/lib/ruby-lokalise-api/rest/team_user_billing_details_spec.rb
|
375
383
|
- spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb
|
376
|
-
- spec/lib/ruby-lokalise-api/rest/
|
384
|
+
- spec/lib/ruby-lokalise-api/rest/team_users_spec.rb
|
385
|
+
- spec/lib/ruby-lokalise-api/rest/teams_spec.rb
|
377
386
|
- spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb
|
387
|
+
- spec/lib/ruby-lokalise-api/rest/translations_spec.rb
|
378
388
|
- spec/lib/ruby-lokalise-api/rest/webhooks_spec.rb
|
379
|
-
- spec/lib/ruby-lokalise-api/utils/snakecase_spec.rb
|
380
389
|
- spec/lib/ruby-lokalise-api_spec.rb
|
381
390
|
- spec/spec_helper.rb
|
382
391
|
- spec/support/test_client.rb
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe String do
|
4
|
-
let(:snake_result) { 'snake_case' }
|
5
|
-
let(:bc_result) { 'Klass' }
|
6
|
-
|
7
|
-
specify '#snakecase' do
|
8
|
-
expect('SnakeCase'.snakecase).to eq snake_result
|
9
|
-
expect('Snake-Case'.snakecase).to eq snake_result
|
10
|
-
expect('Snake Case'.snakecase).to eq snake_result
|
11
|
-
expect('Snake - Case'.snakecase).to eq snake_result
|
12
|
-
end
|
13
|
-
|
14
|
-
specify '#base_class_name' do
|
15
|
-
expect('Namespace::Nested::Klass'.base_class_name).to eq bc_result
|
16
|
-
expect('Nested::Klass'.base_class_name).to eq bc_result
|
17
|
-
expect('Klass'.base_class_name).to eq bc_result
|
18
|
-
end
|
19
|
-
end
|