rconomic 0.3 → 0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +2 -1
- data/lib/economic/cash_book_entry.rb +42 -36
- data/lib/economic/creditor.rb +67 -0
- data/lib/economic/creditor_contact.rb +62 -0
- data/lib/economic/creditor_entry.rb +26 -0
- data/lib/economic/current_invoice.rb +30 -10
- data/lib/economic/current_invoice_line.rb +2 -0
- data/lib/economic/debtor_entry.rb +27 -0
- data/lib/economic/economic.wsdl +23134 -17255
- data/lib/economic/entity/handle.rb +1 -1
- data/lib/economic/entity.rb +8 -4
- data/lib/economic/entry.rb +26 -0
- data/lib/economic/proxies/cash_book_entry_proxy.rb +53 -15
- data/lib/economic/proxies/creditor_contact_proxy.rb +64 -0
- data/lib/economic/proxies/creditor_entry_proxy.rb +42 -0
- data/lib/economic/proxies/creditor_proxy.rb +73 -0
- data/lib/economic/proxies/current_invoice_proxy.rb +2 -1
- data/lib/economic/proxies/debtor_entry_proxy.rb +32 -0
- data/lib/economic/proxies/entity_proxy.rb +2 -2
- data/lib/economic/proxies/entry_proxy.rb +63 -0
- data/lib/economic/proxies/invoice_proxy.rb +2 -1
- data/lib/economic/session.rb +21 -4
- data/lib/economic/support/string.rb +5 -0
- data/lib/rconomic/version.rb +1 -1
- data/lib/rconomic.rb +10 -0
- data/rconomic.gemspec +6 -1
- data/spec/economic/creditor_contact_spec.rb +106 -0
- data/spec/economic/creditor_spec.rb +52 -0
- data/spec/economic/current_invoice_spec.rb +14 -0
- data/spec/economic/debtor_entry_spec.rb +20 -0
- data/spec/economic/debtor_spec.rb +12 -0
- data/spec/economic/entity/handle_spec.rb +21 -0
- data/spec/economic/entity_spec.rb +31 -0
- data/spec/economic/entry_spec.rb +20 -0
- data/spec/economic/proxies/cash_book_entry_proxy_spec.rb +35 -2
- data/spec/economic/proxies/creditor_contact_proxy_spec.rb +55 -0
- data/spec/economic/proxies/creditor_entry_proxy_spec.rb +49 -0
- data/spec/economic/proxies/creditor_proxy_spec.rb +81 -0
- data/spec/economic/proxies/current_invoice_line_proxy_spec.rb +1 -1
- data/spec/economic/proxies/current_invoice_proxy_spec.rb +3 -3
- data/spec/economic/proxies/debtor_entry_proxy_spec.rb +47 -0
- data/spec/economic/proxies/entry_proxy_spec.rb +73 -0
- data/spec/economic/proxies/invoice_proxy_spec.rb +3 -3
- data/spec/fixtures/cash_book_entry_create_creditor_invoice/success.xml +11 -0
- data/spec/fixtures/cash_book_entry_create_creditor_payment/success.xml +11 -0
- data/spec/fixtures/cash_book_entry_get_data/success.xml +4 -4
- data/spec/fixtures/cash_book_entry_set_due_date/success.xml +6 -0
- data/spec/fixtures/cash_book_get_all/multiple.xml +2 -2
- data/spec/fixtures/cash_book_get_entries/success.xml +4 -4
- data/spec/fixtures/creditor_contact_get_data/success.xml +22 -0
- data/spec/fixtures/creditor_entry_find_by_invoice_number/many.xml +15 -0
- data/spec/fixtures/creditor_entry_find_by_invoice_number/single.xml +12 -0
- data/spec/fixtures/creditor_entry_get_data/success.xml +32 -0
- data/spec/fixtures/creditor_entry_match_entries/success.xml +5 -0
- data/spec/fixtures/creditor_find_by_number/found.xml +10 -0
- data/spec/fixtures/creditor_find_by_number/not_found.xml +7 -0
- data/spec/fixtures/creditor_get_all/multiple.xml +15 -0
- data/spec/fixtures/creditor_get_all/single.xml +12 -0
- data/spec/fixtures/creditor_get_data/success.xml +49 -0
- data/spec/fixtures/creditor_get_data_array/multiple.xml +93 -0
- data/spec/fixtures/current_invoice_book_with_number/success.xml +10 -0
- data/spec/fixtures/current_invoice_get_data_array/multiple.xml +4 -4
- data/spec/fixtures/debtor_entry_find_by_invoice_number/many.xml +15 -0
- data/spec/fixtures/debtor_entry_find_by_invoice_number/single.xml +12 -0
- data/spec/fixtures/debtor_entry_match_entries/success.xml +6 -0
- data/spec/fixtures/debtor_get_data_array/multiple.xml +4 -4
- data/spec/fixtures/entry_find_by_date_interval/many.xml +15 -0
- data/spec/fixtures/entry_find_by_date_interval/none.xml +9 -0
- data/spec/fixtures/entry_find_by_date_interval/single.xml +12 -0
- data/spec/fixtures/entry_find_by_serial_number_interval/many.xml +15 -0
- data/spec/fixtures/entry_find_by_serial_number_interval/none.xml +9 -0
- data/spec/fixtures/entry_find_by_serial_number_interval/single.xml +12 -0
- data/spec/fixtures/entry_get_data/success.xml +40 -0
- data/spec/fixtures/entry_get_last_used_serial_number/success.xml +8 -0
- data/spec/spec_helper.rb +22 -2
- metadata +68 -11
- data/Gemfile.lock +0 -61
- data/spec/fixtures/wsdl.xml +0 -56596
@@ -0,0 +1,106 @@
|
|
1
|
+
require './spec/spec_helper'
|
2
|
+
|
3
|
+
describe Economic::CreditorContact do
|
4
|
+
let(:session) { make_session }
|
5
|
+
subject { Economic::CreditorContact.new(:session => session) }
|
6
|
+
|
7
|
+
it "inherits from Economic::Entity" do
|
8
|
+
Economic::CreditorContact.ancestors.should include(Economic::Entity)
|
9
|
+
end
|
10
|
+
|
11
|
+
context "when saving" do
|
12
|
+
context "when creditor contact is new" do
|
13
|
+
subject { Economic::CreditorContact.new(:session => session) }
|
14
|
+
|
15
|
+
context "when creditor_handle is nil" do
|
16
|
+
before :each do
|
17
|
+
subject.creditor_handle = nil
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should send request and let e-conomic return an error" do
|
21
|
+
session.expects(:request)
|
22
|
+
subject.save
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe ".creditor" do
|
29
|
+
context "when creditor_handle is not set" do
|
30
|
+
it "returns nil" do
|
31
|
+
subject.creditor.should be_nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "when creditor_handle is set" do
|
36
|
+
let(:handle) { Economic::CreditorContact::Handle.new({:number => 42}) }
|
37
|
+
|
38
|
+
before :each do
|
39
|
+
subject.creditor_handle = handle
|
40
|
+
end
|
41
|
+
|
42
|
+
it "returns a Creditor" do
|
43
|
+
session.creditors.expects(:find).with(42).returns(Economic::Creditor.new)
|
44
|
+
subject.creditor.should be_instance_of(Economic::Creditor)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "only looks up the creditor the first time" do
|
48
|
+
session.creditors.expects(:find).with(42).returns(Economic::Creditor.new)
|
49
|
+
subject.creditor.should === subject.creditor
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe ".creditor=" do
|
55
|
+
let(:creditor) { make_creditor }
|
56
|
+
it "should set creditor_handle" do
|
57
|
+
subject.creditor = creditor
|
58
|
+
subject.creditor_handle.should == creditor.handle
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe ".creditor_handle=" do
|
63
|
+
let(:creditor) { make_creditor }
|
64
|
+
let(:handle) { creditor.handle }
|
65
|
+
|
66
|
+
it "should set creditor_handle" do
|
67
|
+
subject.creditor_handle = handle
|
68
|
+
subject.creditor_handle.should == handle
|
69
|
+
end
|
70
|
+
|
71
|
+
context "when creditor handle is for a different Creditor" do
|
72
|
+
before :each do
|
73
|
+
subject.creditor = creditor
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should clear cached creditor and fetch the new creditor from API" do
|
77
|
+
savon.stubs('Creditor_GetData').returns(:success)
|
78
|
+
subject.creditor_handle = Economic::Creditor::Handle.new({:number => 1234})
|
79
|
+
subject.creditor.should be_instance_of(Economic::Creditor)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "when creditor handle is for the current Creditor" do
|
84
|
+
before :each do
|
85
|
+
subject.creditor = creditor
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should not clear cached creditor nor fetch the creditor from API" do
|
89
|
+
savon.stubs('Creditor_GetData').never
|
90
|
+
subject.creditor_handle = handle
|
91
|
+
subject.creditor.should be_instance_of(Economic::Creditor)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe ".proxy" do
|
97
|
+
it "should return a CreditorContactProxy" do
|
98
|
+
subject.proxy.should be_instance_of(Economic::CreditorContactProxy)
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should return a proxy owned by session" do
|
102
|
+
subject.proxy.session.should == session
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require './spec/spec_helper'
|
2
|
+
|
3
|
+
describe Economic::Creditor do
|
4
|
+
let(:session) { make_session }
|
5
|
+
subject { Economic::Creditor.new(:session => session) }
|
6
|
+
|
7
|
+
it "inherits from Economic::Entity" do
|
8
|
+
Economic::Creditor.ancestors.should include(Economic::Entity)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "class methods" do
|
12
|
+
subject { Economic::Creditor }
|
13
|
+
|
14
|
+
describe ".proxy" do
|
15
|
+
it "should return CreditorProxy" do
|
16
|
+
subject.proxy.should == Economic::CreditorProxy
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe ".key" do
|
21
|
+
it "should == :creditor" do
|
22
|
+
Economic::Creditor.key.should == :creditor
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe ".contacts" do
|
28
|
+
it "returns a CreditorContactProxy" do
|
29
|
+
subject.contacts.should be_instance_of(Economic::CreditorContactProxy)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "memoizes the proxy" do
|
33
|
+
subject.contacts.should === subject.contacts
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should store the session" do
|
37
|
+
subject.session.should_not be_nil
|
38
|
+
subject.contacts.session.should == subject.session
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe ".proxy" do
|
43
|
+
it "should return a CreditorProxy" do
|
44
|
+
subject.proxy.should be_instance_of(Economic::CreditorProxy)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should return a proxy owned by session" do
|
48
|
+
subject.proxy.session.should == session
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -90,6 +90,20 @@ describe Economic::CurrentInvoice do
|
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
|
+
describe "#book_with_number" do
|
94
|
+
it 'should book the current invoice with the given number and return the created invoice object' do
|
95
|
+
savon.stubs('CurrentInvoice_BookWithNumber').returns(:success)
|
96
|
+
savon.expects("Invoice_GetData").with('entityHandle' => { 'Number' => 123 }).returns(:success)
|
97
|
+
subject.book_with_number(123).should be_instance_of(Economic::Invoice)
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should request with the right key for handle' do
|
101
|
+
savon.stubs('Invoice_GetData').returns(:success)
|
102
|
+
savon.expects("CurrentInvoice_BookWithNumber").with('currentInvoiceHandle' => { 'Id' => 512 }, 'number' => 123, :order! => ['currentInvoiceHandle', 'number']).returns(:success)
|
103
|
+
subject.book_with_number(123)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
93
107
|
describe "#attention" do
|
94
108
|
let(:contact) { (c = Economic::DebtorContact.new).tap { c.session = session }}
|
95
109
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require './spec/spec_helper'
|
2
|
+
|
3
|
+
describe Economic::DebtorEntry do
|
4
|
+
let(:session) { make_session }
|
5
|
+
subject { Economic::DebtorEntry.new(:session => session) }
|
6
|
+
|
7
|
+
it "inherits from Economic::Entity" do
|
8
|
+
Economic::DebtorEntry.ancestors.should include(Economic::Entity)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".proxy" do
|
12
|
+
it "should return a DebtorEntryProxy" do
|
13
|
+
subject.proxy.should be_instance_of(Economic::DebtorEntryProxy)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should return a proxy owned by session" do
|
17
|
+
subject.proxy.session.should == session
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -81,4 +81,16 @@ describe Economic::Debtor do
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
+
describe "equality" do
|
85
|
+
context "when other handle is equal" do
|
86
|
+
context "when other is a different class" do
|
87
|
+
let(:other) { Economic::Invoice.new(:session => session, :handle => subject.handle) }
|
88
|
+
|
89
|
+
it "should return false" do
|
90
|
+
subject.should_not == other
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
84
96
|
end
|
@@ -18,6 +18,27 @@ describe Economic::Entity::Handle do
|
|
18
18
|
it "should not be equal when id or number is equal and the other isn't" do
|
19
19
|
handle_a.should_not == handle_d
|
20
20
|
end
|
21
|
+
|
22
|
+
describe "CashBookEntry handles" do
|
23
|
+
let(:handle_a) { Economic::Entity::Handle.new(:id1 => 1, :id2 => 2) }
|
24
|
+
|
25
|
+
context "when id1 and id2 values are equal" do
|
26
|
+
let(:handle_b) { Economic::Entity::Handle.new(:id1 => 1, :id2 => 2) }
|
27
|
+
|
28
|
+
it "should be equal" do
|
29
|
+
handle_a.should == handle_b
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "when id1 and id2 values are different" do
|
34
|
+
let(:handle_b) { Economic::Entity::Handle.new(:id1 => 11, :id2 => 12) }
|
35
|
+
|
36
|
+
it "should_not be equal" do
|
37
|
+
handle_a.should_not == handle_b
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
21
42
|
end
|
22
43
|
|
23
44
|
describe ".new" do
|
@@ -213,4 +213,35 @@ describe Economic::Entity do
|
|
213
213
|
subject.update_properties(:foo => 'bar', 'baz' => 'qux')
|
214
214
|
end
|
215
215
|
end
|
216
|
+
|
217
|
+
describe "equality" do
|
218
|
+
context "when other is nil do" do
|
219
|
+
let(:other) { nil }
|
220
|
+
|
221
|
+
it "should return true" do
|
222
|
+
subject.should_not == other
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
context "when other handle is equal" do
|
227
|
+
context "when other is same class" do
|
228
|
+
let(:other) { Economic::Entity.new(:session => session, :handle => subject.handle) }
|
229
|
+
|
230
|
+
it "should return true" do
|
231
|
+
subject.should == other
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
context "when other is child class" do
|
236
|
+
let(:other) { Economic::Debtor.new(:session => session, :handle => subject.handle) }
|
237
|
+
|
238
|
+
it "should return true" do
|
239
|
+
subject.should == other
|
240
|
+
end
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
end
|
216
247
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require './spec/spec_helper'
|
2
|
+
|
3
|
+
describe Economic::Entry do
|
4
|
+
let(:session) { make_session }
|
5
|
+
subject { Economic::Entry.new(:session => session) }
|
6
|
+
|
7
|
+
it "inherits from Economic::Entity" do
|
8
|
+
Economic::Entry.ancestors.should include(Economic::Entity)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".proxy" do
|
12
|
+
it "should return a EntryProxy" do
|
13
|
+
subject.proxy.should be_instance_of(Economic::EntryProxy)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should return a proxy owned by session" do
|
17
|
+
subject.proxy.session.should == session
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -51,11 +51,44 @@ describe Economic::CashBookEntryProxy do
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
+
describe "#create_creditor_invoice" do
|
55
|
+
it 'should create a creditor invoice and then return the created cash book entry' do
|
56
|
+
savon.stubs('CashBookEntry_CreateCreditorInvoice').returns(:success)
|
57
|
+
savon.stubs('CashBookEntry_GetData').with(:id1 => 13, :id2 => 14).returns(:success)
|
58
|
+
cash_book_entry = subject.create_creditor_invoice(:creditor_handle => { :number => 2 }, :contra_account_handle => { :number => 3 })
|
59
|
+
cash_book_entry.should be_instance_of(Economic::CashBookEntry)
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should not send handles that were not given' do
|
63
|
+
savon.stubs('CashBookEntry_CreateCreditorInvoice').with(:cashBookHandle => { 'Number' => 13 }).returns(:success)
|
64
|
+
savon.stubs('CashBookEntry_GetData').with(:id1 => 13, :id2 => 14).returns(:success)
|
65
|
+
cash_book_entry = subject.create_creditor_invoice({})
|
66
|
+
cash_book_entry.should be_instance_of(Economic::CashBookEntry)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "#create_creditor_payment" do
|
71
|
+
it 'should create a creditor payment and then return the created cash book entry' do
|
72
|
+
savon.stubs('CashBookEntry_CreateCreditorPayment').returns(:success)
|
73
|
+
savon.stubs('CashBookEntry_GetData').with(:id1 => 13, :id2 => 14).returns(:success)
|
74
|
+
cash_book_entry = subject.create_creditor_payment(:creditor_handle => { :number => 2 }, :contra_account_handle => { :number => 3 })
|
75
|
+
cash_book_entry.should be_instance_of(Economic::CashBookEntry)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "#set_due_date" do
|
80
|
+
it 'should set due date' do
|
81
|
+
savon.expects('CashBookEntry_SetDueDate').with("cashBookEntryHandle" => { "Id1" => subject.owner.id, "Id2" => 234 }, :value => Date.new(2012, 12, 21)).returns(:success)
|
82
|
+
subject.set_due_date(234, Date.new(2012, 12, 21))
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
54
86
|
describe "#all" do
|
55
87
|
it 'should get the cash book entries' do
|
56
88
|
savon.stubs('CashBook_GetEntries').returns(:success)
|
57
|
-
|
58
|
-
subject.
|
89
|
+
subject.expects(:find).in_sequence.with({:id1 => '1', :id2 => '2'})
|
90
|
+
subject.expects(:find).in_sequence.with({:id1 => '11', :id2 => '12'})
|
91
|
+
subject.all
|
59
92
|
end
|
60
93
|
end
|
61
94
|
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require './spec/spec_helper'
|
2
|
+
|
3
|
+
describe Economic::CreditorContactProxy do
|
4
|
+
let(:session) { make_session }
|
5
|
+
subject { Economic::CreditorContactProxy.new(session) }
|
6
|
+
|
7
|
+
describe ".new" do
|
8
|
+
it "stores session" do
|
9
|
+
subject.session.should === session
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe ".build" do
|
14
|
+
it "instantiates a new CreditorContact" do
|
15
|
+
subject.build.should be_instance_of(Economic::CreditorContact)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "assigns the session to the CreditorContact" do
|
19
|
+
subject.build.session.should === session
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should not build a partial CreditorContact" do
|
23
|
+
subject.build.should_not be_partial
|
24
|
+
end
|
25
|
+
|
26
|
+
context "when owner is a Creditor" do
|
27
|
+
let(:creditor) { make_creditor(:session => session) }
|
28
|
+
subject { creditor.contacts }
|
29
|
+
|
30
|
+
it "should use the Creditors session" do
|
31
|
+
subject.build.session.should == creditor.session
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should initialize with values from Creditor" do
|
35
|
+
contact = subject.build
|
36
|
+
contact.creditor_handle.should == creditor.handle
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe ".find" do
|
42
|
+
before :each do
|
43
|
+
savon.stubs('CreditorContact_GetData').returns(:success)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "gets contact data from API" do
|
47
|
+
savon.expects('CreditorContact_GetData').with('entityHandle' => {'Id' => 42}).returns(:success)
|
48
|
+
subject.find(42)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "returns CreditorContact object" do
|
52
|
+
subject.find(42).should be_instance_of(Economic::CreditorContact)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require './spec/spec_helper'
|
2
|
+
|
3
|
+
describe Economic::CreditorEntryProxy do
|
4
|
+
let(:session) { make_session }
|
5
|
+
subject { Economic::CreditorEntryProxy.new(session) }
|
6
|
+
|
7
|
+
describe "new" do
|
8
|
+
it "stores session" do
|
9
|
+
subject.session.should === session
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#find_by_invoice_number" do
|
14
|
+
it 'should be able to find multiple creditor entries' do
|
15
|
+
savon.expects("CreditorEntry_FindByInvoiceNumber").with('invoiceNumber' => '123').returns(:many)
|
16
|
+
subject.find_by_invoice_number('123').should == [1, 2]
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should handle a single serial number in the response' do
|
20
|
+
savon.stubs("CreditorEntry_FindByInvoiceNumber").returns(:single)
|
21
|
+
subject.find_by_invoice_number('123').should == [1]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#find" do
|
26
|
+
it 'should get a creditor entry by serial number' do
|
27
|
+
savon.expects("CreditorEntry_GetData").with('entityHandle' => { 'SerialNumber' => '123' }).returns(:success)
|
28
|
+
subject.find('123').should be_instance_of(Economic::CreditorEntry)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#match" do
|
33
|
+
it 'should match two creditor entries by serial numbers' do
|
34
|
+
savon.stubs("CreditorEntry_MatchEntries").with(
|
35
|
+
:entries => [
|
36
|
+
{ :creditor_entry_handle => { :serial_number => 1 } },
|
37
|
+
{ :credior_entry_handle => { :serial_number => 2 } }
|
38
|
+
]
|
39
|
+
).returns(:success)
|
40
|
+
subject.match(1, 2)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "#entity_class" do
|
45
|
+
it "should return Economic::CreditorEntry" do
|
46
|
+
Economic::CreditorEntryProxy.entity_class.should == Economic::CreditorEntry
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require './spec/spec_helper'
|
2
|
+
|
3
|
+
describe Economic::CreditorProxy do
|
4
|
+
let(:session) { make_session }
|
5
|
+
subject { Economic::CreditorProxy.new(session) }
|
6
|
+
|
7
|
+
describe "new" do
|
8
|
+
it "stores session" do
|
9
|
+
subject.session.should === session
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "find" do
|
14
|
+
before :each do
|
15
|
+
savon.stubs('Creditor_GetData').returns(:success)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "gets creditor data from API" do
|
19
|
+
savon.expects('Creditor_GetData').with('entityHandle' => {'Number' => 42}).returns(:success)
|
20
|
+
subject.find(42)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns Creditor object" do
|
24
|
+
subject.find(42).should be_instance_of(Economic::Creditor)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "find_by_number" do
|
29
|
+
it "can find a creditor" do
|
30
|
+
savon.expects('Creditor_FindByNumber').with('number' => '1').returns(:found)
|
31
|
+
result = subject.find_by_number('1')
|
32
|
+
result.should be_instance_of(Economic::Creditor)
|
33
|
+
result.number.should == 1
|
34
|
+
result.partial.should be_true
|
35
|
+
result.persisted.should be_true
|
36
|
+
result.handle.should == Economic::Entity::Handle.new({ :number => 1 })
|
37
|
+
end
|
38
|
+
|
39
|
+
it "returns nil when there is no creditor" do
|
40
|
+
savon.expects('Creditor_FindByNumber').with('number' => '1').returns(:not_found)
|
41
|
+
result = subject.find_by_number('1')
|
42
|
+
result.should be_nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "build" do
|
47
|
+
subject { session.creditors.build }
|
48
|
+
|
49
|
+
it "instantiates a new Creditor" do
|
50
|
+
subject.should be_instance_of(Economic::Creditor)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "assigns the session to the Creditor" do
|
54
|
+
subject.session.should === session
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "#entity_class" do
|
59
|
+
it "should return Economic::Creditor" do
|
60
|
+
Economic::CreditorProxy.entity_class.should == Economic::Creditor
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe ".all" do
|
65
|
+
it "returns a single creditor" do
|
66
|
+
savon.expects('Creditor_GetAll').returns(:single)
|
67
|
+
savon.expects('Creditor_GetData').with('entityHandle' => {'Number' => 1}).returns(:success)
|
68
|
+
all = subject.all
|
69
|
+
all.size.should == 1
|
70
|
+
all.first.should be_instance_of(Economic::Creditor)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "returns multiple creditors" do
|
74
|
+
savon.expects('Creditor_GetAll').returns(:multiple)
|
75
|
+
savon.expects('Creditor_GetDataArray').returns(:multiple)
|
76
|
+
all = subject.all
|
77
|
+
all.size.should == 2
|
78
|
+
all.first.should be_instance_of(Economic::Creditor)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -85,7 +85,7 @@ describe Economic::CurrentInvoiceLineProxy do
|
|
85
85
|
it "can be iterated over" do
|
86
86
|
line = Economic::CurrentInvoiceLine.new
|
87
87
|
subject << line
|
88
|
-
subject.all? { |l| l
|
88
|
+
subject.all? { |l| l.is_a?(Economic::CurrentInvoiceLine) }.should be_true
|
89
89
|
end
|
90
90
|
end
|
91
91
|
end
|
@@ -68,7 +68,7 @@ describe Economic::CurrentInvoiceProxy do
|
|
68
68
|
it "should be able to return a single current invoice" do
|
69
69
|
from = Time.now - 60
|
70
70
|
unto = Time.now
|
71
|
-
savon.expects('CurrentInvoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601).returns(:single)
|
71
|
+
savon.expects('CurrentInvoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601, :order! => ['first', 'last']).returns(:single)
|
72
72
|
savon.expects('CurrentInvoice_GetData').returns(:success)
|
73
73
|
results = subject.find_by_date_interval(from, unto)
|
74
74
|
results.size.should == 1
|
@@ -78,7 +78,7 @@ describe Economic::CurrentInvoiceProxy do
|
|
78
78
|
it "should be able to return multiple invoices" do
|
79
79
|
from = Time.now - 60
|
80
80
|
unto = Time.now
|
81
|
-
savon.expects('CurrentInvoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601).returns(:many)
|
81
|
+
savon.expects('CurrentInvoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601, :order! => ['first', 'last']).returns(:many)
|
82
82
|
savon.expects('CurrentInvoice_GetData').returns(:success)
|
83
83
|
savon.expects('CurrentInvoice_GetData').returns(:success)
|
84
84
|
results = subject.find_by_date_interval(from, unto)
|
@@ -89,7 +89,7 @@ describe Economic::CurrentInvoiceProxy do
|
|
89
89
|
it "should be able to return nothing" do
|
90
90
|
from = Time.now - 60
|
91
91
|
unto = Time.now
|
92
|
-
savon.expects('CurrentInvoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601).returns(:none)
|
92
|
+
savon.expects('CurrentInvoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601, :order! => ['first', 'last']).returns(:none)
|
93
93
|
results = subject.find_by_date_interval(from, unto)
|
94
94
|
results.size.should == 0
|
95
95
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require './spec/spec_helper'
|
2
|
+
|
3
|
+
describe Economic::DebtorEntryProxy do
|
4
|
+
let(:session) { make_session }
|
5
|
+
subject { Economic::DebtorEntryProxy.new(session) }
|
6
|
+
|
7
|
+
describe "new" do
|
8
|
+
it "stores session" do
|
9
|
+
subject.session.should === session
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#find_by_invoice_number" do
|
14
|
+
it 'should be able to find multiple debtor entries' do
|
15
|
+
savon.expects("DebtorEntry_FindByInvoiceNumber").with('from' => '123', 'to' => '456', :order! => ['from', 'to']).returns(:many)
|
16
|
+
subject.find_by_invoice_number('123', '456').should == [1, 2]
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should be able to find debtor entries with one invoice id' do
|
20
|
+
savon.expects("DebtorEntry_FindByInvoiceNumber").with('from' => '123', 'to' => '123', :order! => ['from', 'to']).returns(:many)
|
21
|
+
subject.find_by_invoice_number('123').should == [1, 2]
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should handle a single serial number in the response' do
|
25
|
+
savon.stubs("DebtorEntry_FindByInvoiceNumber").returns(:single)
|
26
|
+
subject.find_by_invoice_number('123').should == [1]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#match" do
|
31
|
+
it 'should match two debtor entries by serial numbers' do
|
32
|
+
savon.stubs("DebtorEntry_MatchEntries").with(
|
33
|
+
:entries => [
|
34
|
+
{ :debtor_entry_handle => { :serial_number => 1 } },
|
35
|
+
{ :debtor_entry_handle => { :serial_number => 2 } }
|
36
|
+
]
|
37
|
+
).returns(:success)
|
38
|
+
subject.match(1, 2)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#entity_class" do
|
43
|
+
it "should return Economic::DebtorEntry" do
|
44
|
+
Economic::DebtorEntryProxy.entity_class.should == Economic::DebtorEntry
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|