Avatax_TaxService 1.0.14 → 2.0.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.
data/spec/gettax_spec.rb CHANGED
@@ -1,280 +1,280 @@
1
- require "spec_helper"
2
- require "date"
3
-
4
- describe "GetTax" do
5
- before :each do
6
- credentials = YAML::load(File.open('credentials.yml'))
7
- @creds = {:username => credentials['username'],
8
- :password => credentials['password'],
9
- :clientname => credentials['clientname'],
10
- :use_production_url => credentials['production']}
11
- @companycode = credentials['companycode']
12
- @svc = AvaTax::TaxService.new(@creds)
13
-
14
- @request_required = {
15
- :doctype => "SalesOrder",
16
- :docdate=>DateTime.now.strftime("%Y-%m-%d"),
17
- :customercode => "CUST123",
18
- :origincode => "456",
19
- :destinationcode => "456",
20
- :addresses=>[{
21
- :addresscode=>"456",
22
- :line1=>"7070 West Arlington Drive",
23
- :postalcode=>"80123",
24
- :country=>"US",
25
- }],
26
- :lines=>[{
27
- :no=>"1",
28
- :itemcode=>"Canoe",
29
- :qty=>"1",
30
- :amount=>"300.43",
31
- :description=>"Blue canoe",
32
- }]
33
-
34
- }
35
- @request_optional = {
36
- :companycode => @companycode,
37
- :salespersoncode => "Bill Sales",
38
- :detaillevel => "Tax",
39
- :customerusagetype => "L",
40
- :discount => "10",
41
- :purchaseorderno => "PO9823",
42
- :exemptionno => "23423",
43
- :referencecode => "ref1",
44
- :locationcode => "001",
45
- :commit => "false",
46
- :batchcode => "",
47
- :taxoverridetype => "TaxDate",
48
- :taxamount => "0",
49
- :taxdate => "1999-01-01",
50
- :reason => "Override",
51
- :currencycode => "USD",
52
- :servicemode => "Remote",
53
- :paymentdate => DateTime.now.strftime("%Y-%m-%d"),
54
- :exchangerate => "0",
55
- :exchangerateeffdate => "1900-01-01",
56
- :poslanecode => "1",
57
- :businessidentificationno => "2342",
58
- :debug => false,
59
- :validate => false,
60
- :hashcode => "0",
61
- :reason=>"",
62
- :addresses=>[{
63
- :addresscode=>"123",
64
- :line1=>"100 ravine lane",
65
- :line2=>"Suite 21",
66
- :city=>"Bainbridge Island",
67
- :region=>"WA",
68
- :postalcode=>"98110",
69
- :country=>"US",
70
- :taxregionid=>"0",
71
- :latitude=>"",
72
- :longitude=>""
73
- }, {
74
- :addresscode=>"456",
75
- :line1=> "Attn. Accounting",
76
- :line3=>"7070 West Arlington Drive",
77
- :postalcode=>"80123",
78
- :country=>"US",
79
- :taxregionid=>"0"
80
- }],
81
- :lines=>[{
82
- :no=>"1",
83
- :itemcode=>"Canoe",
84
- :qty=>"1",
85
- :amount=>"300.43",
86
- :discounted=>"false",
87
- :ref1=>"ref1",
88
- :ref2=>"ref2",
89
- :description=>"Blue canoe",
90
- :taxoverridetypeline=>"TaxAmount",
91
- :taxamountline=>"10",
92
- :taxdateline=>"1900-01-01",
93
- :reasonline=>"Tax credit",
94
- :taxincluded=>"false"
95
- }, {
96
- :no=>"2",
97
- :itemcode=>"Rowing boat",
98
- :qty=>"1",
99
- :destinationcodeline=>"123",
100
- :amount=>"800.12",
101
- :discounted=>"false",
102
- :ref1=>"ref3",
103
- :ref2=>"ref4",
104
- :description=>"Red rowing boat",
105
- :taxoverridetype=>"None",
106
- :taxamount=>"0",
107
- :taxdate=>"1900-01-01",
108
- :taxincluded=>"true"
109
- }]
110
- }
111
-
112
-
113
-
114
- end
115
-
116
- describe "returns a meaningful" do
117
- it "error when URL is missing" do
118
- @creds[:use_production_url] = nil
119
- @service = AvaTax::TaxService.new(@creds)
120
- @service.gettax(@request_required)[:result_code].should eql "Success"
121
- end
122
- it "success when URL is specified" do
123
- @creds[:use_production_url] = false
124
- @service = AvaTax::TaxService.new(@creds)
125
- @service.gettax(@request_required)[:result_code].should eql "Success"
126
- end
127
- it "error when username is missing" do
128
- @creds[:username] = nil
129
- @service = AvaTax::TaxService.new(@creds)
130
- @service.gettax(@request_required)[:result_code].should eql "Error"
131
- end
132
- it "error when password is omitted" do
133
- @creds[:password] = nil
134
- @service = AvaTax::TaxService.new(@creds)
135
- @service.gettax(@request_required)[:result_code].should eql "Error"
136
- end
137
- it "success when clientname is omitted" do
138
- @creds[:clientname] = nil
139
- @service = AvaTax::TaxService.new(@creds)
140
- @service.gettax(@request_required)[:result_code].should eql "Success"
141
- end
142
- end
143
-
144
- describe "has consistent formatting for" do
145
- it "server-side errors" do
146
- @creds[:password] = nil
147
- @service = AvaTax::TaxService.new(@creds)
148
- @result = @service.gettax(@request_required)
149
- @result[:result_code].should eql "Error" and
150
- @result[:messages].kind_of?(Array).should eql true and
151
- @result[:messages][0].should include(:details => "The user or account could not be authenticated.")
152
- end
153
- it "successful results" do
154
- @service = AvaTax::TaxService.new(@creds)
155
- @result = @service.gettax(@request_required)
156
- if @result[:result_code] == "Error"
157
- print @result
158
- end
159
- @result[:result_code].should eql "Success" and @result[:transaction_id].should_not be_nil
160
- end
161
- end
162
- describe "requests with" do
163
- it "missing required parameters fail" do
164
- @service = AvaTax::TaxService.new(@creds)
165
- @result = @service.gettax(@request_optional)
166
- @result[:result_code].should eql "Error"
167
- end
168
- it "invalid parameters ignore them" do
169
- @service = AvaTax::TaxService.new(@creds)
170
- @request_required[:bogus] = "data"
171
- @result = @service.gettax(@request_required)
172
- @result[:result_code].should eql "Success"
173
- end
174
- it "missing optional parameters succeed" do
175
- @service = AvaTax::TaxService.new(@creds)
176
- @result = @service.gettax(@request_required)
177
- @result[:result_code].should eql "Success"
178
- end
179
- it "all parameters succeed" do
180
- @service = AvaTax::TaxService.new(@creds)
181
- @result = @service.gettax(@request_required.merge(@request_optional))
182
- @result.should eql "Success"
183
- end
184
- end
185
- describe "workflow" do
186
- it "should calculate tax without recording a document" do
187
- @request = @request_required
188
- @request[:doctype] = "SalesOrder"
189
- @request[:companycode] = @companycode
190
- @result = @svc.gettax(@request)
191
- @history_request = {
192
- :doccode => @result[:doc_code],
193
- :companycode => @request[:companycode],
194
- :doctype => @request[:doctype],
195
- }
196
- @history_result = @svc.gettaxhistory(@history_request)
197
- @result[:result_code].should eql "Success" and
198
- @history_result[:result_code].should eql "Error" and
199
- @history_result[:messages][:message][:summary].should eql "The tax document could not be found."
200
- end
201
- it "should record a document as uncommitted" do
202
- @request = @request_required
203
- @request[:doctype] = "SalesInvoice"
204
- @request[:commit] = false
205
- @request[:companycode] = @companycode
206
- @result = @svc.gettax(@request)
207
- @history_request = {
208
- :doccode => @result[:doc_code],
209
- :companycode => @request[:companycode],
210
- :doctype => @request[:doctype],
211
- }
212
- @history_result = @svc.gettaxhistory(@history_request)
213
- @result[:result_code].should eql "Success" and
214
- @history_result[:result_code].should eql "Success" and
215
- @history_result[:get_tax_result][:doc_status].should eql "Saved"
216
- end
217
- it "should record a document as committed" do
218
- @request = @request_required
219
- @request[:doctype] = "SalesInvoice"
220
- @request[:commit] = true
221
- @request[:companycode] = @companycode
222
- @result = @svc.gettax(@request)
223
- @history_request = {
224
- :doccode => @result[:doc_code],
225
- :companycode => @request[:companycode],
226
- :doctype => @request[:doctype],
227
- }
228
- @history_result = @svc.gettaxhistory(@history_request)
229
- @result[:result_code].should eql "Success" and
230
- @history_result[:result_code].should eql "Success" and
231
- @history_result[:get_tax_result][:doc_status].should eql "Committed"
232
- end
233
- it "should update uncommitted documents" do
234
- @request = @request_required
235
- @request[:doctype] = "SalesInvoice"
236
- @request[:commit] = false
237
- @request[:companycode] = @companycode
238
- @result_initial = @svc.gettax(@request)
239
-
240
- @request[:customercode] = "NEWCUST"
241
- @request[:doccode] = @result_initial[:doc_code]
242
- @result = @svc.gettax(@request)
243
- @history_request = {
244
- :doccode => @result_initial[:doc_code],
245
- :companycode => @request[:companycode],
246
- :doctype => @request[:doctype],
247
- }
248
- @history_result = @svc.gettaxhistory(@history_request)
249
- @result_initial[:result_code].should eql "Success" and
250
- @result[:result_code].should eql "Success" and
251
- @history_result[:result_code].should eql "Success" and
252
- @history_result[:get_tax_result][:doc_status].should eql "Saved" and
253
- @history_result[:get_tax_request][:customer_code].should eql @request[:customercode]
254
- end
255
- it "should not update committed documents" do
256
- @request = @request_required
257
- @old_customer_code = @request_required[:customercode]
258
- @request[:doctype] = "SalesInvoice"
259
- @request[:commit] = true
260
- @request[:companycode] = @companycode
261
- @result_initial = @svc.gettax(@request)
262
-
263
- @request[:customercode] = "NEWCUST"
264
- @request[:doccode] = @result_initial[:doc_code]
265
- @result = @svc.gettax(@request)
266
- @history_request = {
267
- :doccode => @result_initial[:doc_code],
268
- :companycode => @request[:companycode],
269
- :doctype => @request[:doctype],
270
- }
271
- @history_result = @svc.gettaxhistory(@history_request)
272
- @result_initial[:result_code].should eql "Success" and
273
- @result[:result_code].should eql "Error" and
274
- @history_result[:result_code].should eql "Success" and
275
- @history_result[:get_tax_result][:doc_status].should eql "Committed" and
276
- @history_result[:get_tax_request][:customer_code].should eql @old_customer_code
277
- end
278
- end
279
-
1
+ require "spec_helper"
2
+ require "date"
3
+
4
+ describe "GetTax" do
5
+ before :each do
6
+ credentials = YAML::load(File.open('credentials.yml'))
7
+ @creds = {:username => credentials['username'],
8
+ :password => credentials['password'],
9
+ :clientname => credentials['clientname'],
10
+ :use_production_url => credentials['production']}
11
+ @companycode = credentials['companycode']
12
+ @svc = AvaTax::TaxService.new(@creds)
13
+
14
+ @request_required = {
15
+ :doctype => "SalesOrder",
16
+ :docdate=>DateTime.now.strftime("%Y-%m-%d"),
17
+ :customercode => "CUST123",
18
+ :origincode => "456",
19
+ :destinationcode => "456",
20
+ :addresses=>[{
21
+ :addresscode=>"456",
22
+ :line1=>"7070 West Arlington Drive",
23
+ :postalcode=>"80123",
24
+ :country=>"US",
25
+ }],
26
+ :lines=>[{
27
+ :no=>"1",
28
+ :itemcode=>"Canoe",
29
+ :qty=>"1",
30
+ :amount=>"300.43",
31
+ :description=>"Blue canoe",
32
+ }]
33
+
34
+ }
35
+ @request_optional = {
36
+ :companycode => @companycode,
37
+ :salespersoncode => "Bill Sales",
38
+ :detaillevel => "Tax",
39
+ :customerusagetype => "L",
40
+ :discount => "10",
41
+ :purchaseorderno => "PO9823",
42
+ :exemptionno => "23423",
43
+ :referencecode => "ref1",
44
+ :locationcode => "001",
45
+ :commit => "false",
46
+ :batchcode => "",
47
+ :taxoverridetype => "TaxDate",
48
+ :taxamount => "0",
49
+ :taxdate => "1999-01-01",
50
+ :reason => "Override",
51
+ :currencycode => "USD",
52
+ :servicemode => "Remote",
53
+ :paymentdate => DateTime.now.strftime("%Y-%m-%d"),
54
+ :exchangerate => "0",
55
+ :exchangerateeffdate => "1900-01-01",
56
+ :poslanecode => "1",
57
+ :businessidentificationno => "2342",
58
+ :debug => false,
59
+ :validate => false,
60
+ :hashcode => "0",
61
+ :reason=>"",
62
+ :addresses=>[{
63
+ :addresscode=>"123",
64
+ :line1=>"100 ravine lane",
65
+ :line2=>"Suite 21",
66
+ :city=>"Bainbridge Island",
67
+ :region=>"WA",
68
+ :postalcode=>"98110",
69
+ :country=>"US",
70
+ :taxregionid=>"0",
71
+ :latitude=>"",
72
+ :longitude=>""
73
+ }, {
74
+ :addresscode=>"456",
75
+ :line1=> "Attn. Accounting",
76
+ :line3=>"7070 West Arlington Drive",
77
+ :postalcode=>"80123",
78
+ :country=>"US",
79
+ :taxregionid=>"0"
80
+ }],
81
+ :lines=>[{
82
+ :no=>"1",
83
+ :itemcode=>"Canoe",
84
+ :qty=>"1",
85
+ :amount=>"300.43",
86
+ :discounted=>"false",
87
+ :ref1=>"ref1",
88
+ :ref2=>"ref2",
89
+ :description=>"Blue canoe",
90
+ :taxoverridetypeline=>"TaxAmount",
91
+ :taxamountline=>"10",
92
+ :taxdateline=>"1900-01-01",
93
+ :reasonline=>"Tax credit",
94
+ :taxincluded=>"false"
95
+ }, {
96
+ :no=>"2",
97
+ :itemcode=>"Rowing boat",
98
+ :qty=>"1",
99
+ :destinationcodeline=>"123",
100
+ :amount=>"800.12",
101
+ :discounted=>"false",
102
+ :ref1=>"ref3",
103
+ :ref2=>"ref4",
104
+ :description=>"Red rowing boat",
105
+ :taxoverridetype=>"None",
106
+ :taxamount=>"0",
107
+ :taxdate=>"1900-01-01",
108
+ :taxincluded=>"true"
109
+ }]
110
+ }
111
+
112
+
113
+
114
+ end
115
+
116
+ describe "returns a meaningful" do
117
+ it "error when URL is missing" do
118
+ @creds[:use_production_url] = nil
119
+ @service = AvaTax::TaxService.new(@creds)
120
+ @service.gettax(@request_required)[:result_code].should eql "Success"
121
+ end
122
+ it "success when URL is specified" do
123
+ @creds[:use_production_url] = false
124
+ @service = AvaTax::TaxService.new(@creds)
125
+ @service.gettax(@request_required)[:result_code].should eql "Success"
126
+ end
127
+ it "error when username is missing" do
128
+ @creds[:username] = nil
129
+ @service = AvaTax::TaxService.new(@creds)
130
+ @service.gettax(@request_required)[:result_code].should eql "Error"
131
+ end
132
+ it "error when password is omitted" do
133
+ @creds[:password] = nil
134
+ @service = AvaTax::TaxService.new(@creds)
135
+ @service.gettax(@request_required)[:result_code].should eql "Error"
136
+ end
137
+ it "success when clientname is omitted" do
138
+ @creds[:clientname] = nil
139
+ @service = AvaTax::TaxService.new(@creds)
140
+ @service.gettax(@request_required)[:result_code].should eql "Success"
141
+ end
142
+ end
143
+
144
+ describe "has consistent formatting for" do
145
+ it "server-side errors" do
146
+ @creds[:password] = nil
147
+ @service = AvaTax::TaxService.new(@creds)
148
+ @result = @service.gettax(@request_required)
149
+ @result[:result_code].should eql "Error" and
150
+ @result[:messages].kind_of?(Array).should eql true and
151
+ @result[:messages][0].should include(:details => "The user or account could not be authenticated.")
152
+ end
153
+ it "successful results" do
154
+ @service = AvaTax::TaxService.new(@creds)
155
+ @result = @service.gettax(@request_required)
156
+ if @result[:result_code] == "Error"
157
+ print @result
158
+ end
159
+ @result[:result_code].should eql "Success" and @result[:transaction_id].should_not be_nil
160
+ end
161
+ end
162
+ describe "requests with" do
163
+ it "missing required parameters fail" do
164
+ @service = AvaTax::TaxService.new(@creds)
165
+ @result = @service.gettax(@request_optional)
166
+ @result[:result_code].should eql "Error"
167
+ end
168
+ it "invalid parameters ignore them" do
169
+ @service = AvaTax::TaxService.new(@creds)
170
+ @request_required[:bogus] = "data"
171
+ @result = @service.gettax(@request_required)
172
+ @result[:result_code].should eql "Success"
173
+ end
174
+ it "missing optional parameters succeed" do
175
+ @service = AvaTax::TaxService.new(@creds)
176
+ @result = @service.gettax(@request_required)
177
+ @result[:result_code].should eql "Success"
178
+ end
179
+ it "all parameters succeed" do
180
+ @service = AvaTax::TaxService.new(@creds)
181
+ @result = @service.gettax(@request_required.merge(@request_optional))
182
+ @result.should eql "Success"
183
+ end
184
+ end
185
+ describe "workflow" do
186
+ it "should calculate tax without recording a document" do
187
+ @request = @request_required
188
+ @request[:doctype] = "SalesOrder"
189
+ @request[:companycode] = @companycode
190
+ @result = @svc.gettax(@request)
191
+ @history_request = {
192
+ :doccode => @result[:doc_code],
193
+ :companycode => @request[:companycode],
194
+ :doctype => @request[:doctype],
195
+ }
196
+ @history_result = @svc.gettaxhistory(@history_request)
197
+ @result[:result_code].should eql "Success" and
198
+ @history_result[:result_code].should eql "Error" and
199
+ @history_result[:messages][:message][:summary].should eql "The tax document could not be found."
200
+ end
201
+ it "should record a document as uncommitted" do
202
+ @request = @request_required
203
+ @request[:doctype] = "SalesInvoice"
204
+ @request[:commit] = false
205
+ @request[:companycode] = @companycode
206
+ @result = @svc.gettax(@request)
207
+ @history_request = {
208
+ :doccode => @result[:doc_code],
209
+ :companycode => @request[:companycode],
210
+ :doctype => @request[:doctype],
211
+ }
212
+ @history_result = @svc.gettaxhistory(@history_request)
213
+ @result[:result_code].should eql "Success" and
214
+ @history_result[:result_code].should eql "Success" and
215
+ @history_result[:get_tax_result][:doc_status].should eql "Saved"
216
+ end
217
+ it "should record a document as committed" do
218
+ @request = @request_required
219
+ @request[:doctype] = "SalesInvoice"
220
+ @request[:commit] = true
221
+ @request[:companycode] = @companycode
222
+ @result = @svc.gettax(@request)
223
+ @history_request = {
224
+ :doccode => @result[:doc_code],
225
+ :companycode => @request[:companycode],
226
+ :doctype => @request[:doctype],
227
+ }
228
+ @history_result = @svc.gettaxhistory(@history_request)
229
+ @result[:result_code].should eql "Success" and
230
+ @history_result[:result_code].should eql "Success" and
231
+ @history_result[:get_tax_result][:doc_status].should eql "Committed"
232
+ end
233
+ it "should update uncommitted documents" do
234
+ @request = @request_required
235
+ @request[:doctype] = "SalesInvoice"
236
+ @request[:commit] = false
237
+ @request[:companycode] = @companycode
238
+ @result_initial = @svc.gettax(@request)
239
+
240
+ @request[:customercode] = "NEWCUST"
241
+ @request[:doccode] = @result_initial[:doc_code]
242
+ @result = @svc.gettax(@request)
243
+ @history_request = {
244
+ :doccode => @result_initial[:doc_code],
245
+ :companycode => @request[:companycode],
246
+ :doctype => @request[:doctype],
247
+ }
248
+ @history_result = @svc.gettaxhistory(@history_request)
249
+ @result_initial[:result_code].should eql "Success" and
250
+ @result[:result_code].should eql "Success" and
251
+ @history_result[:result_code].should eql "Success" and
252
+ @history_result[:get_tax_result][:doc_status].should eql "Saved" and
253
+ @history_result[:get_tax_request][:customer_code].should eql @request[:customercode]
254
+ end
255
+ it "should not update committed documents" do
256
+ @request = @request_required
257
+ @old_customer_code = @request_required[:customercode]
258
+ @request[:doctype] = "SalesInvoice"
259
+ @request[:commit] = true
260
+ @request[:companycode] = @companycode
261
+ @result_initial = @svc.gettax(@request)
262
+
263
+ @request[:customercode] = "NEWCUST"
264
+ @request[:doccode] = @result_initial[:doc_code]
265
+ @result = @svc.gettax(@request)
266
+ @history_request = {
267
+ :doccode => @result_initial[:doc_code],
268
+ :companycode => @request[:companycode],
269
+ :doctype => @request[:doctype],
270
+ }
271
+ @history_result = @svc.gettaxhistory(@history_request)
272
+ @result_initial[:result_code].should eql "Success" and
273
+ @result[:result_code].should eql "Error" and
274
+ @history_result[:result_code].should eql "Success" and
275
+ @history_result[:get_tax_result][:doc_status].should eql "Committed" and
276
+ @history_result[:get_tax_request][:customer_code].should eql @old_customer_code
277
+ end
278
+ end
279
+
280
280
  end