ruby-lokalise-api 3.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c602350ca0a108c9b135614ec1fd5a9adeee0db4c6b22393b3f06e402bb8ff7
4
- data.tar.gz: 1c124b4a7f0cd712768abfc9c9053835c66cc73fa65e929c0f24fad7184510a6
3
+ metadata.gz: b0454c459770b754104d8ff3c40ea857176d3642fd48819f2395c021c89ed1ec
4
+ data.tar.gz: 97dc4a77f36ab857edd8da3e0d2ec192fe87696485965379c20189d5911cb9c1
5
5
  SHA512:
6
- metadata.gz: dc370463afa08c3ab8d9102f33960bb229dbfa582d813ae212af4928c5f2402f2130d8210e9dd98ddb7e6f1b6183ea8ed4d8977cc8d2c632439274aacd8602ad
7
- data.tar.gz: e37ce2b8540b59235aa9ab867967daba685bd4cbffab690b4c24803ecbf35f85dbebb9c25ad7ca9088b07d4caf90603681c6c2c052b71865dc65c8e409ed7151
6
+ metadata.gz: ec8413f84b1fae0a3aeb08f5393dd816f3928c174d7f181b4080bf30d441f84c2f6e071826a1a14eaa692283a1d9446734c53d7393a961d19606721a1ec56841
7
+ data.tar.gz: 6a0d6cf801b0a4adda4aa0eb7a7bef55e1009f382d1d977508a8ff605c65502f18a277c6ec0014b44ec1d2656304021b30d5bd5d3672d4888273b4a4066d9061
@@ -1,6 +1,12 @@
1
1
  # Changelog
2
2
 
3
- ## 3.0.0 (14-May-20)
3
+ ## 3.1.0 (08-Jul-20)
4
+
5
+ * Added all recently introduced attributes for the following endpoints: `Contributor` and `Key`
6
+ * Better support for method chaining and data reloading
7
+ * API now supports only background file uploads, and the `queue` parameter doesn't have any effect anymore. Therefore, removed all code and docs related to sync uploading.
8
+
9
+ ## 3.0.0 (18-May-20)
4
10
 
5
11
  * **Breaking change** Uploading files in the background is now a preferred method, and the only method in version 3. Synchronous uploading is still supported and allowed in version 2 but will be removed in the near future. Find more info [in the docs](https://github.com/lokalise/ruby-lokalise-api#upload-translation-file).
6
12
  * Added support for [background import](https://github.com/lokalise/ruby-lokalise-api#upload-translation-file). Background import will return a queued process with the status of the job:
data/README.md CHANGED
@@ -481,7 +481,7 @@ Exports project files as a `.zip` bundle and makes them available to download (t
481
481
 
482
482
  [Doc](https://app.lokalise.com/api2docs/curl/#transition-upload-a-file-post)
483
483
 
484
- Starting from 9 May 2020, **background uploading is the preferred method of importing translation files**. Version 3 supports only asynchronous uploading. Version 2 still allows synchronous uploading but this feature will be removed in the near future.
484
+ Starting from July 2020, **background uploading is the only method of importing translation files**.
485
485
 
486
486
  ```ruby
487
487
  @client.upload_file(project_id, params) # Input:
@@ -28,14 +28,25 @@ module Lokalise
28
28
 
29
29
  def initialize(token, params = {})
30
30
  @token = token
31
- @timeout = params.fetch(:timeout) { nil }
32
- @open_timeout = params.fetch(:open_timeout) { nil }
31
+ @timeout = params.fetch(:timeout, nil)
32
+ @open_timeout = params.fetch(:open_timeout, nil)
33
33
  end
34
34
 
35
- def construct_request(klass, method, endpoint_ids, params = {}, object_key = nil)
35
+ # rubocop:disable Metrics/ParameterLists
36
+ # Constructs request to perform the specified action
37
+ # @param klass The actual class to call the method upon
38
+ # @param method [Symbol] The method to call (:new, :update, :create etc)
39
+ # @param endpoint_ids [Array, Hash] IDs that are used to generate the proper path to the endpoint
40
+ # @param params [Array, Hash] Request parameters
41
+ # @param object_key [String, Symbol] Key that should be used to wrap parameters into
42
+ # @param initial_ids [Array] IDs that should be used to generate base endpoint path. The base path is used for method chaining
43
+ def construct_request(klass, method, endpoint_ids, params = {}, object_key = nil, initial_ids = nil)
36
44
  path = klass.endpoint(*endpoint_ids)
37
- klass.send method, self, path, format_params(params, object_key)
45
+ formatted_params = format_params(params, object_key)
46
+ formatted_params[:_initial_path] = klass.endpoint(*initial_ids) if initial_ids
47
+ klass.send method, self, path, formatted_params
38
48
  end
49
+ # rubocop:enable Metrics/ParameterLists
39
50
 
40
51
  # Converts `params` to hash with arrays under the `object_key` key.
41
52
  # Used in bulk operations
@@ -9,7 +9,7 @@ module Lokalise
9
9
  extend Lokalise::Utils::EndpointHelpers
10
10
 
11
11
  attr_reader :total_pages, :total_results, :results_per_page, :current_page, :collection,
12
- :project_id, :team_id, :request_params, :client, :path, :branch
12
+ :project_id, :team_id, :request_params, :client, :path, :branch, :user_id
13
13
 
14
14
  # Initializes a new collection based on the response
15
15
  #
@@ -19,9 +19,10 @@ module Lokalise
19
19
  def initialize(response, params = {})
20
20
  produce_collection_for response
21
21
  populate_pagination_data_for response
22
- # Project, team id and branch may not be present in some cases
22
+ # Project, team id, user id, and branch may not be present in some cases
23
23
  @project_id = response['content']['project_id']
24
24
  @team_id = response['content']['team_id']
25
+ @user_id = response['content']['user_id']
25
26
  @branch = response['content']['branch']
26
27
  @request_params = params
27
28
  @client = response['client']
@@ -21,11 +21,11 @@
21
21
  "email",
22
22
  "fullname",
23
23
  "created_at",
24
+ "created_at_timestamp",
24
25
  "is_admin",
25
26
  "is_reviewer",
26
27
  "languages",
27
- "admin_rights",
28
- "created_at_timestamp"
28
+ "admin_rights"
29
29
  ],
30
30
  "custom_translation_status": [
31
31
  "status_id",
@@ -39,6 +39,7 @@
39
39
  "key": [
40
40
  "key_id",
41
41
  "created_at",
42
+ "created_at_timestamp",
42
43
  "key_name",
43
44
  "filenames",
44
45
  "description",
@@ -55,7 +56,10 @@
55
56
  "base_words",
56
57
  "char_limit",
57
58
  "custom_attributes",
58
- "created_at_timestamp"
59
+ "modified_at",
60
+ "modified_at_timestamp",
61
+ "translations_modified_at",
62
+ "translations_modified_at_timestamp"
59
63
  ],
60
64
  "language": [
61
65
  "lang_id",
@@ -70,6 +74,7 @@
70
74
  "card_id",
71
75
  "status",
72
76
  "created_at",
77
+ "created_at_timestamp",
73
78
  "created_by",
74
79
  "created_by_email",
75
80
  "source_language_iso",
@@ -81,8 +86,7 @@
81
86
  "translation_tier",
82
87
  "translation_tier_name",
83
88
  "briefing",
84
- "total",
85
- "created_at_timestamp"
89
+ "total"
86
90
  ],
87
91
  "payment_card": [
88
92
  "card_id",
@@ -96,10 +100,10 @@
96
100
  "name",
97
101
  "description",
98
102
  "created_at",
103
+ "created_at_timestamp",
99
104
  "created_by",
100
105
  "created_by_email",
101
106
  "team_id",
102
- "created_at_timestamp",
103
107
  "base_language_id",
104
108
  "base_language_iso",
105
109
  "settings",
@@ -132,9 +136,9 @@
132
136
  "snapshot_id",
133
137
  "title",
134
138
  "created_at",
139
+ "created_at_timestamp",
135
140
  "created_by",
136
- "created_by_email",
137
- "created_at_timestamp"
141
+ "created_by_email"
138
142
  ],
139
143
  "task": [
140
144
  "task_id",
@@ -168,18 +172,18 @@
168
172
  "team_id",
169
173
  "name",
170
174
  "created_at",
175
+ "created_at_timestamp",
171
176
  "plan",
172
177
  "quota_usage",
173
- "quota_allowed",
174
- "created_at_timestamp"
178
+ "quota_allowed"
175
179
  ],
176
180
  "team_user": [
177
181
  "user_id",
178
182
  "email",
179
183
  "fullname",
180
184
  "created_at",
181
- "role",
182
- "created_at_timestamp"
185
+ "created_at_timestamp",
186
+ "role"
183
187
  ],
184
188
  "team_user_group": [
185
189
  "group_id",
@@ -52,7 +52,7 @@ module Lokalise
52
52
 
53
53
  # Get rid of double slashes in the `path`, leading and trailing slash
54
54
  def prepare(path)
55
- path.gsub(%r{\A/}, '').gsub(%r{//}, '/').gsub(%r{/+\z}, '')
55
+ path.delete_prefix('/').gsub(%r{//}, '/').gsub(%r{/+\z}, '')
56
56
  end
57
57
 
58
58
  def respond_with(response, client)
@@ -8,7 +8,7 @@ module Lokalise
8
8
  include Lokalise::Utils::AttributeHelpers
9
9
  extend Lokalise::Utils::EndpointHelpers
10
10
 
11
- attr_reader :raw_data, :project_id, :client, :path, :branch
11
+ attr_reader :raw_data, :project_id, :client, :path, :branch, :user_id, :team_id
12
12
 
13
13
  # Initializes a new resource based on the response.
14
14
  # `endpoint_generator` is used in cases when a new instance is generated
@@ -20,10 +20,7 @@ module Lokalise
20
20
  # @return [Lokalise::Resources::Base]
21
21
  def initialize(response, endpoint_generator = nil)
22
22
  populate_attributes_for response['content']
23
-
24
- @raw_data = response['content']
25
- @project_id = response['content']['project_id']
26
- @branch = response['content']['branch']
23
+ extract_common_attributes_for response['content']
27
24
  @client = response['client']
28
25
  @path = infer_path_from response, endpoint_generator
29
26
  end
@@ -48,11 +45,16 @@ module Lokalise
48
45
  # Usage: `supports :update, :destroy, [:complex_method, '/sub/path', :update]`
49
46
  def supports(*methods)
50
47
  methods.each do |m_data|
48
+ # `method_name` - the method that the resource should support
49
+ # `sub_path` - a string that has to be appended to a base path
50
+ # `c_method` - method name to delegate the work to
51
51
  method_name, sub_path, c_method =
52
52
  m_data.is_a?(Array) ? m_data : [m_data, '', m_data]
53
+
53
54
  define_method method_name do |params = {}|
54
55
  path = instance_variable_get(:@path)
55
- # If there's a sub_path, preserve the initial path to allow further chaining
56
+ # If there's a sub_path which is a string,
57
+ # preserve the initial path to allow further chaining
56
58
  params = params.merge(_initial_path: path) if sub_path
57
59
  self.class.send c_method, instance_variable_get(:@client),
58
60
  path + sub_path, params
@@ -174,6 +176,18 @@ module Lokalise
174
176
  instance_variable_set "@#{attr}", value
175
177
  end
176
178
  end
179
+
180
+ # Extracts all common attributes that resources have.
181
+ # Some of them may be absent in certain cases.
182
+ # rubocop:disable Naming/MemoizedInstanceVariableName
183
+ def extract_common_attributes_for(content)
184
+ @raw_data = content
185
+ @project_id ||= content['project_id']
186
+ @user_id ||= content['user_id']
187
+ @team_id ||= content['team_id']
188
+ @branch ||= content['branch']
189
+ end
190
+ # rubocop:enable Naming/MemoizedInstanceVariableName
177
191
  end
178
192
  end
179
193
  end
@@ -9,7 +9,6 @@ module Lokalise
9
9
  end
10
10
 
11
11
  def upload(client, path, params)
12
- params[:queue] = true
13
12
  klass = Lokalise::Resources::QueuedProcess
14
13
  klass.new post(path, client, params),
15
14
  ->(project_id, id) { klass.endpoint(project_id, id) }
@@ -5,7 +5,7 @@ module Lokalise
5
5
  class ProjectLanguage < Base
6
6
  DATA_KEY = 'Language'
7
7
  ID_KEY = 'lang'
8
- supports :update, :destroy
8
+ supports :update, :destroy, [:reload_data, '', :find]
9
9
 
10
10
  class << self
11
11
  def endpoint(project_id, language_id = nil)
@@ -9,7 +9,8 @@ module Lokalise
9
9
  [:add_projects, '/projects/add', :update],
10
10
  [:remove_projects, '/projects/remove', :update],
11
11
  [:add_users, '/members/add', :update],
12
- [:remove_users, '/members/remove', :update]
12
+ [:remove_users, '/members/remove', :update],
13
+ [:reload_data, '', :find]
13
14
 
14
15
  class << self
15
16
  def endpoint(team_id, team_user_group_id = nil, *actions)
@@ -3,6 +3,9 @@
3
3
  module Lokalise
4
4
  module Resources
5
5
  class TranslationProvider < Base
6
+ supports [:reload_data, '', :find]
7
+ ID_KEY = 'provider'
8
+
6
9
  class << self
7
10
  def endpoint(team_id, provider_id = nil)
8
11
  path_from teams: team_id,
@@ -62,7 +62,7 @@ module Lokalise
62
62
  def add_projects_to_group(team_id, group_id, project_ids)
63
63
  c_r Lokalise::Resources::TeamUserGroup, :update,
64
64
  [team_id, group_id, 'projects', 'add'],
65
- project_ids, :projects
65
+ project_ids, :projects, [team_id, group_id]
66
66
  end
67
67
 
68
68
  # Removes projects from the given group
@@ -75,7 +75,7 @@ module Lokalise
75
75
  def remove_projects_from_group(team_id, group_id, project_ids)
76
76
  c_r Lokalise::Resources::TeamUserGroup, :update,
77
77
  [team_id, group_id, 'projects', 'remove'],
78
- project_ids, :projects
78
+ project_ids, :projects, [team_id, group_id]
79
79
  end
80
80
 
81
81
  # Adds users to the given group
@@ -88,7 +88,7 @@ module Lokalise
88
88
  def add_users_to_group(team_id, group_id, users_ids)
89
89
  c_r Lokalise::Resources::TeamUserGroup, :update,
90
90
  [team_id, group_id, 'members', 'add'],
91
- users_ids, :users
91
+ users_ids, :users, [team_id, group_id]
92
92
  end
93
93
 
94
94
  # Removes users from the given group
@@ -101,7 +101,7 @@ module Lokalise
101
101
  def remove_users_from_group(team_id, group_id, users_ids)
102
102
  c_r Lokalise::Resources::TeamUserGroup, :update,
103
103
  [team_id, group_id, 'members', 'remove'],
104
- users_ids, :users
104
+ users_ids, :users, [team_id, group_id]
105
105
  end
106
106
  end
107
107
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lokalise
4
- VERSION = '3.0.0'
4
+ VERSION = '3.1.0'
5
5
  end
@@ -34,5 +34,5 @@ Gem::Specification.new do |spec|
34
34
  spec.add_development_dependency 'rubocop-performance', '~> 1.5'
35
35
  spec.add_development_dependency 'rubocop-rspec', '~> 1.37'
36
36
  spec.add_development_dependency 'simplecov', '~> 0.16'
37
- spec.add_development_dependency 'vcr', '~> 5.0'
37
+ spec.add_development_dependency 'vcr', '~> 6.0'
38
38
  end
@@ -52,7 +52,7 @@ RSpec.describe Lokalise::Client do
52
52
  end
53
53
 
54
54
  expect(process).to be_an_instance_of(Lokalise::Resources::QueuedProcess)
55
- expect(process.process_id).to eq('ff1876382b7ba81f2bb465da8f030196ec401fa6')
55
+ expect(process.process_id).to eq('85c42bf5eff44648ca2f01f9db67b7d306a2f282')
56
56
  expect(process.status).to eq('queued')
57
57
 
58
58
  reloaded_process = VCR.use_cassette('upload_file_queued_reload') do
@@ -11,56 +11,62 @@ RSpec.describe Lokalise::Client do
11
11
  test_client.keys project_id
12
12
  end.collection
13
13
 
14
- expect(keys.count).to eq(1)
14
+ expect(keys.count).to eq(8)
15
15
  end
16
16
 
17
17
  it 'supports pagination' do
18
18
  keys = VCR.use_cassette('all_keys_pagination') do
19
- test_client.keys project_id, limit: 1, page: 1
19
+ test_client.keys project_id, limit: 2, page: 3
20
20
  end
21
21
 
22
- expect(keys.collection.count).to eq(1)
23
- expect(keys.total_results).to eq(1)
24
- expect(keys.total_pages).to eq(1)
25
- expect(keys.results_per_page).to eq(1)
26
- 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)
27
27
 
28
- expect(keys.next_page?).to eq(false)
29
- expect(keys.last_page?).to eq(true)
30
- expect(keys.prev_page?).to eq(false)
31
- 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)
32
32
  end
33
33
  end
34
34
 
35
35
  specify '#key' do
36
36
  key = VCR.use_cassette('key') do
37
- test_client.key project_id, key_id, disable_references: 0
37
+ test_client.key project_id, 44_596_066, disable_references: 0
38
38
  end
39
39
 
40
- expect(key.key_id).to eq(key_id)
41
- expect(key.created_at).to eq('2018-12-03 19:11:30 (Etc/UTC)')
42
- expect(key.key_name['ios']).to eq('test')
43
- 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')
44
47
  expect(key.description).to eq('')
45
48
  expect(key.platforms).to eq(%w[web])
46
49
  expect(key.tags).to eq([])
47
- expect(key.comments.first['comment']).to eq('demo comment')
48
- expect(key.comments[1]['comment_id']).to eq(800_632)
50
+ expect(key.comments).to eq([])
49
51
  expect(key.screenshots).to eq([])
50
52
  expect(key.translations.first['modified_by_email']).to eq('bodrovis@protonmail.com')
51
53
  expect(key.is_plural).to eq(false)
52
54
  expect(key.plural_name).to eq('')
53
- expect(key.is_hidden).to eq(false)
55
+ expect(key.is_hidden).to eq(true)
54
56
  expect(key.is_archived).to eq(false)
55
57
  expect(key.context).to eq('')
58
+ expect(key.base_words).to eq(1)
56
59
  expect(key.char_limit).to eq(0)
57
60
  expect(key.custom_attributes).to eq('')
58
- 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)
59
65
  end
60
66
 
61
67
  specify '#reload_data' do
62
68
  key = VCR.use_cassette('key') do
63
- test_client.key project_id, key_id, disable_references: 0
69
+ test_client.key project_id, 44_596_066, disable_references: 0
64
70
  end
65
71
 
66
72
  reloaded_key = VCR.use_cassette('key') do
@@ -63,6 +63,18 @@ RSpec.describe Lokalise::Client do
63
63
  expect(language.plural_forms).to eq(%w[one other])
64
64
  end
65
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
+
66
78
  specify '#create_languages' do
67
79
  language = VCR.use_cassette('create_languages') do
68
80
  test_client.create_languages project_id, lang_iso: 'ab', custom_name: 'rspec lang'
@@ -7,9 +7,10 @@ RSpec.describe Lokalise::Client do
7
7
  it 'returns all payment cards' do
8
8
  cards = VCR.use_cassette('all_payment_cards') do
9
9
  test_client.payment_cards
10
- end.collection
10
+ end
11
11
 
12
- card = cards.first
12
+ expect(cards.user_id).to eq(20_181)
13
+ card = cards.collection.first
13
14
  expect(card.card_id).to eq(1774)
14
15
  expect(card.last4).to eq('0358')
15
16
  end
@@ -49,6 +50,7 @@ RSpec.describe Lokalise::Client do
49
50
  test_client.payment_card card_id
50
51
  end
51
52
 
53
+ expect(card.user_id).to eq(20_181)
52
54
  expect(card.card_id).to eq(card_id)
53
55
  expect(card.brand).to eq('Visa')
54
56
  expect(card.last4).to eq('4242')
@@ -3,7 +3,7 @@
3
3
  RSpec.describe Lokalise::Client do
4
4
  let(:project_id) { '803826145ba90b42d5d860.46800099' }
5
5
  let(:process_id) { '3b943469e6b3e324b5bdad639b122a623e6e7a1a' }
6
- let(:queued_process_id) { 'ff1876382b7ba81f2bb465da8f030196ec401fa6' }
6
+ let(:queued_process_id) { '85c42bf5eff44648ca2f01f9db67b7d306a2f282' }
7
7
 
8
8
  describe '#queued_processes' do
9
9
  it 'returns all queued processes' do
@@ -13,7 +13,6 @@ RSpec.describe Lokalise::Client do
13
13
 
14
14
  expect(processes.branch).to eq('master')
15
15
  processes = processes.collection
16
- puts processes.count
17
16
  expect(processes.count).to eq(8)
18
17
  expect(processes.first.process_id).to eq(process_id)
19
18
  end
@@ -45,7 +44,7 @@ RSpec.describe Lokalise::Client do
45
44
  test_client.queued_process project_id, queued_process_id
46
45
  end
47
46
 
48
- expect(queued_process.status).to eq('queued')
47
+ expect(queued_process.status).to eq('finished')
49
48
 
50
49
  reloaded_process = VCR.use_cassette('upload_file_queued_reload') do
51
50
  queued_process.reload_data
@@ -45,6 +45,11 @@ RSpec.describe Lokalise::Client do
45
45
  expect(group.team_id).to eq(team_id)
46
46
  expect(group.projects.first).to eq('803826145ba90b42d5d860.46800099')
47
47
  expect(group.members[1]).to eq(25_753)
48
+
49
+ reloaded_group = VCR.use_cassette('team_user_group') do
50
+ group.reload_data
51
+ end
52
+ expect(reloaded_group.group_id).to eq(group.group_id)
48
53
  end
49
54
 
50
55
  specify '#create_team_user_group' do
@@ -60,6 +65,11 @@ RSpec.describe Lokalise::Client do
60
65
 
61
66
  expect(group.name).to eq('RSpec group')
62
67
  expect(group.team_id).to eq(team_id)
68
+
69
+ reloaded_group = VCR.use_cassette('created_team_user_group') do
70
+ group.reload_data
71
+ end
72
+ expect(reloaded_group.group_id).to eq(group.group_id)
63
73
  end
64
74
 
65
75
  specify '#update_team_user_group' do
@@ -91,6 +101,16 @@ RSpec.describe Lokalise::Client do
91
101
  expect(group.team_id).to eq(team_id)
92
102
  expect(group.group_id).to eq(third_group_id)
93
103
  expect(group.projects).to include(project_id)
104
+
105
+ reloaded_group = VCR.use_cassette('another_team_user_group') do
106
+ group.reload_data
107
+ end
108
+ expect(reloaded_group.group_id).to eq(group.group_id)
109
+
110
+ group = VCR.use_cassette('add_projects_to_group') do
111
+ group.add_projects projects: [project_id]
112
+ end
113
+ expect(group.group_id).to eq(third_group_id)
94
114
  end
95
115
 
96
116
  specify '#remove_projects_from_group' do
@@ -101,6 +121,16 @@ RSpec.describe Lokalise::Client do
101
121
  expect(group.group_id).to eq(third_group_id)
102
122
  expect(group.team_id).to eq(team_id)
103
123
  expect(group.projects).to be_empty
124
+
125
+ reloaded_group = VCR.use_cassette('another_team_user_group') do
126
+ group.reload_data
127
+ end
128
+ expect(reloaded_group.group_id).to eq(group.group_id)
129
+
130
+ group = VCR.use_cassette('remove_projects_from_group') do
131
+ group.remove_projects projects: [project_id]
132
+ end
133
+ expect(group.group_id).to eq(third_group_id)
104
134
  end
105
135
 
106
136
  specify '#add_users_to_group' do
@@ -111,6 +141,15 @@ RSpec.describe Lokalise::Client do
111
141
  expect(group.team_id).to eq(team_id)
112
142
  expect(group.group_id).to eq(third_group_id)
113
143
  expect(group.members).to include(user_id)
144
+
145
+ reloaded_group = VCR.use_cassette('another_team_user_group') do
146
+ group.reload_data
147
+ end
148
+ expect(reloaded_group.group_id).to eq(group.group_id)
149
+
150
+ group = VCR.use_cassette('add_users_to_group') do
151
+ group.add_users users: [user_id]
152
+ end
114
153
  end
115
154
 
116
155
  specify '#remove_users_from_group' do
@@ -121,6 +160,15 @@ RSpec.describe Lokalise::Client do
121
160
  expect(group.group_id).to eq(third_group_id)
122
161
  expect(group.team_id).to eq(team_id)
123
162
  expect(group.members).to be_empty
163
+
164
+ reloaded_group = VCR.use_cassette('another_team_user_group') do
165
+ group.reload_data
166
+ end
167
+ expect(reloaded_group.group_id).to eq(group.group_id)
168
+
169
+ group = VCR.use_cassette('remove_users_from_group') do
170
+ group.remove_users users: [user_id]
171
+ end
124
172
  end
125
173
 
126
174
  context 'when team user group methods are chained' do
@@ -160,6 +208,15 @@ RSpec.describe Lokalise::Client do
160
208
  expect(group.group_id).to eq(group_id)
161
209
  expect(group.projects).to include(another_project_id)
162
210
 
211
+ group = VCR.use_cassette('add_project_to_group_chained') do
212
+ group.add_projects(projects: [another_project_id])
213
+ end
214
+
215
+ reloaded_group = VCR.use_cassette('team_user_group') do
216
+ group.reload_data
217
+ end
218
+ expect(reloaded_group.group_id).to eq(group.group_id)
219
+
163
220
  group = VCR.use_cassette('remove_project_from_group_chained') do
164
221
  group.remove_projects(projects: [another_project_id])
165
222
  end
@@ -167,6 +224,15 @@ RSpec.describe Lokalise::Client do
167
224
  expect(group.team_id).to eq(team_id)
168
225
  expect(group.group_id).to eq(group_id)
169
226
  expect(group.projects).not_to include(another_project_id)
227
+
228
+ group = VCR.use_cassette('remove_project_from_group_chained') do
229
+ group.remove_projects(projects: [another_project_id])
230
+ end
231
+
232
+ reloaded_group = VCR.use_cassette('team_user_group') do
233
+ group.reload_data
234
+ end
235
+ expect(reloaded_group.group_id).to eq(group.group_id)
170
236
  end
171
237
 
172
238
  it 'supports users management' do
@@ -182,6 +248,15 @@ RSpec.describe Lokalise::Client do
182
248
  expect(group.group_id).to eq(group_id)
183
249
  expect(group.members).to include(user_id)
184
250
 
251
+ group = VCR.use_cassette('add_user_to_group_chained') do
252
+ group.add_users(users: [user_id])
253
+ end
254
+
255
+ reloaded_group = VCR.use_cassette('team_user_group') do
256
+ group.reload_data
257
+ end
258
+ expect(reloaded_group.group_id).to eq(group.group_id)
259
+
185
260
  group = VCR.use_cassette('remove_user_from_group_chained') do
186
261
  group.remove_users(users: [user_id])
187
262
  end
@@ -189,6 +264,15 @@ RSpec.describe Lokalise::Client do
189
264
  expect(group.team_id).to eq(team_id)
190
265
  expect(group.group_id).to eq(group_id)
191
266
  expect(group.members).not_to include(user_id)
267
+
268
+ group = VCR.use_cassette('remove_user_from_group_chained') do
269
+ group.remove_users(users: [user_id])
270
+ end
271
+
272
+ reloaded_group = VCR.use_cassette('team_user_group') do
273
+ group.reload_data
274
+ end
275
+ expect(reloaded_group.group_id).to eq(group.group_id)
192
276
  end
193
277
  end
194
278
  end
@@ -33,6 +33,7 @@ RSpec.describe Lokalise::Client do
33
33
  test_client.team_user team_id, '20181'
34
34
  end
35
35
 
36
+ expect(team_user.team_id).to eq(team_id)
36
37
  expect(team_user.user_id).to eq(20_181)
37
38
  expect(team_user.email).to eq('bodrovis@protonmail.com')
38
39
  expect(team_user.fullname).to eq('Ilya B')
@@ -39,5 +39,10 @@ RSpec.describe Lokalise::Client do
39
39
  expect(provider.description.start_with?('At')).to eq(true)
40
40
  expect(provider.tiers.first['title']).to eq('Native speaker')
41
41
  expect(provider.pairs.first['price_per_word']).to eq('0.05')
42
+
43
+ reloaded_provider = VCR.use_cassette('translation_provider') do
44
+ provider.reload_data
45
+ end
46
+ expect(reloaded_provider.provider_id).to eq(provider.provider_id)
42
47
  end
43
48
  end
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: 3.0.0
4
+ version: 3.1.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: 2020-05-18 00:00:00.000000000 Z
11
+ date: 2020-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '5.0'
187
+ version: '6.0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '5.0'
194
+ version: '6.0'
195
195
  description: Opinionated Ruby client for the Lokalise platform API allowing to work
196
196
  with translations, projects, users and other resources as with Ruby objects.
197
197
  email:
@@ -334,7 +334,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
334
334
  - !ruby/object:Gem::Version
335
335
  version: '0'
336
336
  requirements: []
337
- rubygems_version: 3.1.3
337
+ rubygems_version: 3.1.4
338
338
  signing_key:
339
339
  specification_version: 4
340
340
  summary: Ruby interface to the Lokalise API