pixi_client 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +34 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/Guardfile +45 -0
- data/LICENSE.txt +22 -0
- data/README.md +171 -0
- data/Rakefile +8 -0
- data/lib/pixi_client/configuration.rb +5 -0
- data/lib/pixi_client/requests/add_comment_to_order.rb +20 -0
- data/lib/pixi_client/requests/base.rb +25 -0
- data/lib/pixi_client/requests/cancel_order.rb +19 -0
- data/lib/pixi_client/requests/cancel_order_line.rb +19 -0
- data/lib/pixi_client/requests/get_changed_item_stock.rb +27 -0
- data/lib/pixi_client/requests/get_changed_items.rb +19 -0
- data/lib/pixi_client/requests/get_invoice.rb +19 -0
- data/lib/pixi_client/requests/get_item_info.rb +19 -0
- data/lib/pixi_client/requests/get_item_stock_bins.rb +18 -0
- data/lib/pixi_client/requests/get_items_info.rb +34 -0
- data/lib/pixi_client/requests/get_items_on_stock_bin.rb +19 -0
- data/lib/pixi_client/requests/get_items_stock_history.rb +18 -0
- data/lib/pixi_client/requests/get_order_comments.rb +19 -0
- data/lib/pixi_client/requests/get_order_header.rb +19 -0
- data/lib/pixi_client/requests/get_order_line_history.rb +22 -0
- data/lib/pixi_client/requests/get_order_lines.rb +21 -0
- data/lib/pixi_client/requests/get_order_nr_external_by_box_nr.rb +19 -0
- data/lib/pixi_client/requests/get_stock.rb +19 -0
- data/lib/pixi_client/requests/get_stock_by_bin.rb +19 -0
- data/lib/pixi_client/requests/get_unshippable_orders.rb +19 -0
- data/lib/pixi_client/requests/itemable.rb +24 -0
- data/lib/pixi_client/requests/read_items.rb +23 -0
- data/lib/pixi_client/requests/read_orderlines.rb +18 -0
- data/lib/pixi_client/requests/set_stock_multiple.rb +19 -0
- data/lib/pixi_client/requests/shipping_get_picklist_details.rb +19 -0
- data/lib/pixi_client/requests/shipping_get_picklist_headers.rb +19 -0
- data/lib/pixi_client/requests.rb +27 -0
- data/lib/pixi_client/response.rb +12 -0
- data/lib/pixi_client/response_parser.rb +137 -0
- data/lib/pixi_client/version.rb +3 -0
- data/lib/pixi_client.rb +17 -0
- data/pixi_client.gemspec +32 -0
- data/spec/fixtures/get_order_nr_external_by_box_nr.xml +51 -0
- data/spec/fixtures/pixi_get_changed_item_stock.xml +140 -0
- data/spec/integration/pixi_get_changed_item_stock_spec.rb +85 -0
- data/spec/lib/pixi_client/configuration_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/add_comment_to_order_spec.rb +48 -0
- data/spec/lib/pixi_client/requests/cancel_order_line_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/cancel_order_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/get_changed_item_stock_spec.rb +61 -0
- data/spec/lib/pixi_client/requests/get_changed_items_spec.rb +54 -0
- data/spec/lib/pixi_client/requests/get_invoice_spec.rb +46 -0
- data/spec/lib/pixi_client/requests/get_item_info_spec.rb +48 -0
- data/spec/lib/pixi_client/requests/get_item_stock_bins_spec.rb +48 -0
- data/spec/lib/pixi_client/requests/get_items_info_spec.rb +60 -0
- data/spec/lib/pixi_client/requests/get_items_on_stock_bin_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/get_items_stock_history_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/get_order_comments_spec.rb +46 -0
- data/spec/lib/pixi_client/requests/get_order_header_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/get_order_line_history_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/get_order_lines_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/get_order_nr_external_by_box_nr_spec.rb +51 -0
- data/spec/lib/pixi_client/requests/get_stock_by_bin_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/get_stock_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/get_unshippable_orders_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/itemable_shared_examples.rb +52 -0
- data/spec/lib/pixi_client/requests/read_items_spec.rb +56 -0
- data/spec/lib/pixi_client/requests/read_orderlines_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/set_stock_multiple_spec.rb +53 -0
- data/spec/lib/pixi_client/requests/shipping_get_picklist_details_spec.rb +47 -0
- data/spec/lib/pixi_client/requests/shipping_get_picklist_headers_spec.rb +47 -0
- data/spec/lib/pixi_client/response_parser_spec.rb +96 -0
- data/spec/lib/pixi_client/soap_request_spec.rb +30 -0
- data/spec/lib/pixi_client_spec.rb +19 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/support/test_helpers.rb +136 -0
- metadata +306 -0
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'savon'
|
3
|
+
require 'savon/mock/spec_helper'
|
4
|
+
|
5
|
+
describe 'pixiGetChangedItemStock' do
|
6
|
+
include Savon::SpecHelper
|
7
|
+
|
8
|
+
before(:all) do
|
9
|
+
set_default_config
|
10
|
+
savon.mock!
|
11
|
+
end
|
12
|
+
|
13
|
+
after(:all) { savon.unmock! }
|
14
|
+
|
15
|
+
let(:christmas_time) { Time.parse('2014-12-25 00:00:00') }
|
16
|
+
let(:request) { PixiClient::Requests::GetChangedItemStock.new(since: christmas_time) }
|
17
|
+
|
18
|
+
context 'when the response is not empty' do
|
19
|
+
before do
|
20
|
+
savon.
|
21
|
+
expects(:pixi_get_changed_item_stock).
|
22
|
+
with(message: { 'Since' => christmas_time.strftime('%Y-%m-%dT%H:%M:%S.%3N') }).
|
23
|
+
returns(File.read('spec/fixtures/pixi_get_changed_item_stock.xml')) # See file for data details
|
24
|
+
end
|
25
|
+
|
26
|
+
let(:response) { request.call }
|
27
|
+
|
28
|
+
it 'responds with the expected 3 rows' do
|
29
|
+
|
30
|
+
expected_rows = [
|
31
|
+
OpenStruct.new(item_key: 92664,
|
32
|
+
item_nr_int: '117843-102-8',
|
33
|
+
eanupc: '0117843102089',
|
34
|
+
item_nr_suppl: '6017 1550',
|
35
|
+
physical_stock: 9,
|
36
|
+
available_stock: 8,
|
37
|
+
stock_change: 9,
|
38
|
+
estimated_delivery: '',
|
39
|
+
min_stock_qty: 0,
|
40
|
+
enabled: true,
|
41
|
+
open_supplier_order_qty: 0,
|
42
|
+
update_date: Time.parse('2014-12-23T13:25:02 +00:00'),
|
43
|
+
original_update_date: Time.parse('2014-12-23T13:25:02 +00:00'),
|
44
|
+
bundle_item: false,
|
45
|
+
row_nr: 1),
|
46
|
+
|
47
|
+
OpenStruct.new(item_key: 2071,
|
48
|
+
item_nr_int: '112852-704-1',
|
49
|
+
eanupc: '0112852704019',
|
50
|
+
item_nr_suppl: '857819996210',
|
51
|
+
physical_stock: 17,
|
52
|
+
available_stock: 17,
|
53
|
+
stock_change: 17,
|
54
|
+
estimated_delivery: '',
|
55
|
+
min_stock_qty: 0,
|
56
|
+
enabled: true,
|
57
|
+
open_supplier_order_qty: 0,
|
58
|
+
update_date: Time.parse('2014-12-23T15:00:01 +00:00'),
|
59
|
+
original_update_date: Time.parse('2014-12-23T15:00:01 +00:00'),
|
60
|
+
bundle_item: false,
|
61
|
+
row_nr: 2),
|
62
|
+
|
63
|
+
OpenStruct.new(item_key: 102032,
|
64
|
+
item_nr_int: '207904-504-1',
|
65
|
+
eanupc: '0207904504010',
|
66
|
+
item_nr_suppl: 'W8538Q',
|
67
|
+
physical_stock: 1,
|
68
|
+
available_stock: 1,
|
69
|
+
stock_change: 1,
|
70
|
+
estimated_delivery: '',
|
71
|
+
min_stock_qty: 0,
|
72
|
+
enabled: true,
|
73
|
+
open_supplier_order_qty: 0,
|
74
|
+
update_date: Time.parse('2014-12-23T17:51:02 +00:00'),
|
75
|
+
original_update_date: Time.parse('2014-12-23T17:51:02 +00:00'),
|
76
|
+
bundle_item: false,
|
77
|
+
row_nr: 3)
|
78
|
+
]
|
79
|
+
|
80
|
+
expect(response.rows).to eq expected_rows
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PixiClient::Configuration do
|
4
|
+
|
5
|
+
subject { PixiClient::Configuration.new }
|
6
|
+
|
7
|
+
describe 'default values' do
|
8
|
+
describe '#endpoint' do
|
9
|
+
it 'should be nil' do
|
10
|
+
expect(subject.endpoint).to be_nil
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#username' do
|
15
|
+
it 'should be nil' do
|
16
|
+
expect(subject.username).to be_nil
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#password' do
|
21
|
+
it 'should be nil' do
|
22
|
+
expect(subject.password).to be_nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '#endpoint=' do
|
28
|
+
it 'sets the endpoint' do
|
29
|
+
subject.endpoint = 'endpoint_url'
|
30
|
+
expect(subject.endpoint).to eq 'endpoint_url'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#username=' do
|
35
|
+
it 'sets the username' do
|
36
|
+
subject.username = 'username'
|
37
|
+
expect(subject.username).to eq 'username'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#password=' do
|
42
|
+
it 'sets the password' do
|
43
|
+
subject.password = 'random-password'
|
44
|
+
expect(subject.password).to eq 'random-password'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PixiClient::Requests::AddCommentToOrder do
|
4
|
+
let(:order_nr) { 1 }
|
5
|
+
let(:comment) { 'Life is too short to learn german' }
|
6
|
+
subject { PixiClient::Requests::AddCommentToOrder.new(order_nr, comment) }
|
7
|
+
|
8
|
+
before do
|
9
|
+
set_default_config
|
10
|
+
end
|
11
|
+
|
12
|
+
it { is_expected.to be_a_kind_of(PixiClient::Requests::Base) }
|
13
|
+
|
14
|
+
describe '#api_method' do
|
15
|
+
it 'should return :pixi_add_order_comment' do
|
16
|
+
expect(subject.api_method).to eq :pixi_add_order_comment
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'call behaviour' do
|
21
|
+
let(:expected_response) { double(body: { pixi_add_order_comment_response: { pixi_add_order_comment_result: sql_row_set_response_mock } }) }
|
22
|
+
let(:double_client) { double }
|
23
|
+
|
24
|
+
before do
|
25
|
+
allow(subject).to receive(:client).and_return(double_client)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should call the client with the appropriate parameters' do
|
29
|
+
expect(double_client).to receive(:call)
|
30
|
+
.with(:pixi_add_order_comment, attributes: { xmlns: PixiClient.configuration.endpoint }, message: { 'OrderNr' => order_nr, 'Comment' => comment })
|
31
|
+
.and_return(expected_response)
|
32
|
+
|
33
|
+
subject.call
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should instanciate an instance of Response with the response body' do
|
37
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
38
|
+
expect(PixiClient::Response).to receive(:new).with(:pixi_add_order_comment, expected_response.body)
|
39
|
+
subject.call
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should return an instance of Response' do
|
43
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
44
|
+
expect(subject.call).to be_an_instance_of(PixiClient::Response)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PixiClient::Requests::CancelOrderLine do
|
4
|
+
let(:order_line_key) { 1 }
|
5
|
+
subject { PixiClient::Requests::CancelOrderLine.new(order_line_key) }
|
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_cancel_orderline' do
|
15
|
+
expect(subject.api_method).to eq :pixi_cancel_orderline
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'call behaviour' do
|
20
|
+
let(:expected_response) { double(body: { pixi_cancel_orderline_response: { pixi_cancel_orderline_result: {} } }) }
|
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_cancel_orderline, attributes: { xmlns: PixiClient.configuration.endpoint }, message: { 'OrderlineKey' => order_line_key }).
|
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_cancel_orderline, 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
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PixiClient::Requests::CancelOrder do
|
4
|
+
let(:order_nr) { 1 }
|
5
|
+
subject { PixiClient::Requests::CancelOrder.new(order_nr) }
|
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_cancel_order' do
|
15
|
+
expect(subject.api_method).to eq :pixi_cancel_order
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'call behaviour' do
|
20
|
+
let(:expected_response) { double(body: { pixi_cancel_order_response: { pixi_cancel_order_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_cancel_order, attributes: { xmlns: PixiClient.configuration.endpoint }, message: { 'OrderNr' => order_nr })
|
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_cancel_order, 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
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PixiClient::Requests::GetChangedItemStock do
|
4
|
+
let(:ts) { Time.parse('2014-12-25 00:00:00') }
|
5
|
+
subject { PixiClient::Requests::GetChangedItemStock.new(since: ts) }
|
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 :get_changed_item_stock' do
|
15
|
+
expect(subject.api_method).to eq :pixi_get_changed_item_stock
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#message' do
|
20
|
+
context 'without row count' do
|
21
|
+
it 'should return a hash in the form {\'Since\' => <timestamp>}' do
|
22
|
+
expect(subject.message).to eq({ 'Since' => ts.strftime('%Y-%m-%dT%H:%M:%S.%3N') })
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'with row count' do
|
27
|
+
it 'should return a hash in the form {\'Since\' => <timestamp>, \'RowCount\' => <count>}' do
|
28
|
+
subject.row_count = 100
|
29
|
+
expect(subject.message).to eq({ 'Since' => ts.strftime('%Y-%m-%dT%H:%M:%S.%3N'), 'RowCount' => 100})
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'call behaviour' do
|
35
|
+
let(:expected_response) { double(body: { pixi_get_changed_item_stock_response: { pixi_get_changed_item_stock_result: sql_row_set_response_mock } }) }
|
36
|
+
let(:double_client) { double }
|
37
|
+
|
38
|
+
before do
|
39
|
+
allow(subject).to receive(:client).and_return(double_client)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should call the client with the appropriate parameters' do
|
43
|
+
expect(double_client).to receive(:call)
|
44
|
+
.with(:pixi_get_changed_item_stock, attributes: { xmlns: PixiClient.configuration.endpoint }, message: { 'Since' => ts.strftime('%Y-%m-%dT%H:%M:%S.%3N') })
|
45
|
+
.and_return(expected_response)
|
46
|
+
|
47
|
+
subject.call
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should instanciate an instance of Response with the response body' do
|
51
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
52
|
+
expect(PixiClient::Response).to receive(:new).with(:pixi_get_changed_item_stock, expected_response.body)
|
53
|
+
subject.call
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'should return an instance of Response' do
|
57
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
58
|
+
expect(subject.call).to be_an_instance_of(PixiClient::Response)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PixiClient::Requests::GetChangedItems do
|
4
|
+
let(:ts) { Time.parse('2014-12-25') }
|
5
|
+
subject { PixiClient::Requests::GetChangedItems.new(since: ts) }
|
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 :get_changed_item_stock' do
|
15
|
+
expect(subject.api_method).to eq :pixi_get_changed_items
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#message' do
|
20
|
+
context 'without row count' do
|
21
|
+
it 'should return a hash in the form {\'Since\' => <timestamp>}' do
|
22
|
+
expect(subject.message).to eq({ 'Since' => ts.strftime('%Y-%m-%dT%H:%M:%S.%3N') })
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'call behaviour' do
|
28
|
+
let(:expected_response) { double(body: { pixi_get_changed_items_response: { pixi_get_changed_items_result: sql_row_set_response_mock } }) }
|
29
|
+
let(:double_client) { double }
|
30
|
+
|
31
|
+
before do
|
32
|
+
allow(subject).to receive(:client).and_return(double_client)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should call the client with the appropriate parameters' do
|
36
|
+
expect(double_client).to receive(:call)
|
37
|
+
.with(:pixi_get_changed_items, attributes: { xmlns: PixiClient.configuration.endpoint }, message: { 'Since' => ts.strftime('%Y-%m-%dT%H:%M:%S.%3N') })
|
38
|
+
.and_return(expected_response)
|
39
|
+
|
40
|
+
subject.call
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should instanciate an instance of Response with the response body' do
|
44
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
45
|
+
expect(PixiClient::Response).to receive(:new).with(:pixi_get_changed_items, expected_response.body)
|
46
|
+
subject.call
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should return an instance of Response' do
|
50
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
51
|
+
expect(subject.call).to be_an_instance_of(PixiClient::Response)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PixiClient::Requests::GetInvoice do
|
4
|
+
subject { PixiClient::Requests::GetInvoice.new('ABC123456') }
|
5
|
+
|
6
|
+
before do
|
7
|
+
set_default_config
|
8
|
+
end
|
9
|
+
|
10
|
+
it { is_expected.to be_a_kind_of(PixiClient::Requests::Base) }
|
11
|
+
|
12
|
+
describe '#api_method' do
|
13
|
+
it 'should return :get_changed_item_stock' do
|
14
|
+
expect(subject.api_method).to eq :pixi_get_invoice
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'call behaviour' do
|
19
|
+
let(:expected_response) { double(body: { pixi_get_invoice_response: { pixi_get_invoice_result: sql_row_set_response_mock } }) }
|
20
|
+
let(:double_client) { double }
|
21
|
+
|
22
|
+
before do
|
23
|
+
allow(subject).to receive(:client).and_return(double_client)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should call the client with the appropriate parameters' do
|
27
|
+
expect(double_client).to receive(:call)
|
28
|
+
.with(:pixi_get_invoice, attributes: { xmlns: PixiClient.configuration.endpoint }, message: { 'InvoiceNr' => 'ABC123456' })
|
29
|
+
.and_return(expected_response)
|
30
|
+
|
31
|
+
subject.call
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should instanciate an instance of GetChangedItemStockResponse with the response body' do
|
35
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
36
|
+
expect(PixiClient::Response).to receive(:new).with(:pixi_get_invoice, expected_response.body)
|
37
|
+
subject.call
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should return an instance of Response' do
|
41
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
42
|
+
expect(subject.call).to be_an_instance_of(PixiClient::Response)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PixiClient::Requests::GetItemInfo do
|
4
|
+
subject { PixiClient::Requests::GetItemInfo.new(:ean, '1234567890123') }
|
5
|
+
|
6
|
+
before do
|
7
|
+
set_default_config
|
8
|
+
end
|
9
|
+
|
10
|
+
it_behaves_like 'itemable'
|
11
|
+
|
12
|
+
it { is_expected.to be_a_kind_of(PixiClient::Requests::Base) }
|
13
|
+
|
14
|
+
describe '#api_method' do
|
15
|
+
it 'should return :get_changed_item_stock' do
|
16
|
+
expect(subject.api_method).to eq :pixi_get_item_info
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'call behaviour' do
|
21
|
+
let(:expected_response) { double(body: { pixi_get_item_info_response: { pixi_get_item_info_result: sql_row_set_response_mock } }) }
|
22
|
+
let(:double_client) { double }
|
23
|
+
|
24
|
+
before do
|
25
|
+
allow(subject).to receive(:client).and_return(double_client)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should call the client with the appropriate parameters' do
|
29
|
+
expect(double_client).to receive(:call)
|
30
|
+
.with(:pixi_get_item_info, attributes: { xmlns: PixiClient.configuration.endpoint }, message: { 'EAN' => '1234567890123' })
|
31
|
+
.and_return(expected_response)
|
32
|
+
|
33
|
+
subject.call
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should instanciate an instance of GetChangedItemStockResponse with the response body' do
|
37
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
38
|
+
expect(PixiClient::Response).to receive(:new).with(:pixi_get_item_info, expected_response.body)
|
39
|
+
subject.call
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should return an instance of Response' do
|
43
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
44
|
+
expect(subject.call).to be_an_instance_of(PixiClient::Response)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PixiClient::Requests::GetItemStockBins do
|
4
|
+
subject { PixiClient::Requests::GetItemStockBins.new(:ean, '1234567890123') }
|
5
|
+
|
6
|
+
before do
|
7
|
+
set_default_config
|
8
|
+
end
|
9
|
+
|
10
|
+
it_behaves_like 'itemable'
|
11
|
+
|
12
|
+
it { is_expected.to be_a_kind_of(PixiClient::Requests::Base) }
|
13
|
+
|
14
|
+
describe '#api_method' do
|
15
|
+
it 'should return :get_changed_item_stock' do
|
16
|
+
expect(subject.api_method).to eq :pixi_get_item_stock_bins
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'call behaviour' do
|
21
|
+
let(:expected_response) { double(body: { pixi_get_item_stock_bins_response: { pixi_get_item_stock_bins_result: sql_row_set_response_mock } }) }
|
22
|
+
let(:double_client) { double }
|
23
|
+
|
24
|
+
before do
|
25
|
+
allow(subject).to receive(:client).and_return(double_client)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should call the client with the appropriate parameters' do
|
29
|
+
expect(double_client).to receive(:call)
|
30
|
+
.with(:pixi_get_item_stock_bins, attributes: { xmlns: PixiClient.configuration.endpoint }, message: { 'EAN' => '1234567890123' })
|
31
|
+
.and_return(expected_response)
|
32
|
+
|
33
|
+
subject.call
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should instanciate an instance of Response with the response body' do
|
37
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
38
|
+
expect(PixiClient::Response).to receive(:new).with(:pixi_get_item_stock_bins, expected_response.body)
|
39
|
+
subject.call
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should return an instance of Response' do
|
43
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
44
|
+
expect(subject.call).to be_an_instance_of(PixiClient::Response)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PixiClient::Requests::GetItemsInfo do
|
4
|
+
let(:ean_codes) { [1,2,3] }
|
5
|
+
let(:location_id) { '001' }
|
6
|
+
subject { PixiClient::Requests::GetItemsInfo.new(ean_codes, location_id) }
|
7
|
+
|
8
|
+
before do
|
9
|
+
set_default_config
|
10
|
+
end
|
11
|
+
|
12
|
+
it { is_expected.to be_a_kind_of(PixiClient::Requests::Base) }
|
13
|
+
|
14
|
+
describe '#api_method' do
|
15
|
+
it 'should return :pixi_get_item_info' do
|
16
|
+
expect(subject.api_method).to eq :pixi_get_item_info
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe 'call behaviour' do
|
21
|
+
let(:expected_response) { double(body: { pixi_get_item_info_response: { pixi_get_item_info_result: sql_row_set_response_mock } }) }
|
22
|
+
let(:double_client) { double }
|
23
|
+
|
24
|
+
before do
|
25
|
+
allow(subject).to receive(:client).and_return(double_client)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should call the client with the appropriate parameters' do
|
29
|
+
builder = Builder::XmlMarkup.new
|
30
|
+
|
31
|
+
builder.ITEMS do
|
32
|
+
ean_codes.each do |code|
|
33
|
+
builder.ITEM do
|
34
|
+
builder.EAN code
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
expected_xml_message = builder.target!
|
40
|
+
|
41
|
+
expect(double_client).to receive(:call)
|
42
|
+
.with(:pixi_get_item_info, attributes: { xmlns: PixiClient.configuration.endpoint }, message: { 'LocID' => location_id, 'ItemXML' => expected_xml_message })
|
43
|
+
.and_return(expected_response)
|
44
|
+
|
45
|
+
subject.call
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should instanciate an instance of Response with the response body' do
|
49
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
50
|
+
expect(PixiClient::Response).to receive(:new).with(:pixi_get_item_info, expected_response.body)
|
51
|
+
subject.call
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should return an instance of Response' do
|
55
|
+
expect(double_client).to receive(:call).and_return(expected_response)
|
56
|
+
expect(subject.call).to be_an_instance_of(PixiClient::Response)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PixiClient::Requests::GetItemsOnStockBin do
|
4
|
+
let(:bin_name) { 'macondo' }
|
5
|
+
subject { PixiClient::Requests::GetItemsOnStockBin.new(bin_name) }
|
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_items_on_stock_bin' do
|
15
|
+
expect(subject.api_method).to eq :pixi_get_items_on_stock_bin
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'call behaviour' do
|
20
|
+
let(:expected_response) { double(body: { pixi_get_items_on_stock_bin_response: { pixi_get_items_on_stock_bin_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_items_on_stock_bin, attributes: { xmlns: PixiClient.configuration.endpoint }, message: { 'BinName' => bin_name })
|
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_items_on_stock_bin, 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
|