pixi_client 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4e906af2abeefa982eba85ec8af7252d18b32b1
4
- data.tar.gz: 978ae4cf6668ed4059eab66cb7e6e46e2bda9197
3
+ metadata.gz: 79ab279f8283d407ffc3a8f93124c1f52b6e2bfb
4
+ data.tar.gz: 246c56375ce95f560cecd12aa669aacfc9be98ec
5
5
  SHA512:
6
- metadata.gz: 13fbd1caeeb20063f636971f48f3593de23b0daeea68fee89f8a4969c59026814abd88cca442a056c68d63b0b9164a1e44ad860cf5f1bc50eecd4ffa4fd0a005
7
- data.tar.gz: f648ce0eb0035836a6600dcbbd0a192a5ea164f1afbb0b50860c7ac23916acb85fed744eba7ba675fb05ceeb0bc69e34cc764754d86187bd0b996cfcc5b978e3
6
+ metadata.gz: 8c647a3c2a06b0c04589df953e2e4169a50e44b71c16f8a2c1520ed246a43c04435300de8007b137324bf3738c65c6d4556ebefedeef868a551e7e58a8d25969
7
+ data.tar.gz: d134a39d8621b889ee016cb458f4697efb4e2761254c308cc2f3a3a2e31e0fce72512a4b6d0d9542439eeb1bca4c3cdb90116752130ec1fd7fd9f45a48b82437
data/README.md CHANGED
@@ -46,9 +46,23 @@ Or install it yourself as:
46
46
 
47
47
  ### Configuration
48
48
 
49
- #### Rails
49
+ #### Rails (with cached wsdl document)
50
50
 
51
- config/initializers/pixi_client.rb
51
+
52
+ run ```bundle exec rake pixi_client:download_wsdl``` in your Rails app root and add the following initializer to the project.
53
+
54
+ ```ruby
55
+ PixiClient.configure do |config|
56
+ config.endpoint = <your_pixi_endpoing_url>
57
+ config.username = <your_pixi_username>
58
+ config.password = <your_pixi_password>
59
+ config.wsdl = "#{Rails.root}/config/pixi_client.wsdl"
60
+ end
61
+ ```
62
+
63
+ #### Rails (with remote wsdl document)
64
+
65
+ If you don't want to cache the ```wsdl``` you can omit that variable in the initializer. The gem will then download the wdsl document at each request and your configuration will look like:
52
66
 
53
67
  ```ruby
54
68
  PixiClient.configure do |config|
@@ -58,6 +72,7 @@ PixiClient.configure do |config|
58
72
  end
59
73
  ```
60
74
 
75
+
61
76
  ### Example of usage
62
77
 
63
78
  To have a list of the implemented requests, have a look to the lib/requests folder.
@@ -1,8 +1,10 @@
1
1
  require 'pixi_client/version'
2
+ require 'pixi_client/error'
2
3
  require 'pixi_client/configuration'
3
4
  require 'pixi_client/response_parser'
4
5
  require 'pixi_client/response'
5
6
  require 'pixi_client/requests'
7
+ require 'pixi_client/railtie' if defined?(Rails)
6
8
 
7
9
  module PixiClient
8
10
  class << self
@@ -1,5 +1,11 @@
1
1
  module PixiClient
2
2
  class Configuration
3
- attr_accessor :endpoint, :username, :password
3
+ attr_accessor :endpoint, :username, :password, :wsdl
4
+
5
+ def wsdl_document
6
+ wsdl || endpoint || raise(PixiClient::Error.new("A 'wsdl' or 'endpoint' must be configured"))
7
+ wsdl ? wsdl : endpoint + '?wsdl'
8
+ end
9
+
4
10
  end
5
11
  end
@@ -0,0 +1,4 @@
1
+ module PixiClient
2
+ class Error < StandardError
3
+ end
4
+ end
@@ -0,0 +1,11 @@
1
+ require 'rails'
2
+
3
+ module PixiClientRailtie
4
+ class Railtie < Rails::Railtie
5
+ railtie_name :pixi_client
6
+
7
+ rake_tasks do
8
+ load 'tasks/pixi_client.rake'
9
+ end
10
+ end
11
+ end
@@ -9,6 +9,7 @@ require 'pixi_client/requests/get_invoice'
9
9
  require 'pixi_client/requests/get_item_info'
10
10
  require 'pixi_client/requests/get_order_comments'
11
11
  require 'pixi_client/requests/set_stock_multiple'
12
+ require 'pixi_client/requests/get_item_stock'
12
13
  require 'pixi_client/requests/get_item_stock_bins'
13
14
  require 'pixi_client/requests/get_items_info'
14
15
  require 'pixi_client/requests/get_items_on_stock_bin'
@@ -15,7 +15,9 @@ module PixiClient
15
15
 
16
16
  def client
17
17
  @client ||= Savon.client(
18
- wsdl: PixiClient.configuration.endpoint + '?wsdl',
18
+ wsdl: PixiClient.configuration.wsdl_document,
19
+ open_timeout: 300,
20
+ read_timeout: 300,
19
21
  ssl_verify_mode: :none,
20
22
  basic_auth: [PixiClient.configuration.username, PixiClient.configuration.password]
21
23
  )
@@ -0,0 +1,23 @@
1
+ module PixiClient
2
+ module Requests
3
+ class GetItemStock < Base
4
+ include Itemable
5
+
6
+ attr_accessor :item_id_key, :item_id
7
+
8
+ def initialize(item_id_key, item_id)
9
+ self.item_id_key = item_id_key
10
+ self.item_id = item_id
11
+ end
12
+
13
+ def message
14
+ { item_id_key_to_param => item_id, 'LocationStock' => 1}
15
+ end
16
+
17
+ def api_method
18
+ :pixi_get_item_stock
19
+ end
20
+ end
21
+ end
22
+ end
23
+
@@ -1,3 +1,3 @@
1
1
  module PixiClient
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -0,0 +1,24 @@
1
+ require 'open-uri'
2
+ require 'openssl'
3
+
4
+ namespace :pixi_client do
5
+ desc 'Create the file config/pixi_client.wsdl'
6
+ task :download_wsdl do
7
+ config = YAML.load_file(File.join([Rails.root, 'config', 'pixi.yml']))[Rails.env]
8
+
9
+ OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE # needed due to the context
10
+
11
+ File.open('config/pixi_client.wsdl', "wb") do |wsdl_file|
12
+ # the following "open" is provided by open-uri
13
+ open(config['url'] + '?wsdl',
14
+ http_basic_authentication: [config['username'], config['password']]) do |document|
15
+ wsdl_file.write(document.read)
16
+ puts 'file downloaded in config/pixi_client.wsdl'
17
+ end
18
+ end
19
+
20
+ end
21
+
22
+ task :install => [:download_wsdl] do
23
+ end
24
+ end
@@ -11,6 +11,12 @@ describe PixiClient::Configuration do
11
11
  end
12
12
  end
13
13
 
14
+ describe '#wsdl' do
15
+ it 'should be nil' do
16
+ expect(subject.wsdl).to be_nil
17
+ end
18
+ end
19
+
14
20
  describe '#username' do
15
21
  it 'should be nil' do
16
22
  expect(subject.username).to be_nil
@@ -22,12 +28,39 @@ describe PixiClient::Configuration do
22
28
  expect(subject.password).to be_nil
23
29
  end
24
30
  end
31
+
32
+ describe '#wsdl_document' do
33
+ it 'should raise an error' do
34
+ expect {
35
+ subject.wsdl_document
36
+ }.to raise_error(PixiClient::Error, "A 'wsdl' or 'endpoint' must be configured")
37
+ end
38
+ end
25
39
  end
26
40
 
27
- describe '#endpoint=' do
28
- it 'sets the endpoint' do
29
- subject.endpoint = 'endpoint_url'
30
- expect(subject.endpoint).to eq 'endpoint_url'
41
+ describe '#wsdl_document' do
42
+ context 'when and endpoint is set' do
43
+ it 'returns the remote wsdl document' do
44
+ subject.endpoint = 'endpoint_url'
45
+ subject.wsdl = nil
46
+ expect(subject.wsdl_document).to eq('endpoint_url?wsdl')
47
+ end
48
+ end
49
+ context 'when and wsdl file is set' do
50
+ it 'returns the local wsdl document' do
51
+ subject.endpoint = nil
52
+ subject.wsdl = 'path/to/endpoint.xml'
53
+ expect(subject.wsdl_document).to eq('path/to/endpoint.xml')
54
+ end
55
+ end
56
+ context 'when no wsdl or file is set' do
57
+ it 'raises an error' do
58
+ subject.endpoint = nil
59
+ subject.wsdl = nil
60
+ expect {
61
+ subject.wsdl_document
62
+ }.to raise_error(PixiClient::Error, "A 'wsdl' or 'endpoint' must be configured")
63
+ end
31
64
  end
32
65
  end
33
66
 
@@ -38,6 +71,13 @@ describe PixiClient::Configuration do
38
71
  end
39
72
  end
40
73
 
74
+ describe '#wsdl=' do
75
+ it 'sets the wsdl' do
76
+ subject.wsdl = 'wsdl_set'
77
+ expect(subject.wsdl).to eq 'wsdl_set'
78
+ end
79
+ end
80
+
41
81
  describe '#password=' do
42
82
  it 'sets the password' do
43
83
  subject.password = 'random-password'
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe PixiClient::Error do
4
+
5
+ subject { PixiClient::Error.new }
6
+
7
+ it 'should accept a message' do
8
+ begin
9
+ raise PixiClient::Error.new('Something happend')
10
+ rescue => e
11
+ expect(e.class).to eq(PixiClient::Error)
12
+ expect(e.message).to eq('Something happend')
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe PixiClient::Requests::GetItemStock do
4
+
5
+ subject { PixiClient::Requests::GetItemStock.new(:ean, 1) }
6
+
7
+ before do
8
+ set_default_config
9
+ end
10
+
11
+ it { is_expected.to be_a_kind_of(PixiClient::Requests::Base) }
12
+
13
+ describe '#api_method' do
14
+ it 'should return :pixi_get_item_stock' do
15
+ expect(subject.api_method).to eq :pixi_get_item_stock
16
+ end
17
+ end
18
+
19
+ describe 'call behaviour' do
20
+ let(:expected_response) { double(body: { pixi_get_item_stock_response: { pixi_get_item_stock_result: sql_row_set_response_mock } }) }
21
+ let(:double_client) { double }
22
+
23
+ before do
24
+ allow(subject).to receive(:client).and_return(double_client)
25
+ end
26
+
27
+ it 'should call the client with the appropriate parameters' do
28
+ expect(double_client).to receive(:call)
29
+ .with(:pixi_get_item_stock, attributes: { xmlns: PixiClient.configuration.endpoint }, message: { 'EAN' => 1, "LocationStock"=>1 })
30
+ .and_return(expected_response)
31
+
32
+ subject.call
33
+ end
34
+
35
+ it 'should instanciate an instance of Response with the response body' do
36
+ expect(double_client).to receive(:call).and_return(expected_response)
37
+ expect(PixiClient::Response).to receive(:new).with(:pixi_get_item_stock, expected_response.body)
38
+ subject.call
39
+ end
40
+
41
+ it 'should return an instance of Response' do
42
+ expect(double_client).to receive(:call).and_return(expected_response)
43
+ expect(subject.call).to be_an_instance_of(PixiClient::Response)
44
+ end
45
+ end
46
+
47
+ end
@@ -6,6 +6,7 @@ describe PixiClient do
6
6
  configuration.endpoint = 'endpoint'
7
7
  configuration.username = 'username'
8
8
  configuration.password = 'random-password'
9
+ configuration.wsdl = 'some/path/somewhere.wsdl'
9
10
  end
10
11
  end
11
12
 
@@ -14,6 +15,7 @@ describe PixiClient do
14
15
  expect(PixiClient.configuration.endpoint).to eq 'endpoint'
15
16
  expect(PixiClient.configuration.username).to eq 'username'
16
17
  expect(PixiClient.configuration.password).to eq 'random-password'
18
+ expect(PixiClient.configuration.wsdl).to eq 'some/path/somewhere.wsdl'
17
19
  end
18
20
  end
19
21
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pixi_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - heragu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-10 00:00:00.000000000 Z
11
+ date: 2016-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: savon
@@ -180,6 +180,8 @@ files:
180
180
  - Rakefile
181
181
  - lib/pixi_client.rb
182
182
  - lib/pixi_client/configuration.rb
183
+ - lib/pixi_client/error.rb
184
+ - lib/pixi_client/railtie.rb
183
185
  - lib/pixi_client/requests.rb
184
186
  - lib/pixi_client/requests/add_comment_to_order.rb
185
187
  - lib/pixi_client/requests/base.rb
@@ -189,6 +191,7 @@ files:
189
191
  - lib/pixi_client/requests/get_changed_items.rb
190
192
  - lib/pixi_client/requests/get_invoice.rb
191
193
  - lib/pixi_client/requests/get_item_info.rb
194
+ - lib/pixi_client/requests/get_item_stock.rb
192
195
  - lib/pixi_client/requests/get_item_stock_bins.rb
193
196
  - lib/pixi_client/requests/get_items_info.rb
194
197
  - lib/pixi_client/requests/get_items_on_stock_bin.rb
@@ -210,11 +213,13 @@ files:
210
213
  - lib/pixi_client/response.rb
211
214
  - lib/pixi_client/response_parser.rb
212
215
  - lib/pixi_client/version.rb
216
+ - lib/tasks/pixi_client.rake
213
217
  - pixi_client.gemspec
214
218
  - spec/fixtures/get_order_nr_external_by_box_nr.xml
215
219
  - spec/fixtures/pixi_get_changed_item_stock.xml
216
220
  - spec/integration/pixi_get_changed_item_stock_spec.rb
217
221
  - spec/lib/pixi_client/configuration_spec.rb
222
+ - spec/lib/pixi_client/error_spec.rb
218
223
  - spec/lib/pixi_client/requests/add_comment_to_order_spec.rb
219
224
  - spec/lib/pixi_client/requests/cancel_order_line_spec.rb
220
225
  - spec/lib/pixi_client/requests/cancel_order_spec.rb
@@ -223,6 +228,7 @@ files:
223
228
  - spec/lib/pixi_client/requests/get_invoice_spec.rb
224
229
  - spec/lib/pixi_client/requests/get_item_info_spec.rb
225
230
  - spec/lib/pixi_client/requests/get_item_stock_bins_spec.rb
231
+ - spec/lib/pixi_client/requests/get_item_stock_spec.rb
226
232
  - spec/lib/pixi_client/requests/get_items_info_spec.rb
227
233
  - spec/lib/pixi_client/requests/get_items_on_stock_bin_spec.rb
228
234
  - spec/lib/pixi_client/requests/get_items_stock_history_spec.rb
@@ -265,7 +271,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
271
  version: '0'
266
272
  requirements: []
267
273
  rubyforge_project:
268
- rubygems_version: 2.4.8
274
+ rubygems_version: 2.5.1
269
275
  signing_key:
270
276
  specification_version: 4
271
277
  summary: SOAP Pixi* API client
@@ -274,6 +280,7 @@ test_files:
274
280
  - spec/fixtures/pixi_get_changed_item_stock.xml
275
281
  - spec/integration/pixi_get_changed_item_stock_spec.rb
276
282
  - spec/lib/pixi_client/configuration_spec.rb
283
+ - spec/lib/pixi_client/error_spec.rb
277
284
  - spec/lib/pixi_client/requests/add_comment_to_order_spec.rb
278
285
  - spec/lib/pixi_client/requests/cancel_order_line_spec.rb
279
286
  - spec/lib/pixi_client/requests/cancel_order_spec.rb
@@ -282,6 +289,7 @@ test_files:
282
289
  - spec/lib/pixi_client/requests/get_invoice_spec.rb
283
290
  - spec/lib/pixi_client/requests/get_item_info_spec.rb
284
291
  - spec/lib/pixi_client/requests/get_item_stock_bins_spec.rb
292
+ - spec/lib/pixi_client/requests/get_item_stock_spec.rb
285
293
  - spec/lib/pixi_client/requests/get_items_info_spec.rb
286
294
  - spec/lib/pixi_client/requests/get_items_on_stock_bin_spec.rb
287
295
  - spec/lib/pixi_client/requests/get_items_stock_history_spec.rb