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.
- checksums.yaml +5 -13
- data/Avatax_TaxService.gemspec +22 -22
- data/LICENSE.txt +20 -20
- data/lib/avatax_taxservice.rb +643 -648
- data/lib/tax_log.txt +1 -0
- data/lib/{taxservice_dev.wsdl → taxservice.wsdl} +1090 -1090
- data/lib/template_adjusttax.erb +98 -98
- data/lib/template_canceltax.erb +30 -30
- data/lib/template_committax.erb +30 -30
- data/lib/template_gettax.erb +94 -94
- data/lib/template_gettaxhistory.erb +27 -27
- data/lib/template_isauthorized.erb +21 -21
- data/lib/template_ping.erb +21 -21
- data/lib/template_posttax.erb +32 -32
- data/lib/template_reconciletaxhistory.erb +31 -31
- data/samples/CancelTaxTest.rb +33 -33
- data/samples/GetTaxHistoryTest.rb +44 -44
- data/samples/GetTaxTest.rb +148 -148
- data/samples/PingTest.rb +25 -25
- data/samples/PostTaxTest.rb +39 -39
- data/spec/adjusttax_spec.rb +236 -236
- data/spec/canceltax_spec.rb +149 -149
- data/spec/committax_spec.rb +146 -146
- data/spec/gettax_spec.rb +279 -279
- data/spec/gettaxhistory_spec.rb +121 -121
- data/spec/isauthorized_spec.rb +76 -76
- data/spec/ping_spec.rb +76 -76
- data/spec/posttax_spec.rb +170 -170
- data/spec/reconciletaxhistory_spec.rb +126 -126
- data/spec/spec_helper.rb +15 -15
- data/spec/taxservice_spec.rb +41 -41
- metadata +14 -17
- data/Avatax Ruby SDK Guide.docx +0 -0
- data/lib/taxservice_prd.wsdl +0 -1091
- data/samples/ValidateAddressTest.rb +0 -50
data/spec/canceltax_spec.rb
CHANGED
@@ -1,150 +1,150 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe "CancelTax" do
|
4
|
-
before :each do
|
5
|
-
credentials = YAML::load(File.open('credentials.yml'))
|
6
|
-
@creds = {:username => credentials['username'],
|
7
|
-
:password => credentials['password'],
|
8
|
-
:clientname => credentials['clientname'],
|
9
|
-
:use_production_url => credentials['production']}
|
10
|
-
@svc = AvaTax::TaxService.new(@creds)
|
11
|
-
@get_tax_request = {
|
12
|
-
:doctype => "SalesInvoice",
|
13
|
-
:commit => false,
|
14
|
-
:detaillevel => "Tax",
|
15
|
-
:docdate=>DateTime.now.strftime("%Y-%m-%d"),
|
16
|
-
:customercode => "CUST123",
|
17
|
-
:origincode => "456",
|
18
|
-
:destinationcode => "456",
|
19
|
-
:addresses=>[{
|
20
|
-
:addresscode=>"456",
|
21
|
-
:line1=>"7070 West Arlington Drive",
|
22
|
-
:postalcode=>"80123",
|
23
|
-
:country=>"US",
|
24
|
-
}],
|
25
|
-
:lines=>[{
|
26
|
-
:no=>"1",
|
27
|
-
:itemcode=>"Canoe",
|
28
|
-
:qty=>"1",
|
29
|
-
:amount=>"300.43",
|
30
|
-
:description=>"Blue canoe",
|
31
|
-
}]}
|
32
|
-
@get_tax_result = @svc.gettax(@get_tax_request)
|
33
|
-
@request_required = {
|
34
|
-
:companycode => @get_tax_result[:company_code],
|
35
|
-
:doctype => @get_tax_result[:doc_type],
|
36
|
-
:doccode => @get_tax_result[:doc_code],
|
37
|
-
:cancelcode => "DocVoided",
|
38
|
-
}
|
39
|
-
@request_optional = {
|
40
|
-
:docid => @get_tax_result[:doc_id]
|
41
|
-
}
|
42
|
-
end
|
43
|
-
|
44
|
-
describe "returns a meaningful" do
|
45
|
-
it "error when URL is missing" do
|
46
|
-
@creds[:use_production_url] = nil
|
47
|
-
@service = AvaTax::TaxService.new(@creds)
|
48
|
-
@service.canceltax(@request_required)[:result_code].should eql "Success"
|
49
|
-
end
|
50
|
-
it "success when URL is specified" do
|
51
|
-
@creds[:use_production_url] = false
|
52
|
-
@service = AvaTax::TaxService.new(@creds)
|
53
|
-
@service.canceltax(@request_required)[:result_code].should eql "Success"
|
54
|
-
end
|
55
|
-
it "error when username is missing" do
|
56
|
-
@creds[:username] = nil
|
57
|
-
@service = AvaTax::TaxService.new(@creds)
|
58
|
-
@service.canceltax(@request_required)[:result_code].should eql "Error"
|
59
|
-
end
|
60
|
-
it "error when password is omitted" do
|
61
|
-
@creds[:password] = nil
|
62
|
-
@service = AvaTax::TaxService.new(@creds)
|
63
|
-
@service.canceltax(@request_required)[:result_code].should eql "Error"
|
64
|
-
end
|
65
|
-
it "success when clientname is omitted" do
|
66
|
-
@creds[:clientname] = nil
|
67
|
-
@service = AvaTax::TaxService.new(@creds)
|
68
|
-
@service.canceltax(@request_required)[:result_code].should eql "Success"
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
describe "has consistent formatting for" do
|
73
|
-
it "server-side errors" do
|
74
|
-
@creds[:password] = nil
|
75
|
-
@service = AvaTax::TaxService.new(@creds)
|
76
|
-
@result = @service.canceltax(@request_required)
|
77
|
-
@result[:result_code].should eql "Error" and
|
78
|
-
@result[:messages].kind_of?(Array).should eql true and
|
79
|
-
@result[:messages][0].should include(:details => "The user or account could not be authenticated.")
|
80
|
-
end
|
81
|
-
it "successful results" do
|
82
|
-
@service = AvaTax::TaxService.new(@creds)
|
83
|
-
@result = @service.canceltax(@request_required)
|
84
|
-
@result[:result_code].should eql "Success" and @result[:transaction_id].should_not be_nil
|
85
|
-
end
|
86
|
-
end
|
87
|
-
describe "requests with" do
|
88
|
-
it "missing required parameters fail" do
|
89
|
-
@service = AvaTax::TaxService.new(@creds)
|
90
|
-
@result = @service.canceltax(@request_optional)
|
91
|
-
@result[:result_code].should eql "Error"
|
92
|
-
end
|
93
|
-
it "invalid parameters ignore them" do
|
94
|
-
@service = AvaTax::TaxService.new(@creds)
|
95
|
-
@request_required[:bogus] = "data"
|
96
|
-
@result = @service.canceltax(@request_required)
|
97
|
-
@result[:result_code].should eql "Success"
|
98
|
-
end
|
99
|
-
it "missing optional parameters succeed" do
|
100
|
-
@service = AvaTax::TaxService.new(@creds)
|
101
|
-
@result = @service.canceltax(@request_required)
|
102
|
-
@result[:result_code].should eql "Success"
|
103
|
-
end
|
104
|
-
it "all parameters succeed" do
|
105
|
-
@service = AvaTax::TaxService.new(@creds)
|
106
|
-
@result = @service.canceltax(@request_required.merge(@request_optional))
|
107
|
-
@result[:result_code].should eql "Success"
|
108
|
-
end
|
109
|
-
end
|
110
|
-
describe "workflow" do
|
111
|
-
it "should not change the status when cancel code is unspecified" do
|
112
|
-
@request_required[:cancelcode] = "Unspecified"
|
113
|
-
@result = @svc.canceltax(@request_required)
|
114
|
-
@history_request = {
|
115
|
-
:doccode => @request_required[:doccode],
|
116
|
-
:companycode => @request_required[:companycode],
|
117
|
-
:doctype => @request_required[:doctype],
|
118
|
-
}
|
119
|
-
@history_result = @svc.gettaxhistory(@history_request)
|
120
|
-
@result[:result_code].should eql "Success" and
|
121
|
-
@history_result[:get_tax_result][:doc_status].should eql "Saved"
|
122
|
-
end
|
123
|
-
it "should void documents when cancel code is DocVoided" do
|
124
|
-
@request_required[:cancelcode] = "DocVoided"
|
125
|
-
@result = @svc.canceltax(@request_required)
|
126
|
-
@history_request = {
|
127
|
-
:doccode => @request_required[:doccode],
|
128
|
-
:companycode => @request_required[:companycode],
|
129
|
-
:doctype => @request_required[:doctype],
|
130
|
-
}
|
131
|
-
@history_result = @svc.gettaxhistory(@history_request)
|
132
|
-
@result[:result_code].should eql "Success" and
|
133
|
-
@history_result[:get_tax_result][:doc_status].should eql "Cancelled"
|
134
|
-
end
|
135
|
-
it "should delete uncommitted/voided documents when cancel code is DocDeleted" do\
|
136
|
-
@request_required[:cancelcode] = "DocDeleted"
|
137
|
-
@result = @svc.canceltax(@request_required)
|
138
|
-
@history_request = {
|
139
|
-
:doccode => @request_required[:doccode],
|
140
|
-
:companycode => @request_required[:companycode],
|
141
|
-
:doctype => @request_required[:doctype],
|
142
|
-
}
|
143
|
-
@history_result = @svc.gettaxhistory(@history_request)
|
144
|
-
@result[:result_code].should eql "Success" and
|
145
|
-
@history_result[:result_code].should eql "Error"
|
146
|
-
end
|
147
|
-
|
148
|
-
end
|
149
|
-
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "CancelTax" do
|
4
|
+
before :each do
|
5
|
+
credentials = YAML::load(File.open('credentials.yml'))
|
6
|
+
@creds = {:username => credentials['username'],
|
7
|
+
:password => credentials['password'],
|
8
|
+
:clientname => credentials['clientname'],
|
9
|
+
:use_production_url => credentials['production']}
|
10
|
+
@svc = AvaTax::TaxService.new(@creds)
|
11
|
+
@get_tax_request = {
|
12
|
+
:doctype => "SalesInvoice",
|
13
|
+
:commit => false,
|
14
|
+
:detaillevel => "Tax",
|
15
|
+
:docdate=>DateTime.now.strftime("%Y-%m-%d"),
|
16
|
+
:customercode => "CUST123",
|
17
|
+
:origincode => "456",
|
18
|
+
:destinationcode => "456",
|
19
|
+
:addresses=>[{
|
20
|
+
:addresscode=>"456",
|
21
|
+
:line1=>"7070 West Arlington Drive",
|
22
|
+
:postalcode=>"80123",
|
23
|
+
:country=>"US",
|
24
|
+
}],
|
25
|
+
:lines=>[{
|
26
|
+
:no=>"1",
|
27
|
+
:itemcode=>"Canoe",
|
28
|
+
:qty=>"1",
|
29
|
+
:amount=>"300.43",
|
30
|
+
:description=>"Blue canoe",
|
31
|
+
}]}
|
32
|
+
@get_tax_result = @svc.gettax(@get_tax_request)
|
33
|
+
@request_required = {
|
34
|
+
:companycode => @get_tax_result[:company_code],
|
35
|
+
:doctype => @get_tax_result[:doc_type],
|
36
|
+
:doccode => @get_tax_result[:doc_code],
|
37
|
+
:cancelcode => "DocVoided",
|
38
|
+
}
|
39
|
+
@request_optional = {
|
40
|
+
:docid => @get_tax_result[:doc_id]
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "returns a meaningful" do
|
45
|
+
it "error when URL is missing" do
|
46
|
+
@creds[:use_production_url] = nil
|
47
|
+
@service = AvaTax::TaxService.new(@creds)
|
48
|
+
@service.canceltax(@request_required)[:result_code].should eql "Success"
|
49
|
+
end
|
50
|
+
it "success when URL is specified" do
|
51
|
+
@creds[:use_production_url] = false
|
52
|
+
@service = AvaTax::TaxService.new(@creds)
|
53
|
+
@service.canceltax(@request_required)[:result_code].should eql "Success"
|
54
|
+
end
|
55
|
+
it "error when username is missing" do
|
56
|
+
@creds[:username] = nil
|
57
|
+
@service = AvaTax::TaxService.new(@creds)
|
58
|
+
@service.canceltax(@request_required)[:result_code].should eql "Error"
|
59
|
+
end
|
60
|
+
it "error when password is omitted" do
|
61
|
+
@creds[:password] = nil
|
62
|
+
@service = AvaTax::TaxService.new(@creds)
|
63
|
+
@service.canceltax(@request_required)[:result_code].should eql "Error"
|
64
|
+
end
|
65
|
+
it "success when clientname is omitted" do
|
66
|
+
@creds[:clientname] = nil
|
67
|
+
@service = AvaTax::TaxService.new(@creds)
|
68
|
+
@service.canceltax(@request_required)[:result_code].should eql "Success"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "has consistent formatting for" do
|
73
|
+
it "server-side errors" do
|
74
|
+
@creds[:password] = nil
|
75
|
+
@service = AvaTax::TaxService.new(@creds)
|
76
|
+
@result = @service.canceltax(@request_required)
|
77
|
+
@result[:result_code].should eql "Error" and
|
78
|
+
@result[:messages].kind_of?(Array).should eql true and
|
79
|
+
@result[:messages][0].should include(:details => "The user or account could not be authenticated.")
|
80
|
+
end
|
81
|
+
it "successful results" do
|
82
|
+
@service = AvaTax::TaxService.new(@creds)
|
83
|
+
@result = @service.canceltax(@request_required)
|
84
|
+
@result[:result_code].should eql "Success" and @result[:transaction_id].should_not be_nil
|
85
|
+
end
|
86
|
+
end
|
87
|
+
describe "requests with" do
|
88
|
+
it "missing required parameters fail" do
|
89
|
+
@service = AvaTax::TaxService.new(@creds)
|
90
|
+
@result = @service.canceltax(@request_optional)
|
91
|
+
@result[:result_code].should eql "Error"
|
92
|
+
end
|
93
|
+
it "invalid parameters ignore them" do
|
94
|
+
@service = AvaTax::TaxService.new(@creds)
|
95
|
+
@request_required[:bogus] = "data"
|
96
|
+
@result = @service.canceltax(@request_required)
|
97
|
+
@result[:result_code].should eql "Success"
|
98
|
+
end
|
99
|
+
it "missing optional parameters succeed" do
|
100
|
+
@service = AvaTax::TaxService.new(@creds)
|
101
|
+
@result = @service.canceltax(@request_required)
|
102
|
+
@result[:result_code].should eql "Success"
|
103
|
+
end
|
104
|
+
it "all parameters succeed" do
|
105
|
+
@service = AvaTax::TaxService.new(@creds)
|
106
|
+
@result = @service.canceltax(@request_required.merge(@request_optional))
|
107
|
+
@result[:result_code].should eql "Success"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
describe "workflow" do
|
111
|
+
it "should not change the status when cancel code is unspecified" do
|
112
|
+
@request_required[:cancelcode] = "Unspecified"
|
113
|
+
@result = @svc.canceltax(@request_required)
|
114
|
+
@history_request = {
|
115
|
+
:doccode => @request_required[:doccode],
|
116
|
+
:companycode => @request_required[:companycode],
|
117
|
+
:doctype => @request_required[:doctype],
|
118
|
+
}
|
119
|
+
@history_result = @svc.gettaxhistory(@history_request)
|
120
|
+
@result[:result_code].should eql "Success" and
|
121
|
+
@history_result[:get_tax_result][:doc_status].should eql "Saved"
|
122
|
+
end
|
123
|
+
it "should void documents when cancel code is DocVoided" do
|
124
|
+
@request_required[:cancelcode] = "DocVoided"
|
125
|
+
@result = @svc.canceltax(@request_required)
|
126
|
+
@history_request = {
|
127
|
+
:doccode => @request_required[:doccode],
|
128
|
+
:companycode => @request_required[:companycode],
|
129
|
+
:doctype => @request_required[:doctype],
|
130
|
+
}
|
131
|
+
@history_result = @svc.gettaxhistory(@history_request)
|
132
|
+
@result[:result_code].should eql "Success" and
|
133
|
+
@history_result[:get_tax_result][:doc_status].should eql "Cancelled"
|
134
|
+
end
|
135
|
+
it "should delete uncommitted/voided documents when cancel code is DocDeleted" do\
|
136
|
+
@request_required[:cancelcode] = "DocDeleted"
|
137
|
+
@result = @svc.canceltax(@request_required)
|
138
|
+
@history_request = {
|
139
|
+
:doccode => @request_required[:doccode],
|
140
|
+
:companycode => @request_required[:companycode],
|
141
|
+
:doctype => @request_required[:doctype],
|
142
|
+
}
|
143
|
+
@history_result = @svc.gettaxhistory(@history_request)
|
144
|
+
@result[:result_code].should eql "Success" and
|
145
|
+
@history_result[:result_code].should eql "Error"
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
149
|
+
|
150
150
|
end
|
data/spec/committax_spec.rb
CHANGED
@@ -1,147 +1,147 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe "CommitTax" do
|
4
|
-
before :each do
|
5
|
-
credentials = YAML::load(File.open('credentials.yml'))
|
6
|
-
@creds = {:username => credentials['username'],
|
7
|
-
:password => credentials['password'],
|
8
|
-
:clientname => credentials['clientname'],
|
9
|
-
:use_production_url => credentials['production']}
|
10
|
-
@svc = AvaTax::TaxService.new(@creds)
|
11
|
-
@get_tax_request = {
|
12
|
-
:doctype => "SalesInvoice",
|
13
|
-
:commit => false,
|
14
|
-
:detaillevel => "Tax",
|
15
|
-
:docdate=>DateTime.now.strftime("%Y-%m-%d"),
|
16
|
-
:customercode => "CUST123",
|
17
|
-
:origincode => "456",
|
18
|
-
:destinationcode => "456",
|
19
|
-
:addresses=>[{
|
20
|
-
:addresscode=>"456",
|
21
|
-
:line1=>"7070 West Arlington Drive",
|
22
|
-
:postalcode=>"80123",
|
23
|
-
:country=>"US",
|
24
|
-
}],
|
25
|
-
:lines=>[{
|
26
|
-
:no=>"1",
|
27
|
-
:itemcode=>"Canoe",
|
28
|
-
:qty=>"1",
|
29
|
-
:amount=>"300.43",
|
30
|
-
:description=>"Blue canoe",
|
31
|
-
}]}
|
32
|
-
@get_tax_result = @svc.gettax(@get_tax_request)
|
33
|
-
@post_tax_request = {
|
34
|
-
:companycode => @get_tax_result[:company_code],
|
35
|
-
:doctype => @get_tax_result[:doc_type],
|
36
|
-
:doccode => @get_tax_result[:doc_code],
|
37
|
-
:commit => false,
|
38
|
-
:docdate => @get_tax_result[:doc_date],
|
39
|
-
:totalamount => @get_tax_result[:total_amount],
|
40
|
-
:totaltax => @get_tax_result[:total_tax],
|
41
|
-
}
|
42
|
-
@post_tax_result = @svc.posttax(@post_tax_request)
|
43
|
-
@request_required = {
|
44
|
-
:companycode => @get_tax_result[:company_code],
|
45
|
-
:doctype => @get_tax_result[:doc_type],
|
46
|
-
:doccode => @get_tax_result[:doc_code],
|
47
|
-
}
|
48
|
-
@request_optional = {
|
49
|
-
:docid => @get_tax_result[:doc_id],
|
50
|
-
:newdoccode => "new doc code: "+ @get_tax_result[:doc_code],
|
51
|
-
}
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
describe "returns a meaningful" do
|
56
|
-
it "error when URL is missing" do
|
57
|
-
@creds[:use_production_url] = nil
|
58
|
-
@service = AvaTax::TaxService.new(@creds)
|
59
|
-
@service.committax(@request_required)[:result_code].should eql "Success"
|
60
|
-
end
|
61
|
-
it "success when URL is specified" do
|
62
|
-
@creds[:use_production_url] = false
|
63
|
-
@service = AvaTax::TaxService.new(@creds)
|
64
|
-
@service.committax(@request_required)[:result_code].should eql "Success"
|
65
|
-
end
|
66
|
-
it "error when username is missing" do
|
67
|
-
@creds[:username] = nil
|
68
|
-
@service = AvaTax::TaxService.new(@creds)
|
69
|
-
@service.committax(@request_required)[:result_code].should eql "Error"
|
70
|
-
end
|
71
|
-
it "error when password is omitted" do
|
72
|
-
@creds[:password] = nil
|
73
|
-
@service = AvaTax::TaxService.new(@creds)
|
74
|
-
@service.committax(@request_required)[:result_code].should eql "Error"
|
75
|
-
end
|
76
|
-
it "success when clientname is omitted" do
|
77
|
-
@creds[:clientname] = nil
|
78
|
-
@service = AvaTax::TaxService.new(@creds)
|
79
|
-
@service.committax(@request_required)[:result_code].should eql "Success"
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
describe "has consistent formatting for" do
|
84
|
-
it "server-side errors" do
|
85
|
-
@creds[:password] = nil
|
86
|
-
@service = AvaTax::TaxService.new(@creds)
|
87
|
-
@result = @service.committax(@request_required)
|
88
|
-
@result[:result_code].should eql "Error" and
|
89
|
-
@result[:messages].kind_of?(Array).should eql true and
|
90
|
-
@result[:messages][0].should include(:details => "The user or account could not be authenticated.")
|
91
|
-
end
|
92
|
-
it "successful results" do
|
93
|
-
@service = AvaTax::TaxService.new(@creds)
|
94
|
-
@result = @service.committax(@request_required)
|
95
|
-
@result[:result_code].should eql "Success" and @result[:transaction_id].should_not be_nil
|
96
|
-
end
|
97
|
-
end
|
98
|
-
describe "requests with" do
|
99
|
-
it "missing required parameters fail" do
|
100
|
-
@service = AvaTax::TaxService.new(@creds)
|
101
|
-
@result = @service.committax(@request_optional)
|
102
|
-
@result[:result_code].should eql "Error"
|
103
|
-
end
|
104
|
-
it "invalid parameters ignore them" do
|
105
|
-
@service = AvaTax::TaxService.new(@creds)
|
106
|
-
@request_required[:bogus] = "data"
|
107
|
-
@result = @service.committax(@request_required)
|
108
|
-
@result[:result_code].should eql "Success"
|
109
|
-
end
|
110
|
-
it "missing optional parameters succeed" do
|
111
|
-
@service = AvaTax::TaxService.new(@creds)
|
112
|
-
@result = @service.committax(@request_required)
|
113
|
-
@result[:result_code].should eql "Success"
|
114
|
-
end
|
115
|
-
it "all parameters succeed" do
|
116
|
-
@service = AvaTax::TaxService.new(@creds)
|
117
|
-
@result = @service.committax(@request_required.merge(@request_optional))
|
118
|
-
@result[:result_code].should eql "Success"
|
119
|
-
end
|
120
|
-
end
|
121
|
-
describe "workflow" do
|
122
|
-
it "should be able to commit posted transactions" do
|
123
|
-
@result = @svc.committax(@request_required)
|
124
|
-
@history_request = {
|
125
|
-
:doccode => @request_required[:doccode],
|
126
|
-
:companycode => @request_required[:companycode],
|
127
|
-
:doctype => @request_required[:doctype],
|
128
|
-
}
|
129
|
-
@history_result = @svc.gettaxhistory(@history_request)
|
130
|
-
@result[:result_code].should eql "Success" and
|
131
|
-
@history_result[:get_tax_result][:doc_status].should eql "Committed"
|
132
|
-
end
|
133
|
-
it "should be able to change the doccode" do
|
134
|
-
@result = @svc.committax(@request_required.merge(@request_optional))
|
135
|
-
@history_request = {
|
136
|
-
:doccode => @request_optional[:newdoccode],
|
137
|
-
:companycode => @request_required[:companycode],
|
138
|
-
:doctype => @request_required[:doctype],
|
139
|
-
}
|
140
|
-
@history_result = @svc.gettaxhistory(@history_request)
|
141
|
-
@result[:result_code].should eql "Success" and
|
142
|
-
@history_result[:get_tax_result][:doc_status].should eql "Committed"
|
143
|
-
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "CommitTax" do
|
4
|
+
before :each do
|
5
|
+
credentials = YAML::load(File.open('credentials.yml'))
|
6
|
+
@creds = {:username => credentials['username'],
|
7
|
+
:password => credentials['password'],
|
8
|
+
:clientname => credentials['clientname'],
|
9
|
+
:use_production_url => credentials['production']}
|
10
|
+
@svc = AvaTax::TaxService.new(@creds)
|
11
|
+
@get_tax_request = {
|
12
|
+
:doctype => "SalesInvoice",
|
13
|
+
:commit => false,
|
14
|
+
:detaillevel => "Tax",
|
15
|
+
:docdate=>DateTime.now.strftime("%Y-%m-%d"),
|
16
|
+
:customercode => "CUST123",
|
17
|
+
:origincode => "456",
|
18
|
+
:destinationcode => "456",
|
19
|
+
:addresses=>[{
|
20
|
+
:addresscode=>"456",
|
21
|
+
:line1=>"7070 West Arlington Drive",
|
22
|
+
:postalcode=>"80123",
|
23
|
+
:country=>"US",
|
24
|
+
}],
|
25
|
+
:lines=>[{
|
26
|
+
:no=>"1",
|
27
|
+
:itemcode=>"Canoe",
|
28
|
+
:qty=>"1",
|
29
|
+
:amount=>"300.43",
|
30
|
+
:description=>"Blue canoe",
|
31
|
+
}]}
|
32
|
+
@get_tax_result = @svc.gettax(@get_tax_request)
|
33
|
+
@post_tax_request = {
|
34
|
+
:companycode => @get_tax_result[:company_code],
|
35
|
+
:doctype => @get_tax_result[:doc_type],
|
36
|
+
:doccode => @get_tax_result[:doc_code],
|
37
|
+
:commit => false,
|
38
|
+
:docdate => @get_tax_result[:doc_date],
|
39
|
+
:totalamount => @get_tax_result[:total_amount],
|
40
|
+
:totaltax => @get_tax_result[:total_tax],
|
41
|
+
}
|
42
|
+
@post_tax_result = @svc.posttax(@post_tax_request)
|
43
|
+
@request_required = {
|
44
|
+
:companycode => @get_tax_result[:company_code],
|
45
|
+
:doctype => @get_tax_result[:doc_type],
|
46
|
+
:doccode => @get_tax_result[:doc_code],
|
47
|
+
}
|
48
|
+
@request_optional = {
|
49
|
+
:docid => @get_tax_result[:doc_id],
|
50
|
+
:newdoccode => "new doc code: "+ @get_tax_result[:doc_code],
|
51
|
+
}
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "returns a meaningful" do
|
56
|
+
it "error when URL is missing" do
|
57
|
+
@creds[:use_production_url] = nil
|
58
|
+
@service = AvaTax::TaxService.new(@creds)
|
59
|
+
@service.committax(@request_required)[:result_code].should eql "Success"
|
60
|
+
end
|
61
|
+
it "success when URL is specified" do
|
62
|
+
@creds[:use_production_url] = false
|
63
|
+
@service = AvaTax::TaxService.new(@creds)
|
64
|
+
@service.committax(@request_required)[:result_code].should eql "Success"
|
65
|
+
end
|
66
|
+
it "error when username is missing" do
|
67
|
+
@creds[:username] = nil
|
68
|
+
@service = AvaTax::TaxService.new(@creds)
|
69
|
+
@service.committax(@request_required)[:result_code].should eql "Error"
|
70
|
+
end
|
71
|
+
it "error when password is omitted" do
|
72
|
+
@creds[:password] = nil
|
73
|
+
@service = AvaTax::TaxService.new(@creds)
|
74
|
+
@service.committax(@request_required)[:result_code].should eql "Error"
|
75
|
+
end
|
76
|
+
it "success when clientname is omitted" do
|
77
|
+
@creds[:clientname] = nil
|
78
|
+
@service = AvaTax::TaxService.new(@creds)
|
79
|
+
@service.committax(@request_required)[:result_code].should eql "Success"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "has consistent formatting for" do
|
84
|
+
it "server-side errors" do
|
85
|
+
@creds[:password] = nil
|
86
|
+
@service = AvaTax::TaxService.new(@creds)
|
87
|
+
@result = @service.committax(@request_required)
|
88
|
+
@result[:result_code].should eql "Error" and
|
89
|
+
@result[:messages].kind_of?(Array).should eql true and
|
90
|
+
@result[:messages][0].should include(:details => "The user or account could not be authenticated.")
|
91
|
+
end
|
92
|
+
it "successful results" do
|
93
|
+
@service = AvaTax::TaxService.new(@creds)
|
94
|
+
@result = @service.committax(@request_required)
|
95
|
+
@result[:result_code].should eql "Success" and @result[:transaction_id].should_not be_nil
|
96
|
+
end
|
97
|
+
end
|
98
|
+
describe "requests with" do
|
99
|
+
it "missing required parameters fail" do
|
100
|
+
@service = AvaTax::TaxService.new(@creds)
|
101
|
+
@result = @service.committax(@request_optional)
|
102
|
+
@result[:result_code].should eql "Error"
|
103
|
+
end
|
104
|
+
it "invalid parameters ignore them" do
|
105
|
+
@service = AvaTax::TaxService.new(@creds)
|
106
|
+
@request_required[:bogus] = "data"
|
107
|
+
@result = @service.committax(@request_required)
|
108
|
+
@result[:result_code].should eql "Success"
|
109
|
+
end
|
110
|
+
it "missing optional parameters succeed" do
|
111
|
+
@service = AvaTax::TaxService.new(@creds)
|
112
|
+
@result = @service.committax(@request_required)
|
113
|
+
@result[:result_code].should eql "Success"
|
114
|
+
end
|
115
|
+
it "all parameters succeed" do
|
116
|
+
@service = AvaTax::TaxService.new(@creds)
|
117
|
+
@result = @service.committax(@request_required.merge(@request_optional))
|
118
|
+
@result[:result_code].should eql "Success"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
describe "workflow" do
|
122
|
+
it "should be able to commit posted transactions" do
|
123
|
+
@result = @svc.committax(@request_required)
|
124
|
+
@history_request = {
|
125
|
+
:doccode => @request_required[:doccode],
|
126
|
+
:companycode => @request_required[:companycode],
|
127
|
+
:doctype => @request_required[:doctype],
|
128
|
+
}
|
129
|
+
@history_result = @svc.gettaxhistory(@history_request)
|
130
|
+
@result[:result_code].should eql "Success" and
|
131
|
+
@history_result[:get_tax_result][:doc_status].should eql "Committed"
|
132
|
+
end
|
133
|
+
it "should be able to change the doccode" do
|
134
|
+
@result = @svc.committax(@request_required.merge(@request_optional))
|
135
|
+
@history_request = {
|
136
|
+
:doccode => @request_optional[:newdoccode],
|
137
|
+
:companycode => @request_required[:companycode],
|
138
|
+
:doctype => @request_required[:doctype],
|
139
|
+
}
|
140
|
+
@history_result = @svc.gettaxhistory(@history_request)
|
141
|
+
@result[:result_code].should eql "Success" and
|
142
|
+
@history_result[:get_tax_result][:doc_status].should eql "Committed"
|
143
|
+
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
147
|
end
|