rconomic 0.4 → 0.4.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.
Files changed (43) hide show
  1. checksums.yaml +15 -0
  2. data/.travis.yml +1 -2
  3. data/Gemfile +1 -1
  4. data/README.md +1 -1
  5. data/lib/economic/account.rb +2 -2
  6. data/lib/economic/cash_book.rb +1 -1
  7. data/lib/economic/cash_book_entry.rb +33 -36
  8. data/lib/economic/creditor.rb +2 -2
  9. data/lib/economic/creditor_contact.rb +3 -3
  10. data/lib/economic/current_invoice.rb +26 -25
  11. data/lib/economic/current_invoice_line.rb +17 -17
  12. data/lib/economic/debtor.rb +3 -3
  13. data/lib/economic/debtor_contact.rb +4 -4
  14. data/lib/economic/debtor_entry.rb +1 -2
  15. data/lib/economic/entity/handle.rb +30 -8
  16. data/lib/economic/entity.rb +23 -3
  17. data/lib/economic/entry.rb +1 -2
  18. data/lib/economic/invoice.rb +2 -2
  19. data/lib/economic/proxies/actions/find_by_ci_number.rb +25 -0
  20. data/lib/economic/proxies/actions/find_by_date_interval.rb +27 -0
  21. data/lib/economic/proxies/actions/find_by_handle_with_number.rb +12 -0
  22. data/lib/economic/proxies/actions/find_by_number.rb +21 -0
  23. data/lib/economic/proxies/creditor_contact_proxy.rb +1 -1
  24. data/lib/economic/proxies/creditor_proxy.rb +6 -53
  25. data/lib/economic/proxies/current_invoice_line_proxy.rb +1 -1
  26. data/lib/economic/proxies/current_invoice_proxy.rb +2 -17
  27. data/lib/economic/proxies/debtor_contact_proxy.rb +2 -2
  28. data/lib/economic/proxies/debtor_proxy.rb +6 -53
  29. data/lib/economic/proxies/entity_proxy.rb +27 -11
  30. data/lib/economic/proxies/invoice_proxy.rb +4 -26
  31. data/lib/rconomic/version.rb +1 -1
  32. data/spec/economic/cash_book_entry_spec.rb +8 -0
  33. data/spec/economic/current_invoice_line_spec.rb +27 -0
  34. data/spec/economic/current_invoice_spec.rb +24 -1
  35. data/spec/economic/entity/handle_spec.rb +53 -3
  36. data/spec/economic/entity_spec.rb +41 -13
  37. data/spec/economic/proxies/cash_book_entry_proxy_spec.rb +0 -7
  38. data/spec/economic/proxies/current_invoice_proxy_spec.rb +4 -9
  39. data/spec/economic/proxies/debtor_proxy_spec.rb +1 -1
  40. data/spec/economic/proxies/invoice_proxy_spec.rb +4 -9
  41. data/spec/fixtures/invoice_get_data_array/multiple.xml +143 -0
  42. data/spec/fixtures/invoice_get_data_array/single.xml +75 -0
  43. metadata +64 -80
@@ -1,60 +1,13 @@
1
1
  require 'economic/proxies/entity_proxy'
2
+ require 'economic/proxies/actions/find_by_ci_number'
3
+ require 'economic/proxies/actions/find_by_handle_with_number'
4
+ require 'economic/proxies/actions/find_by_number'
2
5
 
3
6
  module Economic
4
7
  class CreditorProxy < EntityProxy
5
-
6
- # Fetches Creditor from API
7
- def find(handle)
8
- handle = if handle.respond_to?(:to_i)
9
- Entity::Handle.new(:number => handle.to_i)
10
- else
11
- Entity::Handle.new(handle)
12
- end
13
- super(handle)
14
- end
15
-
16
- # Returns Creditors that have the given ci_number. The Creditor objects will only be partially loaded
17
- def find_by_ci_number(ci_number)
18
- # Get a list of CreditorHandles from e-conomic
19
- response = session.request(entity_class.soap_action('FindByCINumber')) do
20
- soap.body = {
21
- 'ciNumber' => ci_number
22
- }
23
- end
24
-
25
- # Make sure we always have an array of handles even if the result only contains one
26
- handles = [response[:creditor_handle]].flatten.reject(&:blank?)
27
-
28
- # Create partial Creditor entities
29
- handles.collect do |handle|
30
- creditor = build
31
- creditor.partial = true
32
- creditor.persisted = true
33
- creditor.handle = handle
34
- creditor.number = handle[:number]
35
- creditor
36
- end
37
- end
38
-
39
- # Returns handle with a given number.
40
- def find_by_number(number)
41
- response = session.request(entity_class.soap_action('FindByNumber')) do
42
- soap.body = {
43
- 'number' => number
44
- }
45
- end
46
-
47
- if response == {}
48
- nil
49
- else
50
- creditor = build
51
- creditor.partial = true
52
- creditor.persisted = true
53
- creditor.handle = response
54
- creditor.number = response[:number].to_i
55
- creditor
56
- end
57
- end
8
+ include FindByCiNumber
9
+ include FindByHandleWithNumber
10
+ include FindByNumber
58
11
 
59
12
  def create_simple(opts)
60
13
  response = session.request(entity_class.soap_action('Create')) do
@@ -11,7 +11,7 @@ module Economic
11
11
 
12
12
  # Gets data for CurrentInvoiceLine from the API
13
13
  def find(handle)
14
- handle = Entity::Handle.new(:number => handle) unless handle.is_a?(Entity::Handle)
14
+ handle = Entity::Handle.build(:number => handle) unless handle.is_a?(Entity::Handle)
15
15
  super(handle)
16
16
  end
17
17
 
@@ -1,7 +1,9 @@
1
1
  require 'economic/proxies/entity_proxy'
2
+ require 'economic/proxies/actions/find_by_date_interval'
2
3
 
3
4
  module Economic
4
5
  class CurrentInvoiceProxy < EntityProxy
6
+ include FindByDateInterval
5
7
 
6
8
  # Returns a new, unpersisted Economic::CurrentInvoice
7
9
  def build(properties = {})
@@ -10,23 +12,6 @@ module Economic
10
12
  invoice
11
13
  end
12
14
 
13
- # Returns Economic::CurrentInvoice object for a given interval of days.
14
- def find_by_date_interval(from, unto)
15
- response = session.request entity_class.soap_action("FindByDateInterval") do
16
- soap.body = {
17
- 'first' => from.iso8601,
18
- 'last' => unto.iso8601,
19
- :order! => ['first', 'last']
20
- }
21
- end
22
-
23
- handles = [ response[:current_invoice_handle] ].flatten.reject(&:blank?)
24
-
25
- handles.collect do |handle|
26
- find(handle[:id])
27
- end
28
- end
29
-
30
15
  private
31
16
 
32
17
  # Initialize properties in invoice with values from owner
@@ -12,7 +12,7 @@ module Economic
12
12
 
13
13
  # Gets data for DebtorContact from the API
14
14
  def find(handle)
15
- handle = Entity::Handle.new(:id => handle) unless handle.is_a?(Entity::Handle)
15
+ handle = Entity::Handle.build(:id => handle) unless handle.is_a?(Entity::Handle)
16
16
  super(handle)
17
17
  end
18
18
 
@@ -61,4 +61,4 @@ module Economic
61
61
  end
62
62
 
63
63
  end
64
- end
64
+ end
@@ -1,60 +1,13 @@
1
1
  require 'economic/proxies/entity_proxy'
2
+ require 'economic/proxies/actions/find_by_ci_number'
3
+ require 'economic/proxies/actions/find_by_handle_with_number'
4
+ require 'economic/proxies/actions/find_by_number'
2
5
 
3
6
  module Economic
4
7
  class DebtorProxy < EntityProxy
5
-
6
- # Fetches Debtor from API
7
- def find(handle)
8
- handle = if handle.respond_to?(:to_i)
9
- Entity::Handle.new(:number => handle.to_i)
10
- else
11
- Entity::Handle.new(handle)
12
- end
13
- super(handle)
14
- end
15
-
16
- # Returns Debtors that have the given ci_number. The Debtor objects will only be partially loaded
17
- def find_by_ci_number(ci_number)
18
- # Get a list of DebtorHandles from e-conomic
19
- response = session.request entity_class.soap_action('FindByCINumber') do
20
- soap.body = {
21
- 'ciNumber' => ci_number
22
- }
23
- end
24
-
25
- # Make sure we always have an array of handles even if the result only contains one
26
- handles = [response[:debtor_handle]].flatten.reject(&:blank?)
27
-
28
- # Create partial Debtor entities
29
- handles.collect do |handle|
30
- debtor = build
31
- debtor.partial = true
32
- debtor.persisted = true
33
- debtor.handle = handle
34
- debtor.number = handle[:number]
35
- debtor
36
- end
37
- end
38
-
39
- # Returns handle with a given number.
40
- def find_by_number(number)
41
- response = session.request entity_class.soap_action('FindByNumber') do
42
- soap.body = {
43
- 'number' => number
44
- }
45
- end
46
-
47
- if response == {}
48
- nil
49
- else
50
- debtor = build
51
- debtor.partial = true
52
- debtor.persisted = true
53
- debtor.handle = response
54
- debtor.number = response[:number].to_i
55
- debtor
56
- end
57
- end
8
+ include FindByCiNumber
9
+ include FindByHandleWithNumber
10
+ include FindByNumber
58
11
 
59
12
  # Returns the next available debtor number
60
13
  def next_available_number
@@ -3,9 +3,12 @@ module Economic
3
3
  class << self
4
4
  # Returns the class this Proxy is a proxy for
5
5
  def entity_class
6
+ Economic.const_get(self.entity_class_name)
7
+ end
8
+
9
+ def entity_class_name
6
10
  proxy_class_name = name.split('::').last
7
- entity_class_name = proxy_class_name.sub(/Proxy$/, '')
8
- Economic.const_get(entity_class_name)
11
+ proxy_class_name.sub(/Proxy$/, '')
9
12
  end
10
13
  end
11
14
 
@@ -25,21 +28,17 @@ module Economic
25
28
  # Fetches all entities from the API.
26
29
  def all
27
30
  response = session.request(entity_class.soap_action(:get_all))
28
- handles = response.values.flatten.collect { |handle| Entity::Handle.new(handle) }
31
+ handles = response.values.flatten.collect { |handle| Entity::Handle.build(handle) }
29
32
 
30
33
  if handles.size == 1
31
34
  # Fetch data for single entity
32
35
  find(handles.first)
33
36
  elsif handles.size > 1
34
- entity_class_name = entity_class.name.split('::').last
35
-
36
37
  # Fetch all data for all the entities
37
- entity_data = session.request(entity_class.soap_action(:get_data_array)) do
38
- soap.body = {'entityHandles' => {"#{entity_class_name}Handle" => handles.collect(&:to_hash)}}
39
- end
38
+ entity_data = get_data_array(handles)
40
39
 
41
40
  # Build Entity objects and add them to the proxy
42
- entity_data["#{entity_class.key}_data".intern].each do |data|
41
+ entity_data.each do |data|
43
42
  entity = build(data)
44
43
  entity.persisted = true
45
44
  end
@@ -65,9 +64,14 @@ module Economic
65
64
  self.class.entity_class
66
65
  end
67
66
 
67
+ # Returns the name of the class this proxy manages
68
+ def entity_class_name
69
+ self.class.entity_class_name
70
+ end
71
+
68
72
  # Fetches Entity data from API and returns an Entity initialized with that data added to Proxy
69
73
  def find(handle)
70
- handle = Entity::Handle.new(handle) unless handle.is_a?(Entity::Handle)
74
+ handle = Entity::Handle.new(handle)
71
75
  entity_hash = get_data(handle)
72
76
  entity = build(entity_hash)
73
77
  entity.persisted = true
@@ -76,7 +80,7 @@ module Economic
76
80
 
77
81
  # Gets data for Entity from the API. Returns Hash with the response data
78
82
  def get_data(handle)
79
- handle = Entity::Handle.new(handle) unless handle.is_a?(Entity::Handle)
83
+ handle = Entity::Handle.new(handle)
80
84
 
81
85
  entity_hash = session.request(entity_class.soap_action(:get_data)) do
82
86
  soap.body = {
@@ -105,5 +109,17 @@ module Economic
105
109
  items.size
106
110
  end
107
111
 
112
+ protected
113
+
114
+ # Fetches all data for the given handles. Returns Array with hashes of entity data
115
+ def get_data_array(handles)
116
+ return [] unless handles && handles.any?
117
+
118
+ entity_class_name_for_soap_request = entity_class.name.split('::').last
119
+ response = session.request(entity_class.soap_action(:get_data_array)) do
120
+ soap.body = {'entityHandles' => {"#{entity_class_name_for_soap_request}Handle" => handles.collect(&:to_hash)}}
121
+ end
122
+ [response["#{entity_class.key}_data".intern]].flatten
123
+ end
108
124
  end
109
125
  end
@@ -1,32 +1,10 @@
1
1
  require 'economic/proxies/entity_proxy'
2
+ require 'economic/proxies/actions/find_by_date_interval'
3
+ require 'economic/proxies/actions/find_by_handle_with_number'
2
4
 
3
5
  module Economic
4
6
  class InvoiceProxy < EntityProxy
5
- # Gets data for Invoice from the API
6
- def find(handle)
7
- handle = if handle.respond_to?(:to_i)
8
- Entity::Handle.new(:number => handle.to_i)
9
- else
10
- Entity::Handle.new(handle)
11
- end
12
- super(handle)
13
- end
14
-
15
- # Returns Economic::Invoice objects for invoices in a given interval of days.
16
- def find_by_date_interval(from, unto)
17
- response = session.request entity_class.soap_action("FindByDateInterval") do
18
- soap.body = {
19
- 'first' => from.iso8601,
20
- 'last' => unto.iso8601,
21
- :order! => ['first', 'last']
22
- }
23
- end
24
-
25
- handles = [ response[:invoice_handle] ].flatten.reject(&:blank?)
26
-
27
- handles.collect do |handle|
28
- find(handle[:number])
29
- end
30
- end
7
+ include FindByDateInterval
8
+ include FindByHandleWithNumber
31
9
  end
32
10
  end
@@ -1,3 +1,3 @@
1
1
  module Rconomic
2
- VERSION = "0.4"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -17,4 +17,12 @@ describe Economic::CashBookEntry do
17
17
  subject.proxy.session.should == session
18
18
  end
19
19
  end
20
+
21
+ describe "#save" do
22
+ it 'should save it' do
23
+ savon.stubs('CashBookEntry_CreateFromData').returns(:success)
24
+ subject.save
25
+ end
26
+ end
27
+
20
28
  end
@@ -8,6 +8,33 @@ describe Economic::CurrentInvoiceLine do
8
8
  Economic::CurrentInvoiceLine.ancestors.should include(Economic::Entity)
9
9
  end
10
10
 
11
+ describe "equality" do
12
+ it "should not be equal when both are newly created" do
13
+ line1 = Economic::CurrentInvoiceLine.new({})
14
+ line2 = Economic::CurrentInvoiceLine.new({})
15
+
16
+ line1.should_not == line2
17
+ end
18
+
19
+ it "should not be equal when numbers are different" do
20
+ line1 = Economic::CurrentInvoiceLine.new({:number => 1})
21
+ line2 = Economic::CurrentInvoiceLine.new({:number => 2})
22
+
23
+ line1.should_not == line2
24
+ end
25
+ end
26
+
27
+ describe "#invoice=" do
28
+ it "changes the invoice_handle" do
29
+ invoice = Economic::CurrentInvoice.new(:id => 42)
30
+
31
+ subject.invoice = invoice
32
+
33
+ subject.invoice.should == invoice
34
+ subject.invoice_handle.should == invoice.handle
35
+ end
36
+ end
37
+
11
38
  describe ".proxy" do
12
39
  it "should return a CurrentInvoiceLineProxy" do
13
40
  subject.proxy.should be_instance_of(Economic::CurrentInvoiceLineProxy)
@@ -37,6 +37,23 @@ describe Economic::CurrentInvoice do
37
37
  savon.stubs('CurrentInvoice_CreateFromData').returns(:success)
38
38
  end
39
39
 
40
+ it "updates id with the created id" do
41
+ subject.save
42
+ subject.id.should == 42
43
+ end
44
+
45
+ it "updates handle with the created id" do
46
+ invoice = Economic::CurrentInvoice.new({})
47
+ invoice.session = session
48
+
49
+ # This line memoizes the handle with the wrong/old id (0). This is what
50
+ # we're testing changes
51
+ invoice.handle.id.should == 0
52
+
53
+ invoice.save
54
+ invoice.handle.should == Economic::Entity::Handle.new(:id => 42)
55
+ end
56
+
40
57
  context "when invoice has lines" do
41
58
  before :each do
42
59
  2.times do
@@ -105,7 +122,13 @@ describe Economic::CurrentInvoice do
105
122
  end
106
123
 
107
124
  describe "#attention" do
108
- let(:contact) { (c = Economic::DebtorContact.new).tap { c.session = session }}
125
+ let(:contact) {
126
+ c = Economic::DebtorContact.new(
127
+ :handle => Economic::Entity::Handle.new({:id => 12, :number => 34})
128
+ )
129
+ c.session = session
130
+ c
131
+ }
109
132
 
110
133
  it "should be set- and gettable" do
111
134
  subject.attention = contact
@@ -19,6 +19,15 @@ describe Economic::Entity::Handle do
19
19
  handle_a.should_not == handle_d
20
20
  end
21
21
 
22
+ it "should not equal if both are empty" do
23
+ Economic::Entity::Handle.new({}).should_not == Economic::Entity::Handle.new({})
24
+ end
25
+
26
+ it "should be equal if both are the same object" do
27
+ handle = Economic::Entity::Handle.new({})
28
+ handle.should == handle
29
+ end
30
+
22
31
  describe "CashBookEntry handles" do
23
32
  let(:handle_a) { Economic::Entity::Handle.new(:id1 => 1, :id2 => 2) }
24
33
 
@@ -38,7 +47,6 @@ describe Economic::Entity::Handle do
38
47
  end
39
48
  end
40
49
  end
41
-
42
50
  end
43
51
 
44
52
  describe ".new" do
@@ -126,12 +134,54 @@ describe Economic::Entity::Handle do
126
134
  end
127
135
  end
128
136
 
137
+ describe ".build" do
138
+ it "returns nil when given nil" do
139
+ Economic::Entity::Handle.build(nil).should be_nil
140
+ end
141
+
142
+ it "returns empty handle when hash is empty" do
143
+ Economic::Entity::Handle.build({}).should be_empty
144
+ end
145
+
146
+ it "returns nil when hash has no values" do
147
+ Economic::Entity::Handle.build({:id => nil, :number => nil}).should be_empty
148
+ end
149
+
150
+ it "returns handle when hash has values" do
151
+ Economic::Entity::Handle.build({:id2 => 42}).should == Economic::Entity::Handle.new({:id2 => 42})
152
+ end
153
+
154
+ it "returns a given handle" do
155
+ handle = Economic::Entity::Handle.new({})
156
+ Economic::Entity::Handle.build(handle).should === handle
157
+ end
158
+ end
159
+
160
+ describe "#empty?" do
161
+ it "returns true when handle has no values" do
162
+ Economic::Entity::Handle.new({}).should be_empty
163
+ end
164
+
165
+ it "returns false when handle has a value" do
166
+ Economic::Entity::Handle.new({:serial_number => 12}).should_not be_empty
167
+ end
168
+ end
169
+
129
170
  describe ".to_hash" do
130
- subject { Economic::Entity::Handle.new({:id => 42, :number => 37}) }
171
+ subject { Economic::Entity::Handle.new({:id => 42, :number => 37, :serial_number => 7}) }
131
172
 
132
173
  it "should return a handle for putting into the body of a SOAP request" do
133
- subject.to_hash.should == {'Id' => 42, 'Number' => 37}
174
+ subject.to_hash.should == {'Id' => 42, 'Number' => 37, 'SerialNumber' => 7}
175
+ end
176
+
177
+ it "includes only the named value in the hash" do
178
+ subject.to_hash(:id).should == {'Id' => 42}
179
+ end
180
+
181
+ it "includes only the named values in the hash" do
182
+ subject.to_hash([:id, :serial_number]).should == {'Id' => 42, 'SerialNumber' => 7}
134
183
  end
135
184
  end
185
+
136
186
  end
137
187
 
@@ -1,7 +1,7 @@
1
1
  require './spec/spec_helper'
2
2
 
3
3
  class SpecEntity < Economic::Entity
4
- has_properties :foo, :baz
4
+ has_properties :id, :foo, :baz
5
5
 
6
6
  def existing_method; end
7
7
 
@@ -64,8 +64,8 @@ describe Economic::Entity do
64
64
  subject.has_properties :id, :number, :handle
65
65
  end
66
66
 
67
- it "does not clobber existing methods" do
68
- subject.expects(:define_method).with('existing_method').never
67
+ it "does clobber existing methods" do
68
+ subject.expects(:define_method).with('existing_method')
69
69
  subject.has_properties :existing_method
70
70
  end
71
71
 
@@ -215,33 +215,61 @@ describe Economic::Entity do
215
215
  end
216
216
 
217
217
  describe "equality" do
218
+ subject { SpecEntity.new }
219
+ let(:other) { SpecEntity.new }
220
+
218
221
  context "when other is nil do" do
219
- let(:other) { nil }
222
+ it { should_not == nil }
223
+ end
224
+
225
+ context "when both handles are empty" do
226
+ it "returns false" do
227
+ subject.handle = Economic::Entity::Handle.new({})
228
+ other.handle = Economic::Entity::Handle.new({})
229
+
230
+ subject.should_not == other
231
+ end
232
+ end
233
+
234
+ context "when self handle isn't present" do
235
+ it "returns false" do
236
+ subject.handle = nil
237
+ subject.should_not == other
238
+ end
239
+ end
220
240
 
221
- it "should return true" do
241
+ context "when other handle isn't present" do
242
+ it "returns false" do
243
+ other.handle = nil
222
244
  subject.should_not == other
223
245
  end
224
246
  end
225
247
 
226
248
  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) }
249
+ let(:handle) { Economic::Entity::Handle.new(:id => 42) }
250
+ subject { Economic::Debtor.new(:handle => handle) }
251
+
252
+ context "when other is another class" do
253
+ it "should return false" do
254
+ other = Economic::CashBook.new(:handle => handle)
255
+ subject.should_not == other
256
+ end
257
+ end
229
258
 
259
+ context "when other is same class" do
230
260
  it "should return true" do
261
+ other = Economic::Debtor.new(:handle => handle)
231
262
  subject.should == other
232
263
  end
233
264
  end
234
265
 
235
266
  context "when other is child class" do
236
- let(:other) { Economic::Debtor.new(:session => session, :handle => subject.handle) }
237
-
238
267
  it "should return true" do
239
- subject.should == other
268
+ one = Economic::Entity.new(:handle => handle)
269
+ other = SpecEntity.new(:handle => handle)
270
+ one.should == other
240
271
  end
241
272
  end
242
273
  end
243
-
244
-
245
-
246
274
  end
247
275
  end
@@ -26,13 +26,6 @@ describe Economic::CashBookEntryProxy do
26
26
  end
27
27
  end
28
28
 
29
- describe "#save" do
30
- it 'should save it' do
31
- savon.stubs('CashBookEntry_CreateFromData').returns(:success)
32
- subject.build.save
33
- end
34
- end
35
-
36
29
  describe "#create_finance_voucher" do
37
30
  it 'should create a finance voucher and return the created cash book entry' do
38
31
  savon.stubs('CashBookEntry_CreateFinanceVoucher').returns(:success)
@@ -64,31 +64,26 @@ describe Economic::CurrentInvoiceProxy do
64
64
  end
65
65
 
66
66
  describe ".find_by_date_interval" do
67
+ let(:from) { Time.now - 60 }
68
+ let(:unto) { Time.now }
67
69
 
68
70
  it "should be able to return a single current invoice" do
69
- from = Time.now - 60
70
- unto = Time.now
71
71
  savon.expects('CurrentInvoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601, :order! => ['first', 'last']).returns(:single)
72
- savon.expects('CurrentInvoice_GetData').returns(:success)
72
+ savon.expects('CurrentInvoice_GetDataArray').returns(:single)
73
73
  results = subject.find_by_date_interval(from, unto)
74
74
  results.size.should == 1
75
75
  results.first.should be_instance_of(Economic::CurrentInvoice)
76
76
  end
77
77
 
78
78
  it "should be able to return multiple invoices" do
79
- from = Time.now - 60
80
- unto = Time.now
81
79
  savon.expects('CurrentInvoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601, :order! => ['first', 'last']).returns(:many)
82
- savon.expects('CurrentInvoice_GetData').returns(:success)
83
- savon.expects('CurrentInvoice_GetData').returns(:success)
80
+ savon.expects('CurrentInvoice_GetDataArray').returns(:multiple)
84
81
  results = subject.find_by_date_interval(from, unto)
85
82
  results.size.should == 2
86
83
  results.first.should be_instance_of(Economic::CurrentInvoice)
87
84
  end
88
85
 
89
86
  it "should be able to return nothing" do
90
- from = Time.now - 60
91
- unto = Time.now
92
87
  savon.expects('CurrentInvoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601, :order! => ['first', 'last']).returns(:none)
93
88
  results = subject.find_by_date_interval(from, unto)
94
89
  results.size.should == 0
@@ -61,7 +61,7 @@ describe Economic::DebtorProxy do
61
61
  result.number.should == 1
62
62
  result.partial.should be_true
63
63
  result.persisted.should be_true
64
- result.handle.should == Economic::Entity::Handle.new({ :number => 1 })
64
+ result.handle.should == Economic::Entity::Handle.new({:number => 1})
65
65
  end
66
66
 
67
67
  it "returns nil when there is no debtor" do
@@ -41,31 +41,26 @@ describe Economic::InvoiceProxy do
41
41
  end
42
42
 
43
43
  describe ".find_by_date_interval" do
44
+ let(:from) { Time.now - 60 }
45
+ let(:unto) { Time.now }
44
46
 
45
47
  it "should be able to return a single current invoice" do
46
- from = Time.now - 60
47
- unto = Time.now
48
48
  savon.expects('Invoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601, :order! => ['first', 'last']).returns(:single)
49
- savon.expects('Invoice_GetData').returns(:success)
49
+ savon.expects('Invoice_GetDataArray').returns(:single)
50
50
  results = subject.find_by_date_interval(from, unto)
51
51
  results.size.should == 1
52
52
  results.first.should be_instance_of(Economic::Invoice)
53
53
  end
54
54
 
55
55
  it "should be able to return multiple invoices" do
56
- from = Time.now - 60
57
- unto = Time.now
58
56
  savon.expects('Invoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601, :order! => ['first', 'last']).returns(:many)
59
- savon.expects('Invoice_GetData').returns(:success)
60
- savon.expects('Invoice_GetData').returns(:success)
57
+ savon.expects('Invoice_GetDataArray').returns(:multiple)
61
58
  results = subject.find_by_date_interval(from, unto)
62
59
  results.size.should == 2
63
60
  results.first.should be_instance_of(Economic::Invoice)
64
61
  end
65
62
 
66
63
  it "should be able to return nothing" do
67
- from = Time.now - 60
68
- unto = Time.now
69
64
  savon.expects('Invoice_FindByDateInterval').with('first' => from.iso8601, 'last' => unto.iso8601, :order! => ['first', 'last']).returns(:none)
70
65
  results = subject.find_by_date_interval(from, unto)
71
66
  results.size.should == 0