rconomic 0.5.0 → 0.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 +6 -14
- data/.travis.yml +0 -1
- data/Gemfile +0 -1
- data/lib/economic/account.rb +3 -5
- data/lib/economic/cash_book.rb +1 -1
- data/lib/economic/cash_book_entry.rb +92 -94
- data/lib/economic/creditor.rb +1 -1
- data/lib/economic/creditor_contact.rb +15 -17
- data/lib/economic/creditor_entry.rb +0 -1
- data/lib/economic/current_invoice.rb +32 -35
- data/lib/economic/current_invoice_line.rb +14 -2
- data/lib/economic/debtor.rb +60 -37
- data/lib/economic/debtor_contact.rb +26 -20
- data/lib/economic/endpoint.rb +72 -0
- data/lib/economic/entity/handle.rb +35 -21
- data/lib/economic/entity/mapper.rb +41 -0
- data/lib/economic/entity.rb +58 -34
- data/lib/economic/invoice.rb +15 -2
- data/lib/economic/proxies/account_proxy.rb +2 -3
- data/lib/economic/proxies/actions/find_by_ci_number.rb +4 -2
- data/lib/economic/proxies/actions/find_by_date_interval.rb +0 -1
- data/lib/economic/proxies/actions/find_by_name.rb +5 -1
- data/lib/economic/proxies/cash_book_entry_proxy.rb +1 -1
- data/lib/economic/proxies/entity_proxy.rb +15 -8
- data/lib/economic/session.rb +27 -31
- data/lib/rconomic/version.rb +1 -1
- data/rconomic.gemspec +1 -5
- data/spec/economic/cash_book_entry_spec.rb +27 -5
- data/spec/economic/cash_book_spec.rb +6 -6
- data/spec/economic/creditor_contact_spec.rb +24 -15
- data/spec/economic/creditor_spec.rb +9 -9
- data/spec/economic/current_invoice_line_spec.rb +7 -7
- data/spec/economic/current_invoice_spec.rb +82 -33
- data/spec/economic/debtor_contact_spec.rb +25 -15
- data/spec/economic/debtor_entry_spec.rb +3 -3
- data/spec/economic/debtor_spec.rb +49 -15
- data/spec/economic/endpoint_spec.rb +71 -0
- data/spec/economic/entity/handle_spec.rb +42 -49
- data/spec/economic/entity/mapper_spec.rb +54 -0
- data/spec/economic/entity_spec.rb +78 -72
- data/spec/economic/entry_spec.rb +3 -3
- data/spec/economic/invoice_spec.rb +37 -18
- data/spec/economic/proxies/actions/find_by_name_spec.rb +15 -12
- data/spec/economic/proxies/cash_book_entry_proxy_spec.rb +26 -24
- data/spec/economic/proxies/cash_book_proxy_spec.rb +23 -21
- data/spec/economic/proxies/creditor_contact_proxy_spec.rb +12 -16
- data/spec/economic/proxies/creditor_entry_proxy_spec.rb +18 -14
- data/spec/economic/proxies/creditor_proxy_spec.rb +23 -26
- data/spec/economic/proxies/current_invoice_line_proxy_spec.rb +17 -20
- data/spec/economic/proxies/current_invoice_proxy_spec.rb +38 -41
- data/spec/economic/proxies/debtor_contact_proxy_spec.rb +12 -15
- data/spec/economic/proxies/debtor_entry_proxy_spec.rb +18 -14
- data/spec/economic/proxies/debtor_proxy_spec.rb +31 -34
- data/spec/economic/proxies/entry_proxy_spec.rb +26 -22
- data/spec/economic/proxies/invoice_proxy_spec.rb +18 -21
- data/spec/economic/session_spec.rb +57 -44
- data/spec/fixtures/{spec_entity_create_from_data → account_create_from_data}/success.xml +5 -5
- data/spec/fixtures/{spec_entity_delete → account_delete}/success.xml +1 -1
- data/spec/fixtures/{spec_entity_get_data → account_get_data}/success.xml +5 -5
- data/spec/fixtures/{spec_entity_update_from_data → account_update_from_data}/success.xml +5 -5
- data/spec/fixtures/cash_book_entry_create_creditor_invoice/success.xml +2 -2
- data/spec/fixtures/cash_book_entry_create_creditor_payment/success.xml +2 -2
- data/spec/fixtures/creditor_contact_create_from_data/success.xml +10 -0
- data/spec/fixtures/debtor_contact_create_from_data/success.xml +10 -0
- data/spec/fixtures/debtor_create_from_data/success.xml +57 -0
- data/spec/spec_helper.rb +10 -104
- data/spec/support/api_requests.rb +20 -0
- data/spec/support/factories.rb +65 -0
- data/spec/support/fixtures.rb +9 -0
- metadata +27 -31
@@ -5,7 +5,7 @@ describe Economic::DebtorContact do
|
|
5
5
|
subject { Economic::DebtorContact.new(:session => session) }
|
6
6
|
|
7
7
|
it "inherits from Economic::Entity" do
|
8
|
-
Economic::DebtorContact.ancestors.
|
8
|
+
expect(Economic::DebtorContact.ancestors).to include(Economic::Entity)
|
9
9
|
end
|
10
10
|
|
11
11
|
context "when saving" do
|
@@ -18,17 +18,27 @@ describe Economic::DebtorContact do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should send request and let e-conomic return an error" do
|
21
|
-
session.
|
21
|
+
expect(session).to receive(:request)
|
22
22
|
subject.save
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
26
|
+
|
27
|
+
it "builds and sends data to API" do
|
28
|
+
mock_request(
|
29
|
+
:debtor_contact_create_from_data,
|
30
|
+
{"data" => {"Handle" => {}, "Id" => nil, "Name" => nil, "Number" => 42, "IsToReceiveEmailCopyOfOrder" => false, "IsToReceiveEmailCopyOfInvoice" => false}},
|
31
|
+
:success
|
32
|
+
)
|
33
|
+
subject.number = 42
|
34
|
+
subject.save
|
35
|
+
end
|
26
36
|
end
|
27
37
|
|
28
38
|
describe ".debtor" do
|
29
39
|
context "when debtor_handle is not set" do
|
30
40
|
it "returns nil" do
|
31
|
-
subject.debtor.
|
41
|
+
expect(subject.debtor).to be_nil
|
32
42
|
end
|
33
43
|
end
|
34
44
|
|
@@ -40,13 +50,13 @@ describe Economic::DebtorContact do
|
|
40
50
|
end
|
41
51
|
|
42
52
|
it "returns a Debtor" do
|
43
|
-
session.debtors.
|
44
|
-
subject.debtor.
|
53
|
+
expect(session.debtors).to receive(:find).with(42).and_return(Economic::Debtor.new)
|
54
|
+
expect(subject.debtor).to be_instance_of(Economic::Debtor)
|
45
55
|
end
|
46
56
|
|
47
57
|
it "only looks up the debtor the first time" do
|
48
|
-
session.debtors.
|
49
|
-
subject.debtor.
|
58
|
+
expect(session.debtors).to receive(:find).with(42).and_return(Economic::Debtor.new)
|
59
|
+
expect(subject.debtor).to equal(subject.debtor)
|
50
60
|
end
|
51
61
|
end
|
52
62
|
end
|
@@ -55,7 +65,7 @@ describe Economic::DebtorContact do
|
|
55
65
|
let(:debtor) { make_debtor }
|
56
66
|
it "should set debtor_handle" do
|
57
67
|
subject.debtor = debtor
|
58
|
-
subject.debtor_handle.
|
68
|
+
expect(subject.debtor_handle).to eq(debtor.handle)
|
59
69
|
end
|
60
70
|
end
|
61
71
|
|
@@ -65,7 +75,7 @@ describe Economic::DebtorContact do
|
|
65
75
|
|
66
76
|
it "should set debtor_handle" do
|
67
77
|
subject.debtor_handle = handle
|
68
|
-
subject.debtor_handle.
|
78
|
+
expect(subject.debtor_handle).to eq(handle)
|
69
79
|
end
|
70
80
|
|
71
81
|
context "when debtor handle is for a different Debtor" do
|
@@ -74,9 +84,9 @@ describe Economic::DebtorContact do
|
|
74
84
|
end
|
75
85
|
|
76
86
|
it "should clear cached debtor and fetch the new debtor from API" do
|
77
|
-
|
87
|
+
stub_request('Debtor_GetData', nil, :success)
|
78
88
|
subject.debtor_handle = Economic::Debtor::Handle.new({:number => 1234})
|
79
|
-
subject.debtor.
|
89
|
+
expect(subject.debtor).to be_instance_of(Economic::Debtor)
|
80
90
|
end
|
81
91
|
end
|
82
92
|
|
@@ -86,20 +96,20 @@ describe Economic::DebtorContact do
|
|
86
96
|
end
|
87
97
|
|
88
98
|
it "should not clear cached debtor nor fetch the debtor from API" do
|
89
|
-
|
99
|
+
expect(session).to receive(:request).never
|
90
100
|
subject.debtor_handle = handle
|
91
|
-
subject.debtor.
|
101
|
+
expect(subject.debtor).to be_instance_of(Economic::Debtor)
|
92
102
|
end
|
93
103
|
end
|
94
104
|
end
|
95
105
|
|
96
106
|
describe ".proxy" do
|
97
107
|
it "should return a DebtorContactProxy" do
|
98
|
-
subject.proxy.
|
108
|
+
expect(subject.proxy).to be_instance_of(Economic::DebtorContactProxy)
|
99
109
|
end
|
100
110
|
|
101
111
|
it "should return a proxy owned by session" do
|
102
|
-
subject.proxy.session.
|
112
|
+
expect(subject.proxy.session).to eq(session)
|
103
113
|
end
|
104
114
|
end
|
105
115
|
|
@@ -5,16 +5,16 @@ describe Economic::DebtorEntry do
|
|
5
5
|
subject { Economic::DebtorEntry.new(:session => session) }
|
6
6
|
|
7
7
|
it "inherits from Economic::Entity" do
|
8
|
-
Economic::DebtorEntry.ancestors.
|
8
|
+
expect(Economic::DebtorEntry.ancestors).to include(Economic::Entity)
|
9
9
|
end
|
10
10
|
|
11
11
|
describe ".proxy" do
|
12
12
|
it "should return a DebtorEntryProxy" do
|
13
|
-
subject.proxy.
|
13
|
+
expect(subject.proxy).to be_instance_of(Economic::DebtorEntryProxy)
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should return a proxy owned by session" do
|
17
|
-
subject.proxy.session.
|
17
|
+
expect(subject.proxy.session).to eq(session)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -5,7 +5,7 @@ describe Economic::Debtor do
|
|
5
5
|
subject { Economic::Debtor.new(:session => session) }
|
6
6
|
|
7
7
|
it "inherits from Economic::Entity" do
|
8
|
-
Economic::Debtor.ancestors.
|
8
|
+
expect(Economic::Debtor.ancestors).to include(Economic::Entity)
|
9
9
|
end
|
10
10
|
|
11
11
|
describe "class methods" do
|
@@ -13,13 +13,13 @@ describe Economic::Debtor do
|
|
13
13
|
|
14
14
|
describe ".proxy" do
|
15
15
|
it "should return DebtorProxy" do
|
16
|
-
subject.proxy.
|
16
|
+
expect(subject.proxy).to eq(Economic::DebtorProxy)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
20
|
describe ".key" do
|
21
21
|
it "should == :debtor" do
|
22
|
-
Economic::Debtor.key.
|
22
|
+
expect(Economic::Debtor.key).to eq(:debtor)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -34,7 +34,7 @@ describe Economic::Debtor do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it "should send request and let e-conomic return an error" do
|
37
|
-
session.
|
37
|
+
expect(session).to receive(:request)
|
38
38
|
subject.save
|
39
39
|
end
|
40
40
|
end
|
@@ -43,41 +43,41 @@ describe Economic::Debtor do
|
|
43
43
|
|
44
44
|
describe ".current_invoices" do
|
45
45
|
it "returns an CurrentInvoiceProxy" do
|
46
|
-
subject.current_invoices.
|
46
|
+
expect(subject.current_invoices).to be_instance_of(Economic::CurrentInvoiceProxy)
|
47
47
|
end
|
48
48
|
|
49
49
|
it "memoizes the proxy" do
|
50
|
-
subject.current_invoices.
|
50
|
+
expect(subject.current_invoices).to equal(subject.current_invoices)
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should store the session" do
|
54
|
-
subject.session.
|
55
|
-
subject.current_invoices.session.
|
54
|
+
expect(subject.session).to_not be_nil
|
55
|
+
expect(subject.current_invoices.session).to eq(subject.session)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
59
|
describe ".contacts" do
|
60
60
|
it "returns a DebtorContactProxy" do
|
61
|
-
subject.contacts.
|
61
|
+
expect(subject.contacts).to be_instance_of(Economic::DebtorContactProxy)
|
62
62
|
end
|
63
63
|
|
64
64
|
it "memoizes the proxy" do
|
65
|
-
subject.contacts.
|
65
|
+
expect(subject.contacts).to equal(subject.contacts)
|
66
66
|
end
|
67
67
|
|
68
68
|
it "should store the session" do
|
69
|
-
subject.session.
|
70
|
-
subject.contacts.session.
|
69
|
+
expect(subject.session).to_not be_nil
|
70
|
+
expect(subject.contacts.session).to eq(subject.session)
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
74
|
describe ".proxy" do
|
75
75
|
it "should return a DebtorProxy" do
|
76
|
-
subject.proxy.
|
76
|
+
expect(subject.proxy).to be_instance_of(Economic::DebtorProxy)
|
77
77
|
end
|
78
78
|
|
79
79
|
it "should return a proxy owned by session" do
|
80
|
-
subject.proxy.session.
|
80
|
+
expect(subject.proxy.session).to eq(session)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
@@ -87,10 +87,44 @@ describe Economic::Debtor do
|
|
87
87
|
let(:other) { Economic::Invoice.new(:session => session, :handle => subject.handle) }
|
88
88
|
|
89
89
|
it "should return false" do
|
90
|
-
subject.
|
90
|
+
expect(subject).not_to eq(other)
|
91
91
|
end
|
92
92
|
end
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
96
|
+
describe "#save" do
|
97
|
+
it 'should save it' do
|
98
|
+
stub_request('Debtor_CreateFromData', nil, :success)
|
99
|
+
subject.save
|
100
|
+
end
|
101
|
+
|
102
|
+
it "builds and sends data to API" do
|
103
|
+
mock_request(
|
104
|
+
:debtor_create_from_data, {
|
105
|
+
"data" => {
|
106
|
+
"Handle" => {},
|
107
|
+
"Number" => nil,
|
108
|
+
"DebtorGroupHandle" => {"Number" => 42},
|
109
|
+
"Name" => nil,
|
110
|
+
"VatZone" => nil,
|
111
|
+
"CurrencyHandle" => {"Code" => "BTC"},
|
112
|
+
"PriceGroupHandle" => {"Number" => 37},
|
113
|
+
"IsAccessible" => nil,
|
114
|
+
"TermOfPaymentHandle" => {"Id" => 314},
|
115
|
+
"LayoutHandle" => {"Id" => 21}
|
116
|
+
}
|
117
|
+
},
|
118
|
+
:success
|
119
|
+
)
|
120
|
+
|
121
|
+
subject.debtor_group_handle = Economic::Entity::Handle.new({:number => 42})
|
122
|
+
subject.currency_handle = Economic::Entity::Handle.new({:code => 'BTC'})
|
123
|
+
subject.price_group_handle = Economic::Entity::Handle.new({:number => 37})
|
124
|
+
subject.term_of_payment_handle = Economic::Entity::Handle.new({:id => 314})
|
125
|
+
subject.layout_handle = Economic::Entity::Handle.new({:id => 21})
|
126
|
+
|
127
|
+
subject.save
|
128
|
+
end
|
129
|
+
end
|
96
130
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require './spec/spec_helper'
|
2
|
+
|
3
|
+
describe Economic::Endpoint do
|
4
|
+
subject { Economic::Endpoint.new }
|
5
|
+
|
6
|
+
describe "call" do
|
7
|
+
let(:client) {
|
8
|
+
subject.client
|
9
|
+
}
|
10
|
+
|
11
|
+
it "uses the SOAP client to invoke a SOAP action on the API" do
|
12
|
+
expect(client).to receive(:call).with(
|
13
|
+
:foo_bar,
|
14
|
+
:message => {:baz => 'qux'}
|
15
|
+
).and_return({})
|
16
|
+
subject.call(:foo_bar, {:baz => 'qux'})
|
17
|
+
end
|
18
|
+
|
19
|
+
it "sends an actual request" do
|
20
|
+
mock_request('Connect', nil, :success)
|
21
|
+
subject.call(:connect)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns a hash with data" do
|
25
|
+
stub_request('CurrentInvoice_GetAll', nil, :single)
|
26
|
+
expect(subject.call(:current_invoice_get_all)).to eq({:current_invoice_handle => {:id => "1"}})
|
27
|
+
end
|
28
|
+
|
29
|
+
it "returns an empty hash if no data returned" do
|
30
|
+
stub_request('CurrentInvoice_GetAll', nil, :none)
|
31
|
+
expect(subject.call(:current_invoice_get_all)).to be_empty
|
32
|
+
end
|
33
|
+
|
34
|
+
it "yields a Savon response" do
|
35
|
+
stub_request('CurrentInvoice_GetAll', nil, :single)
|
36
|
+
@yielded_value = nil
|
37
|
+
subject.call(:current_invoice_get_all) do |response|
|
38
|
+
@yielded_value = response
|
39
|
+
end
|
40
|
+
expect(@yielded_value).to be_instance_of(Savon::Response)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "adds a cookie header" do
|
44
|
+
expect(client).to receive(:call).with(
|
45
|
+
:current_invoice_get_all,
|
46
|
+
:cookies => "omnomnom"
|
47
|
+
).and_return({})
|
48
|
+
subject.call(:current_invoice_get_all, {}, "omnomnom")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "#client" do
|
53
|
+
it "returns a Savon::Client" do
|
54
|
+
expect(subject.client).to be_instance_of(::Savon::Client)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "returns the same Savon::Client" do
|
58
|
+
expect(subject.client).to equal(subject.client)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "soap_action_name" do
|
63
|
+
it "returns full action name for the given class and soap action" do
|
64
|
+
expect(subject.soap_action_name(Economic::Debtor, :get_data)).to eq(:debtor_get_data)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "returns full action name for a class given as strings" do
|
68
|
+
expect(subject.soap_action_name("FooBar", "Stuff")).to eq(:foo_bar_stuff)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -8,24 +8,24 @@ describe Economic::Entity::Handle do
|
|
8
8
|
let(:handle_d) { Economic::Entity::Handle.new(:id => 1, :number => 3) }
|
9
9
|
|
10
10
|
it "should be equal when both id and number are equal" do
|
11
|
-
handle_a.
|
11
|
+
expect(handle_a).to eq(handle_b)
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should not be equal when id or number is missing" do
|
15
|
-
handle_a.
|
15
|
+
expect(handle_a).not_to eq(handle_c)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should not be equal when id or number is equal and the other isn't" do
|
19
|
-
handle_a.
|
19
|
+
expect(handle_a).not_to eq(handle_d)
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should not equal if both are empty" do
|
23
|
-
Economic::Entity::Handle.new({}).
|
23
|
+
expect(Economic::Entity::Handle.new({})).not_to eq(Economic::Entity::Handle.new({}))
|
24
24
|
end
|
25
25
|
|
26
26
|
it "should be equal if both are the same object" do
|
27
27
|
handle = Economic::Entity::Handle.new({})
|
28
|
-
handle.
|
28
|
+
expect(handle).to eq(handle)
|
29
29
|
end
|
30
30
|
|
31
31
|
describe "CashBookEntry handles" do
|
@@ -35,7 +35,7 @@ describe Economic::Entity::Handle do
|
|
35
35
|
let(:handle_b) { Economic::Entity::Handle.new(:id1 => 1, :id2 => 2) }
|
36
36
|
|
37
37
|
it "should be equal" do
|
38
|
-
handle_a.
|
38
|
+
expect(handle_a).to eq(handle_b)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
@@ -43,7 +43,7 @@ describe Economic::Entity::Handle do
|
|
43
43
|
let(:handle_b) { Economic::Entity::Handle.new(:id1 => 11, :id2 => 12) }
|
44
44
|
|
45
45
|
it "should_not be equal" do
|
46
|
-
handle_a.
|
46
|
+
expect(handle_a).not_to eq(handle_b)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
end
|
@@ -51,137 +51,130 @@ describe Economic::Entity::Handle do
|
|
51
51
|
|
52
52
|
describe ".new" do
|
53
53
|
it "should raise error if argument isn't supported" do
|
54
|
-
lambda do
|
54
|
+
expect(lambda do
|
55
55
|
Economic::Entity::Handle.new(true)
|
56
|
-
end.
|
56
|
+
end).to raise_error(ArgumentError)
|
57
57
|
end
|
58
58
|
|
59
59
|
it "should assume :id if argument is numeric" do
|
60
60
|
handle = Economic::Entity::Handle.new(12)
|
61
|
-
handle.id.
|
62
|
-
handle.number.
|
61
|
+
expect(handle.id).to eq(12)
|
62
|
+
expect(handle.number).to be_nil
|
63
63
|
end
|
64
64
|
|
65
65
|
it "should use to_i on numeric argument" do
|
66
66
|
handle = Economic::Entity::Handle.new("42")
|
67
|
-
handle.id.
|
67
|
+
expect(handle.id).to eq(42)
|
68
68
|
end
|
69
69
|
|
70
70
|
it "should raise error if argument is nil" do
|
71
|
-
lambda do
|
71
|
+
expect(lambda do
|
72
72
|
Economic::Entity::Handle.new(nil)
|
73
|
-
end.
|
73
|
+
end).to raise_error(ArgumentError)
|
74
74
|
end
|
75
75
|
|
76
76
|
it "should raise error if argument contains invalid key" do
|
77
|
-
lambda do
|
77
|
+
expect(lambda do
|
78
78
|
Economic::Entity::Handle.new(:Numeric => 12)
|
79
|
-
end.
|
80
|
-
end
|
81
|
-
|
82
|
-
it "should raise error if argument contains invalid values" do
|
83
|
-
lambda do
|
84
|
-
Economic::Entity::Handle.new(:number => {:number => 12})
|
85
|
-
end.should raise_error(ArgumentError)
|
79
|
+
end).to raise_error(ArgumentError)
|
86
80
|
end
|
87
81
|
|
88
82
|
it "should set id" do
|
89
83
|
handle = Economic::Entity::Handle.new(:id => 12)
|
90
|
-
handle.id.
|
84
|
+
expect(handle.id).to eq(12)
|
91
85
|
end
|
92
86
|
|
93
87
|
it "should set number" do
|
94
88
|
handle = Economic::Entity::Handle.new(:number => 12)
|
95
|
-
handle.number.
|
89
|
+
expect(handle.number).to eq(12)
|
96
90
|
end
|
97
91
|
|
98
92
|
it "should set both id and number" do
|
99
93
|
handle = Economic::Entity::Handle.new(:id => 37, :number => 42)
|
100
|
-
handle.id.
|
101
|
-
handle.number.
|
94
|
+
expect(handle.id).to eq(37)
|
95
|
+
expect(handle.number).to eq(42)
|
102
96
|
end
|
103
97
|
|
104
98
|
it 'should set id1 and id2' do
|
105
99
|
handle = Economic::Entity::Handle.new(:id1 => 37, :id2 => 42)
|
106
|
-
handle.id1.
|
107
|
-
handle.id2.
|
100
|
+
expect(handle.id1).to eq(37)
|
101
|
+
expect(handle.id2).to eq(42)
|
108
102
|
end
|
109
103
|
|
110
104
|
it "should to_i values" do
|
111
105
|
handle = Economic::Entity::Handle.new(:id => "37", :number => "42")
|
112
|
-
handle.id.
|
113
|
-
handle.number.
|
106
|
+
expect(handle.id).to eq(37)
|
107
|
+
expect(handle.number).to eq(42)
|
114
108
|
end
|
115
109
|
|
116
110
|
it "should not to_i nil values" do
|
117
111
|
handle = Economic::Entity::Handle.new(:id => "37")
|
118
|
-
handle.id.
|
119
|
-
handle.number.
|
112
|
+
expect(handle.id).to eq(37)
|
113
|
+
expect(handle.number).to be_nil
|
120
114
|
end
|
121
115
|
|
122
116
|
it "should accept a Hash with capitalized keys" do
|
123
117
|
handle = Economic::Entity::Handle.new({"Id" => 37, "Number" => 42})
|
124
|
-
handle.id.
|
125
|
-
handle.number.
|
118
|
+
expect(handle.id).to eq(37)
|
119
|
+
expect(handle.number).to eq(42)
|
126
120
|
end
|
127
121
|
|
128
122
|
it "should accept another Handle" do
|
129
123
|
original_handle = Economic::Entity::Handle.new(:id => 37)
|
130
124
|
handle = Economic::Entity::Handle.new(original_handle)
|
131
|
-
handle.id.
|
132
|
-
handle.number.
|
133
|
-
handle.
|
125
|
+
expect(handle.id).to eq(37)
|
126
|
+
expect(handle.number).to be_nil
|
127
|
+
expect(handle).to eq(original_handle)
|
134
128
|
end
|
135
129
|
end
|
136
130
|
|
137
131
|
describe ".build" do
|
138
132
|
it "returns nil when given nil" do
|
139
|
-
Economic::Entity::Handle.build(nil).
|
133
|
+
expect(Economic::Entity::Handle.build(nil)).to be_nil
|
140
134
|
end
|
141
135
|
|
142
136
|
it "returns empty handle when hash is empty" do
|
143
|
-
Economic::Entity::Handle.build({}).
|
137
|
+
expect(Economic::Entity::Handle.build({})).to be_empty
|
144
138
|
end
|
145
139
|
|
146
140
|
it "returns nil when hash has no values" do
|
147
|
-
Economic::Entity::Handle.build({:id => nil, :number => nil}).
|
141
|
+
expect(Economic::Entity::Handle.build({:id => nil, :number => nil})).to be_empty
|
148
142
|
end
|
149
143
|
|
150
144
|
it "returns handle when hash has values" do
|
151
|
-
Economic::Entity::Handle.build({:id2 => 42}).
|
145
|
+
expect(Economic::Entity::Handle.build({:id2 => 42})).to eq(Economic::Entity::Handle.new({:id2 => 42}))
|
152
146
|
end
|
153
147
|
|
154
148
|
it "returns a given handle" do
|
155
149
|
handle = Economic::Entity::Handle.new({})
|
156
|
-
Economic::Entity::Handle.build(handle).
|
150
|
+
expect(Economic::Entity::Handle.build(handle)).to equal(handle)
|
157
151
|
end
|
158
152
|
end
|
159
153
|
|
160
154
|
describe "#empty?" do
|
161
155
|
it "returns true when handle has no values" do
|
162
|
-
Economic::Entity::Handle.new({}).
|
156
|
+
expect(Economic::Entity::Handle.new({})).to be_empty
|
163
157
|
end
|
164
158
|
|
165
159
|
it "returns false when handle has a value" do
|
166
|
-
Economic::Entity::Handle.new({:serial_number => 12}).
|
160
|
+
expect(Economic::Entity::Handle.new({:serial_number => 12})).to_not be_empty
|
167
161
|
end
|
168
162
|
end
|
169
163
|
|
170
164
|
describe ".to_hash" do
|
171
|
-
subject { Economic::Entity::Handle.new({:id => 42, :number => 37, :serial_number => 7}) }
|
165
|
+
subject { Economic::Entity::Handle.new({:id => 42, :number => 37, :serial_number => 7, :code => "USD", :vat_code => 1}) }
|
172
166
|
|
173
167
|
it "should return a handle for putting into the body of a SOAP request" do
|
174
|
-
subject.to_hash.
|
168
|
+
expect(subject.to_hash).to eq({'Id' => 42, 'Number' => 37, 'SerialNumber' => 7, 'Code' => 'USD', 'VatCode' => 1})
|
175
169
|
end
|
176
170
|
|
177
171
|
it "includes only the named value in the hash" do
|
178
|
-
subject.to_hash(:id).
|
172
|
+
expect(subject.to_hash(:id)).to eq({'Id' => 42})
|
179
173
|
end
|
180
174
|
|
181
175
|
it "includes only the named values in the hash" do
|
182
|
-
subject.to_hash([:id, :serial_number]).
|
176
|
+
expect(subject.to_hash([:id, :serial_number])).to eq({'Id' => 42, 'SerialNumber' => 7})
|
183
177
|
end
|
184
178
|
end
|
185
|
-
|
186
179
|
end
|
187
180
|
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require './spec/spec_helper'
|
2
|
+
|
3
|
+
describe Economic::Entity::Mapper do
|
4
|
+
let(:entity) { double("Entity", {
|
5
|
+
:handle => Economic::Entity::Handle.new(:id => 42),
|
6
|
+
:creditor_handle => Economic::Entity::Handle.new(:number => 37),
|
7
|
+
:name => "David Brent",
|
8
|
+
:is_to_receive_email_copy_of_order => true
|
9
|
+
}) }
|
10
|
+
|
11
|
+
let(:fields) {
|
12
|
+
[
|
13
|
+
["Handle", :handle, Proc.new { |v| v.to_hash }, :required],
|
14
|
+
["CreditorHandle", :creditor_handle, Proc.new { |v| {"Number" => v[:number] }}],
|
15
|
+
["Id", :handle, Proc.new { |v| v.id }, :required],
|
16
|
+
["Name", :name],
|
17
|
+
["IsToReceiveEmailCopyOfOrder", :is_to_receive_email_copy_of_order, Proc.new { |v| v || false }, :required],
|
18
|
+
]
|
19
|
+
}
|
20
|
+
|
21
|
+
subject { Economic::Entity::Mapper.new(entity, fields) }
|
22
|
+
|
23
|
+
describe "#to_hash" do
|
24
|
+
it "returns a Hash with fields as per the field descriptions" do
|
25
|
+
subject.to_hash.should == {
|
26
|
+
"Handle" => {"Id" => 42},
|
27
|
+
"CreditorHandle" => {"Number" => 37},
|
28
|
+
"Id" => 42,
|
29
|
+
"Name" => "David Brent",
|
30
|
+
"IsToReceiveEmailCopyOfOrder" => true
|
31
|
+
}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "when entity has no values" do
|
36
|
+
let(:entity) { double("Entity", {
|
37
|
+
:handle => Economic::Entity::Handle.new({}),
|
38
|
+
:creditor_handle => nil,
|
39
|
+
:name => nil,
|
40
|
+
:number => nil,
|
41
|
+
:is_to_receive_email_copy_of_order => nil
|
42
|
+
}) }
|
43
|
+
|
44
|
+
subject { Economic::Entity::Mapper.new(entity, fields) }
|
45
|
+
|
46
|
+
it "returns the minimal set of required fields" do
|
47
|
+
subject.to_hash.should == {
|
48
|
+
"Handle" => {},
|
49
|
+
"Id" => nil,
|
50
|
+
"IsToReceiveEmailCopyOfOrder" => false
|
51
|
+
}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|