rconomic 0.4 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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