rconomic 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +6 -14
  2. data/.travis.yml +0 -1
  3. data/Gemfile +0 -1
  4. data/lib/economic/account.rb +3 -5
  5. data/lib/economic/cash_book.rb +1 -1
  6. data/lib/economic/cash_book_entry.rb +92 -94
  7. data/lib/economic/creditor.rb +1 -1
  8. data/lib/economic/creditor_contact.rb +15 -17
  9. data/lib/economic/creditor_entry.rb +0 -1
  10. data/lib/economic/current_invoice.rb +32 -35
  11. data/lib/economic/current_invoice_line.rb +14 -2
  12. data/lib/economic/debtor.rb +60 -37
  13. data/lib/economic/debtor_contact.rb +26 -20
  14. data/lib/economic/endpoint.rb +72 -0
  15. data/lib/economic/entity/handle.rb +35 -21
  16. data/lib/economic/entity/mapper.rb +41 -0
  17. data/lib/economic/entity.rb +58 -34
  18. data/lib/economic/invoice.rb +15 -2
  19. data/lib/economic/proxies/account_proxy.rb +2 -3
  20. data/lib/economic/proxies/actions/find_by_ci_number.rb +4 -2
  21. data/lib/economic/proxies/actions/find_by_date_interval.rb +0 -1
  22. data/lib/economic/proxies/actions/find_by_name.rb +5 -1
  23. data/lib/economic/proxies/cash_book_entry_proxy.rb +1 -1
  24. data/lib/economic/proxies/entity_proxy.rb +15 -8
  25. data/lib/economic/session.rb +27 -31
  26. data/lib/rconomic/version.rb +1 -1
  27. data/rconomic.gemspec +1 -5
  28. data/spec/economic/cash_book_entry_spec.rb +27 -5
  29. data/spec/economic/cash_book_spec.rb +6 -6
  30. data/spec/economic/creditor_contact_spec.rb +24 -15
  31. data/spec/economic/creditor_spec.rb +9 -9
  32. data/spec/economic/current_invoice_line_spec.rb +7 -7
  33. data/spec/economic/current_invoice_spec.rb +82 -33
  34. data/spec/economic/debtor_contact_spec.rb +25 -15
  35. data/spec/economic/debtor_entry_spec.rb +3 -3
  36. data/spec/economic/debtor_spec.rb +49 -15
  37. data/spec/economic/endpoint_spec.rb +71 -0
  38. data/spec/economic/entity/handle_spec.rb +42 -49
  39. data/spec/economic/entity/mapper_spec.rb +54 -0
  40. data/spec/economic/entity_spec.rb +78 -72
  41. data/spec/economic/entry_spec.rb +3 -3
  42. data/spec/economic/invoice_spec.rb +37 -18
  43. data/spec/economic/proxies/actions/find_by_name_spec.rb +15 -12
  44. data/spec/economic/proxies/cash_book_entry_proxy_spec.rb +26 -24
  45. data/spec/economic/proxies/cash_book_proxy_spec.rb +23 -21
  46. data/spec/economic/proxies/creditor_contact_proxy_spec.rb +12 -16
  47. data/spec/economic/proxies/creditor_entry_proxy_spec.rb +18 -14
  48. data/spec/economic/proxies/creditor_proxy_spec.rb +23 -26
  49. data/spec/economic/proxies/current_invoice_line_proxy_spec.rb +17 -20
  50. data/spec/economic/proxies/current_invoice_proxy_spec.rb +38 -41
  51. data/spec/economic/proxies/debtor_contact_proxy_spec.rb +12 -15
  52. data/spec/economic/proxies/debtor_entry_proxy_spec.rb +18 -14
  53. data/spec/economic/proxies/debtor_proxy_spec.rb +31 -34
  54. data/spec/economic/proxies/entry_proxy_spec.rb +26 -22
  55. data/spec/economic/proxies/invoice_proxy_spec.rb +18 -21
  56. data/spec/economic/session_spec.rb +57 -44
  57. data/spec/fixtures/{spec_entity_create_from_data → account_create_from_data}/success.xml +5 -5
  58. data/spec/fixtures/{spec_entity_delete → account_delete}/success.xml +1 -1
  59. data/spec/fixtures/{spec_entity_get_data → account_get_data}/success.xml +5 -5
  60. data/spec/fixtures/{spec_entity_update_from_data → account_update_from_data}/success.xml +5 -5
  61. data/spec/fixtures/cash_book_entry_create_creditor_invoice/success.xml +2 -2
  62. data/spec/fixtures/cash_book_entry_create_creditor_payment/success.xml +2 -2
  63. data/spec/fixtures/creditor_contact_create_from_data/success.xml +10 -0
  64. data/spec/fixtures/debtor_contact_create_from_data/success.xml +10 -0
  65. data/spec/fixtures/debtor_create_from_data/success.xml +57 -0
  66. data/spec/spec_helper.rb +10 -104
  67. data/spec/support/api_requests.rb +20 -0
  68. data/spec/support/factories.rb +65 -0
  69. data/spec/support/fixtures.rb +9 -0
  70. metadata +27 -31
@@ -1,223 +1,229 @@
1
1
  require './spec/spec_helper'
2
2
 
3
- class SpecEntity < Economic::Entity
4
- has_properties :id, :foo, :baz
3
+ class Account < Economic::Entity
4
+ has_properties :id, :foo, :baz, :bar_handle
5
5
 
6
- def build_soap_data; {}; end
6
+ def build_soap_data; {:foo => "bar"}; end
7
7
  def existing_method; end
8
8
 
9
- def proxy; Economic::SpecEntityProxy.new(session); end
9
+ def proxy; Economic::AccountProxy.new(session); end
10
10
  end
11
11
 
12
- class Economic::SpecEntityProxy < Economic::EntityProxy; end
12
+ class Economic::AccountProxy < Economic::EntityProxy; end
13
13
 
14
14
  describe Economic::Entity do
15
15
  let(:session) { make_session }
16
16
 
17
17
  describe "class methods" do
18
- subject { SpecEntity }
18
+ subject { Account }
19
19
 
20
20
  describe "new" do
21
21
  subject { Economic::Entity.new }
22
22
 
23
23
  it "creates a new instance" do
24
- subject.should be_instance_of(Economic::Entity)
24
+ expect(subject).to be_instance_of(Economic::Entity)
25
25
  end
26
26
 
27
27
  it "sets persisted to false" do
28
- subject.should_not be_persisted
28
+ expect(subject).to_not be_persisted
29
29
  end
30
30
 
31
31
  it "sets partial to true" do
32
- subject.should be_partial
32
+ expect(subject).to be_partial
33
33
  end
34
34
 
35
35
  it "initializes the entity with values from the given hash" do
36
- entity = SpecEntity.new(:foo => 'bar', :baz => 'qux')
37
- entity.foo.should == 'bar'
38
- entity.baz.should == 'qux'
36
+ entity = Account.new(:foo => 'bar', :baz => 'qux')
37
+ expect(entity.foo).to eq('bar')
38
+ expect(entity.baz).to eq('qux')
39
39
  end
40
40
  end
41
41
 
42
42
  describe "properties_not_triggering_full_load" do
43
43
  it "returns names of special id'ish properties" do
44
- subject.properties_not_triggering_full_load.should == [:id, :number, :handle]
44
+ expect(subject.properties_not_triggering_full_load).to eq([:id, :number, :handle])
45
45
  end
46
46
  end
47
47
 
48
48
  describe "has_properties" do
49
49
  it "creates getter for all properties" do
50
- subject.expects(:define_method).with('name')
51
- subject.expects(:define_method).with('age')
50
+ expect(subject).to receive(:define_method).with('name')
51
+ expect(subject).to receive(:define_method).with('age')
52
52
  subject.has_properties :name, :age
53
53
  end
54
54
 
55
55
  it "creates setter for all properties" do
56
- subject.expects(:attr_writer).with(:name)
57
- subject.expects(:attr_writer).with(:age)
56
+ expect(subject).to receive(:attr_writer).with(:name)
57
+ expect(subject).to receive(:attr_writer).with(:age)
58
58
  subject.has_properties :name, :age
59
59
  end
60
60
 
61
+ describe "setter for handles" do
62
+ subject { Account.new }
63
+
64
+ it "accepts a Handle" do
65
+ subject.bar_handle = Economic::Entity::Handle.new(:id => 2)
66
+ expect(subject.bar_handle.id).to eq(2)
67
+ end
68
+
69
+ it "converts Hash input to Handle" do
70
+ subject.bar_handle = {:id => 1}
71
+ expect(subject.bar_handle).to eq(Economic::Entity::Handle.new(:id => 1))
72
+ end
73
+ end
74
+
61
75
  it "does not create setter or getter for id'ish properties" do
62
- subject.expects(:define_method).with('id').never
63
- subject.expects(:define_method).with('number').never
64
- subject.expects(:define_method).with('handle').never
76
+ expect(subject).to receive(:define_method).with('id').never
77
+ expect(subject).to receive(:define_method).with('number').never
78
+ expect(subject).to receive(:define_method).with('handle').never
65
79
  subject.has_properties :id, :number, :handle
66
80
  end
67
81
 
68
82
  it "does clobber existing methods" do
69
- subject.expects(:define_method).with('existing_method')
83
+ expect(subject).to receive(:define_method).with('existing_method')
70
84
  subject.has_properties :existing_method
71
85
  end
72
86
 
73
87
  describe "properties created with has_properties" do
74
88
  end
75
89
  end
76
-
77
- describe "soap_action" do
78
- it "returns the name for the given soap action on this class" do
79
- subject.soap_action_name(:get_data).should == :spec_entity_get_data
80
-
81
- class Car < Economic::Entity; end
82
- Car.soap_action_name(:start_engine).should == :car_start_engine
83
- Car.soap_action_name('StartEngine').should == :car_start_engine
84
- end
85
- end
86
90
  end
87
91
 
88
92
  describe "get_data" do
89
- subject { (e = SpecEntity.new).tap { |e| e.session = session } }
93
+ subject { (e = Account.new).tap { |e| e.session = session } }
90
94
 
91
95
  before :each do
92
- savon.stubs(:spec_entity_get_data).returns(:success)
93
96
  end
94
97
 
95
98
  it "fetches data from API" do
96
99
  subject.instance_variable_set('@number', 42)
97
- savon.expects(:spec_entity_get_data).with('entityHandle' => {'Number' => 42}).returns(:success)
100
+ mock_request(:account_get_data, {'entityHandle' => {'Number' => 42}}, :success)
98
101
  subject.get_data
99
102
  end
100
103
 
101
104
  it "updates the entity with the response" do
102
- subject.expects(:update_properties).with({:foo => 'bar', :baz => 'qux'})
105
+ stub_request(:account_get_data, nil, :success)
106
+ expect(subject).to receive(:update_properties).with({:foo => 'bar', :baz => 'qux'})
103
107
  subject.get_data
104
108
  end
105
109
 
106
110
  it "sets partial to false" do
111
+ stub_request(:account_get_data, nil, :success)
107
112
  subject.get_data
108
- subject.should_not be_partial
113
+ expect(subject).to_not be_partial
109
114
  end
110
115
 
111
116
  it "sets persisted to true" do
117
+ stub_request(:account_get_data, nil, :success)
112
118
  subject.get_data
113
- subject.should be_persisted
119
+ expect(subject).to be_persisted
114
120
  end
115
121
  end
116
122
 
117
123
  describe "save" do
118
- subject { (e = SpecEntity.new).tap { |e| e.session = session } }
124
+ subject { (e = Account.new).tap { |e| e.session = session } }
119
125
 
120
126
  context "entity has not been persisted" do
121
127
  before :each do
122
- subject.stubs(:persisted?).returns(false)
128
+ allow(subject).to receive(:persisted?).and_return(false)
123
129
  end
124
130
 
125
131
  it "creates the entity" do
126
- subject.expects(:create)
132
+ expect(subject).to receive(:create)
127
133
  subject.save
128
134
  end
129
135
  end
130
136
 
131
137
  context "entity has already been persisted" do
132
138
  before :each do
133
- subject.stubs(:persisted?).returns(true)
139
+ allow(subject).to receive(:persisted?).and_return(true)
134
140
  end
135
141
 
136
142
  it "updates the entity" do
137
- subject.expects(:update)
143
+ expect(subject).to receive(:update)
138
144
  subject.save
139
145
  end
140
146
  end
141
147
  end
142
148
 
143
149
  describe "create" do
144
- subject { (e = SpecEntity.new).tap { |e| e.persisted = false; e.session = session } }
150
+ subject { (e = Account.new).tap { |e| e.persisted = false; e.session = session } }
145
151
 
146
152
  it "sends data to the API" do
147
- savon.expects(:spec_entity_create_from_data).returns(:success)
153
+ mock_request(:account_create_from_data, {"data" => {:foo => "bar"}}, :success)
148
154
  subject.save
149
155
  end
150
156
 
151
157
  it "updates handle with the number returned from API" do
152
- savon.expects(:spec_entity_create_from_data).returns(:success)
158
+ stub_request(:account_create_from_data, :any, :success)
153
159
  subject.save
154
- subject.number.should == '42'
160
+ expect(subject.number).to eq('42')
155
161
  end
156
162
  end
157
163
 
158
164
  describe ".proxy" do
159
- subject { (e = SpecEntity.new).tap { |e| e.session = session } }
165
+ subject { (e = Account.new).tap { |e| e.session = session } }
160
166
 
161
- it "should return SpecEntityProxy" do
162
- subject.proxy.should be_instance_of(Economic::SpecEntityProxy)
167
+ it "should return AccountProxy" do
168
+ expect(subject.proxy).to be_instance_of(Economic::AccountProxy)
163
169
  end
164
170
  end
165
171
 
166
172
  describe "update" do
167
- subject { (e = SpecEntity.new).tap { |e| e.persisted = true; e.session = session } }
173
+ subject { (e = Account.new).tap { |e| e.persisted = true; e.session = session } }
168
174
 
169
175
  it "sends data to the API" do
170
- savon.expects(:spec_entity_update_from_data).returns(:success)
176
+ mock_request(:account_update_from_data, {"data" => {:foo => "bar"}}, :success)
171
177
  subject.save
172
178
  end
173
179
  end
174
180
 
175
181
  describe "destroy" do
176
- subject { (e = SpecEntity.new).tap { |e| e.id = 42; e.persisted = true; e.partial = false; e.session = session } }
182
+ subject { (e = Account.new).tap { |e| e.id = 42; e.persisted = true; e.partial = false; e.session = session } }
177
183
 
178
184
  it "sends data to the API" do
179
- savon.expects(:spec_entity_delete).returns(:success)
185
+ mock_request(:account_delete, :any, :success)
180
186
  subject.destroy
181
187
  end
182
188
 
183
189
  it "should request with the correct model and id" do
184
- savon.expects(:spec_entity_delete).with('specEntityHandle' => {'Id' => 42}).returns(:success)
190
+ mock_request(:account_delete, {'accountHandle' => {'Id' => 42}}, :success)
185
191
  subject.destroy
186
192
  end
187
193
 
188
194
  it "should mark the entity as not persisted and partial" do
189
- savon.expects(:spec_entity_delete).returns(:success)
195
+ mock_request(:account_delete, :any, :success)
190
196
  subject.destroy
191
- subject.should_not be_persisted
192
- subject.should be_partial
197
+ expect(subject).to_not be_persisted
198
+ expect(subject).to be_partial
193
199
  end
194
200
 
195
201
  it "should return the response" do
196
- session.expects(:request).returns({ :response => true })
197
- subject.destroy.should == { :response => true }
202
+ expect(session).to receive(:request).and_return({ :response => true })
203
+ expect(subject.destroy).to eq({ :response => true })
198
204
  end
199
205
  end
200
206
 
201
207
  describe "update_properties" do
202
- subject { SpecEntity.new }
208
+ subject { Account.new }
203
209
 
204
210
  it "sets the properties to the given values" do
205
211
  subject.class.has_properties :foo, :baz
206
- subject.expects(:foo=).with('bar')
207
- subject.expects(:baz=).with('qux')
212
+ expect(subject).to receive(:foo=).with('bar')
213
+ expect(subject).to receive(:baz=).with('qux')
208
214
  subject.update_properties(:foo => 'bar', 'baz' => 'qux')
209
215
  end
210
216
 
211
217
  it "only sets known properties" do
212
218
  subject.class.has_properties :foo, :bar
213
- subject.expects(:foo=).with('bar')
219
+ expect(subject).to receive(:foo=).with('bar')
214
220
  subject.update_properties(:foo => 'bar', 'baz' => 'qux')
215
221
  end
216
222
  end
217
223
 
218
224
  describe "equality" do
219
- subject { SpecEntity.new }
220
- let(:other) { SpecEntity.new }
225
+ subject { Account.new }
226
+ let(:other) { Account.new }
221
227
 
222
228
  context "when other is nil do" do
223
229
  it { should_not == nil }
@@ -228,21 +234,21 @@ describe Economic::Entity do
228
234
  subject.handle = Economic::Entity::Handle.new({})
229
235
  other.handle = Economic::Entity::Handle.new({})
230
236
 
231
- subject.should_not == other
237
+ expect(subject).not_to eq(other)
232
238
  end
233
239
  end
234
240
 
235
241
  context "when self handle isn't present" do
236
242
  it "returns false" do
237
243
  subject.handle = nil
238
- subject.should_not == other
244
+ expect(subject).not_to eq(other)
239
245
  end
240
246
  end
241
247
 
242
248
  context "when other handle isn't present" do
243
249
  it "returns false" do
244
250
  other.handle = nil
245
- subject.should_not == other
251
+ expect(subject).not_to eq(other)
246
252
  end
247
253
  end
248
254
 
@@ -253,22 +259,22 @@ describe Economic::Entity do
253
259
  context "when other is another class" do
254
260
  it "should return false" do
255
261
  other = Economic::CashBook.new(:handle => handle)
256
- subject.should_not == other
262
+ expect(subject).not_to eq(other)
257
263
  end
258
264
  end
259
265
 
260
266
  context "when other is same class" do
261
267
  it "should return true" do
262
268
  other = Economic::Debtor.new(:handle => handle)
263
- subject.should == other
269
+ expect(subject).to eq(other)
264
270
  end
265
271
  end
266
272
 
267
273
  context "when other is child class" do
268
274
  it "should return true" do
269
275
  one = Economic::Entity.new(:handle => handle)
270
- other = SpecEntity.new(:handle => handle)
271
- one.should == other
276
+ other = Account.new(:handle => handle)
277
+ expect(one).to eq(other)
272
278
  end
273
279
  end
274
280
  end
@@ -5,16 +5,16 @@ describe Economic::Entry do
5
5
  subject { Economic::Entry.new(:session => session) }
6
6
 
7
7
  it "inherits from Economic::Entity" do
8
- Economic::Entry.ancestors.should include(Economic::Entity)
8
+ expect(Economic::Entry.ancestors).to include(Economic::Entity)
9
9
  end
10
10
 
11
11
  describe ".proxy" do
12
12
  it "should return a EntryProxy" do
13
- subject.proxy.should be_instance_of(Economic::EntryProxy)
13
+ expect(subject.proxy).to be_instance_of(Economic::EntryProxy)
14
14
  end
15
15
 
16
16
  it "should return a proxy owned by session" do
17
- subject.proxy.session.should == session
17
+ expect(subject.proxy.session).to eq(session)
18
18
  end
19
19
  end
20
20
  end
@@ -5,64 +5,83 @@ describe Economic::Invoice do
5
5
  subject { Economic::Invoice.new(:session => session, :number => 512) }
6
6
 
7
7
  it "inherits from Economic::Entity" do
8
- Economic::Invoice.ancestors.should include(Economic::Entity)
8
+ expect(Economic::Invoice.ancestors).to include(Economic::Entity)
9
9
  end
10
10
 
11
11
  describe '#remainder' do
12
12
  it 'should get the remainder' do
13
- savon.expects('Invoice_GetRemainder').with("invoiceHandle" => { "Number" => 512 }).returns(:success)
14
- subject.remainder.should == "512.32"
13
+ mock_request('Invoice_GetRemainder', {"invoiceHandle" => { "Number" => 512 }}, :success)
14
+ expect(subject.remainder).to eq("512.32")
15
15
  end
16
16
  end
17
17
 
18
18
  describe ".proxy" do
19
19
  it "should return a InvoiceProxy" do
20
- subject.proxy.should be_instance_of(Economic::InvoiceProxy)
20
+ expect(subject.proxy).to be_instance_of(Economic::InvoiceProxy)
21
21
  end
22
22
 
23
23
  it "should return a proxy owned by session" do
24
- subject.proxy.session.should == session
24
+ expect(subject.proxy.session).to eq(session)
25
25
  end
26
26
  end
27
27
 
28
28
  describe ".key" do
29
29
  it "should == :invoice" do
30
- Economic::Invoice.key.should == :invoice
30
+ expect(Economic::Invoice.key).to eq(:invoice)
31
31
  end
32
32
  end
33
33
 
34
34
  describe "#pdf" do
35
- before :each do
36
- savon.stubs('Invoice_GetPdf').returns(:success)
37
- end
38
-
39
35
  it "gets PDF data from API" do
40
- savon.expects('Invoice_GetPdf').with('invoiceHandle' => {'Number' => 512}).returns(:success)
36
+ mock_request('Invoice_GetPdf', {'invoiceHandle' => {'Number' => 512}}, :success)
41
37
  subject.pdf
42
38
  end
43
39
 
44
40
  it "decodes the base64Binary encoded data" do
45
- subject.pdf.should == 'This is not really PDF data'
41
+ stub_request('Invoice_GetPdf', nil, :success)
42
+ expect(subject.pdf).to eq('This is not really PDF data')
46
43
  end
47
44
  end
48
45
 
49
46
  describe "#attention" do
50
- let(:contact) { (c = Economic::DebtorContact.new).tap { c.session = session }}
47
+ let(:contact) {
48
+ Economic::DebtorContact.new.tap do |c|
49
+ c.session = session
50
+ c.id = 5
51
+ end
52
+ }
51
53
 
52
54
  it "should be set- and gettable" do
53
55
  subject.attention = contact
54
- subject.attention_handle.should == contact.handle
55
- subject.attention.should == contact
56
+ expect(subject.attention).to eq(contact)
57
+ end
58
+
59
+ it "updates the handle" do
60
+ handle = Economic::Entity::Handle.new(:number => 42)
61
+ contact.handle = handle
62
+ subject.attention = contact
63
+ expect(subject.attention_handle).to eq(handle)
56
64
  end
57
65
  end
58
66
 
59
67
  describe "#debtor" do
60
- let(:debtor) { (c = Economic::Debtor.new).tap { c.session = session }}
68
+ let(:debtor) {
69
+ Economic::Debtor.new.tap do |c|
70
+ c.session = session
71
+ c.number = 5
72
+ end
73
+ }
61
74
 
62
75
  it "should be set- and gettable" do
63
76
  subject.debtor = debtor
64
- subject.debtor_handle.should == debtor.handle
65
- subject.debtor.should == debtor
77
+ expect(subject.debtor).to eq(debtor)
78
+ end
79
+
80
+ it "updates the handle" do
81
+ handle = Economic::Entity::Handle.new(:number => 42)
82
+ debtor.handle = handle
83
+ subject.debtor = debtor
84
+ expect(subject.debtor_handle).to eq(handle)
66
85
  end
67
86
  end
68
87
  end
@@ -9,38 +9,41 @@ describe Economic::Proxies::Actions::FindByName do
9
9
  }
10
10
 
11
11
  describe "#call" do
12
- before :each do
13
- savon.stubs('CreditorContact_FindByName').returns(:multiple)
14
- end
15
-
16
12
  it "gets contact data from the API" do
17
- savon.expects('CreditorContact_FindByName').with('name' => 'Bob').returns(:multiple)
13
+ mock_request('CreditorContact_FindByName', {'name' => 'Bob'}, :multiple)
18
14
  subject.call
19
15
  end
20
16
 
21
17
  it "returns creditor contacts" do
22
- subject.call.first.should be_instance_of(Economic::CreditorContact)
18
+ stub_request('CreditorContact_FindByName', nil, :multiple)
19
+ expect(subject.call.first).to be_instance_of(Economic::CreditorContact)
23
20
  end
24
21
 
25
22
  it "returns empty when nothing is found" do
26
- savon.stubs('CreditorContact_FindByName').returns(:none)
27
- subject.call.should be_empty
23
+ stub_request('CreditorContact_FindByName', nil, :none)
24
+ expect(subject.call).to be_empty
28
25
  end
29
26
 
30
27
  context "when calling proxy is owned by session" do
31
28
  it "returns all creditor contacts" do
32
- subject.call.size.should == 2
29
+ stub_request('CreditorContact_FindByName', nil, :multiple)
30
+ expect(subject.call.size).to eq(2)
33
31
  end
34
32
  end
35
33
 
36
34
  context "when calling proxy is owned by a creditor" do
37
35
  it "returns only contacts for creditor" do
38
- savon.stubs("CreditorContact_GetData").returns(:success)
39
- savon.stubs("Creditor_GetData").returns(:success)
36
+ # Note the order of these stubs actually matters. They need to match
37
+ # the order they are called in in the implementation
38
+ stub_request('CreditorContact_FindByName', nil, :multiple)
39
+ stub_request("CreditorContact_GetData", nil, :success)
40
+ stub_request("Creditor_GetData", nil, :success)
41
+ stub_request("CreditorContact_GetData", nil, :success)
42
+ stub_request("Creditor_GetData", nil, :success)
40
43
  creditor = session.creditors.build
41
44
  proxy = Economic::CreditorContactProxy.new(creditor)
42
45
  action = Economic::Proxies::Actions::FindByName.new(proxy, "Bob")
43
- action.call.each { |contact| contact.creditor.should == creditor }
46
+ action.call.each { |contact| expect(contact.creditor).to eq(creditor) }
44
47
  end
45
48
  end
46
49
  end
@@ -8,79 +8,81 @@ describe Economic::CashBookEntryProxy do
8
8
 
9
9
  describe ".new" do
10
10
  it "stores owner" do
11
- subject.owner.should == cash_book
11
+ subject.owner.number = 2
12
+ expect(subject.owner).to eq(cash_book)
12
13
  end
13
14
 
14
15
  it "stores session" do
15
- subject.session.should === session
16
+ expect(subject.session).to equal(session)
16
17
  end
17
18
  end
18
19
 
19
20
  describe ".build" do
20
21
  it "instantiates a new CashBookEntry" do
21
- subject.build.should be_instance_of(Economic::CashBookEntry)
22
+ expect(subject.build).to be_instance_of(Economic::CashBookEntry)
22
23
  end
23
24
 
24
25
  it "assigns the session to the CashBookEntry" do
25
- subject.build.session.should === session
26
+ expect(subject.build.session).to equal(session)
26
27
  end
27
28
  end
28
29
 
29
30
  describe "#create_finance_voucher" do
30
31
  it 'should create a finance voucher and return the created cash book entry' do
31
- savon.stubs('CashBookEntry_CreateFinanceVoucher').returns(:success)
32
- savon.stubs('CashBookEntry_GetData').with(:id1 => 15, :id2 => 16).returns(:success)
32
+ stub_request('CashBookEntry_CreateFinanceVoucher', nil, :success)
33
+ stub_request('CashBookEntry_GetData', {"entityHandle" => {"Id1" => 15, "Id2" => 16}}, :success)
33
34
  cash_book_entry = subject.create_finance_voucher(:account_handle => { :number => 2 }, :contra_account_handle => { :number => 3 })
34
- cash_book_entry.should be_instance_of(Economic::CashBookEntry)
35
+ expect(cash_book_entry).to be_instance_of(Economic::CashBookEntry)
35
36
  end
36
37
  end
37
38
 
38
39
  describe "#create_debtor_payment" do
39
40
  it 'should create a debtor payment and then return the created cash book entry' do
40
- savon.stubs('CashBookEntry_CreateDebtorPayment').returns(:success)
41
- savon.stubs('CashBookEntry_GetData').with(:id1 => 13, :id2 => 14).returns(:success)
41
+ stub_request('CashBookEntry_CreateDebtorPayment', nil, :success)
42
+ stub_request('CashBookEntry_GetData', {"entityHandle" => {"Id1" => 13, "Id2" => 14}}, :success)
42
43
  cash_book_entry = subject.create_debtor_payment(:debtor_handle => { :number => 2 }, :contra_account_handle => { :number => 3 })
43
- cash_book_entry.should be_instance_of(Economic::CashBookEntry)
44
+ expect(cash_book_entry).to be_instance_of(Economic::CashBookEntry)
44
45
  end
45
46
  end
46
47
 
47
48
  describe "#create_creditor_invoice" do
48
49
  it 'should create a creditor invoice and then return the created cash book entry' do
49
- savon.stubs('CashBookEntry_CreateCreditorInvoice').returns(:success)
50
- savon.stubs('CashBookEntry_GetData').with(:id1 => 13, :id2 => 14).returns(:success)
50
+ stub_request('CashBookEntry_CreateCreditorInvoice', nil, :success)
51
+ stub_request('CashBookEntry_GetData', {"entityHandle" => {"Id1" => 13, "Id2" => 14}}, :success)
51
52
  cash_book_entry = subject.create_creditor_invoice(:creditor_handle => { :number => 2 }, :contra_account_handle => { :number => 3 })
52
- cash_book_entry.should be_instance_of(Economic::CashBookEntry)
53
+ expect(cash_book_entry).to be_instance_of(Economic::CashBookEntry)
53
54
  end
54
55
 
55
56
  it 'should not send handles that were not given' do
56
- savon.stubs('CashBookEntry_CreateCreditorInvoice').with(:cashBookHandle => { 'Number' => 13 }).returns(:success)
57
- savon.stubs('CashBookEntry_GetData').with(:id1 => 13, :id2 => 14).returns(:success)
58
- cash_book_entry = subject.create_creditor_invoice({})
59
- cash_book_entry.should be_instance_of(Economic::CashBookEntry)
57
+ stub_request('CashBookEntry_CreateCreditorInvoice', {"cashBookHandle" => { 'Number' => 42 }}, :success)
58
+ stub_request('CashBookEntry_GetData', {"entityHandle" => {"Id1" => 13, "Id2" => 14}}, :success)
59
+ cash_book.number = 42
60
+ cash_book_entry = subject.create_creditor_invoice({:number => 13})
61
+ expect(cash_book_entry).to be_instance_of(Economic::CashBookEntry)
60
62
  end
61
63
  end
62
64
 
63
65
  describe "#create_creditor_payment" do
64
66
  it 'should create a creditor payment and then return the created cash book entry' do
65
- savon.stubs('CashBookEntry_CreateCreditorPayment').returns(:success)
66
- savon.stubs('CashBookEntry_GetData').with(:id1 => 13, :id2 => 14).returns(:success)
67
+ stub_request('CashBookEntry_CreateCreditorPayment', nil, :success)
68
+ stub_request('CashBookEntry_GetData', {"entityHandle" => {"Id1" => 13, "Id2" => 14}}, :success)
67
69
  cash_book_entry = subject.create_creditor_payment(:creditor_handle => { :number => 2 }, :contra_account_handle => { :number => 3 })
68
- cash_book_entry.should be_instance_of(Economic::CashBookEntry)
70
+ expect(cash_book_entry).to be_instance_of(Economic::CashBookEntry)
69
71
  end
70
72
  end
71
73
 
72
74
  describe "#set_due_date" do
73
75
  it 'should set due date' do
74
- savon.expects('CashBookEntry_SetDueDate').with("cashBookEntryHandle" => { "Id1" => subject.owner.id, "Id2" => 234 }, :value => Date.new(2012, 12, 21)).returns(:success)
76
+ mock_request('CashBookEntry_SetDueDate', {"cashBookEntryHandle" => { "Id1" => subject.owner.id, "Id2" => 234 }, :value => Date.new(2012, 12, 21)}, :success)
75
77
  subject.set_due_date(234, Date.new(2012, 12, 21))
76
78
  end
77
79
  end
78
80
 
79
81
  describe "#all" do
80
82
  it 'should get the cash book entries' do
81
- savon.stubs('CashBook_GetEntries').returns(:success)
82
- subject.expects(:find).in_sequence.with({:id1 => '1', :id2 => '2'})
83
- subject.expects(:find).in_sequence.with({:id1 => '11', :id2 => '12'})
83
+ stub_request('CashBook_GetEntries', nil, :success)
84
+ expect(subject).to receive(:find).with({:id1 => '1', :id2 => '2'})
85
+ expect(subject).to receive(:find).with({:id1 => '11', :id2 => '12'})
84
86
  subject.all
85
87
  end
86
88
  end