taxjar-ruby 2.4.1 → 3.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 -5
- data/.travis.yml +2 -7
- data/CHANGELOG.md +26 -2
- data/README.md +525 -333
- data/lib/taxjar/api/request.rb +24 -15
- data/lib/taxjar/client.rb +9 -1
- data/lib/taxjar/error.rb +9 -0
- data/lib/taxjar/order.rb +3 -1
- data/lib/taxjar/refund.rb +3 -1
- data/lib/taxjar/tax.rb +1 -0
- data/lib/taxjar/version.rb +2 -2
- data/spec/fixtures/order.json +2 -0
- data/spec/fixtures/refund.json +2 -0
- data/spec/fixtures/taxes.json +1 -0
- data/spec/fixtures/taxes_canada.json +1 -0
- data/spec/fixtures/taxes_international.json +1 -0
- data/spec/taxjar/api/api_spec.rb +4 -0
- data/spec/taxjar/api/order_spec.rb +30 -17
- data/spec/taxjar/api/refund_spec.rb +32 -19
- data/spec/taxjar/api/request_spec.rb +65 -8
- data/spec/taxjar/client_spec.rb +4 -4
- data/taxjar-ruby.gemspec +3 -3
- metadata +14 -8
data/lib/taxjar/api/request.rb
CHANGED
@@ -26,15 +26,25 @@ module Taxjar
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def perform
|
29
|
-
options_key =
|
30
|
-
response =
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
options_key = [:get, :delete].include?(@request_method) ? :params : :json
|
30
|
+
response = build_http_client.request(request_method, uri.to_s, options_key => @options)
|
31
|
+
response_body =
|
32
|
+
begin
|
33
|
+
symbolize_keys!(response.parse(:json))
|
34
|
+
rescue JSON::ParserError
|
35
|
+
nil
|
36
|
+
end
|
37
|
+
fail_or_return_response_body(response, response_body)
|
34
38
|
end
|
35
39
|
|
36
40
|
private
|
37
41
|
|
42
|
+
def build_http_client
|
43
|
+
http_client = HTTP.timeout(@http_timeout).headers(headers)
|
44
|
+
http_client = http_client.via(*client.http_proxy) if client.http_proxy
|
45
|
+
http_client
|
46
|
+
end
|
47
|
+
|
38
48
|
def set_request_headers(custom_headers = {})
|
39
49
|
@headers = {}
|
40
50
|
@headers[:user_agent] = client.user_agent
|
@@ -62,16 +72,15 @@ module Taxjar
|
|
62
72
|
object
|
63
73
|
end
|
64
74
|
|
65
|
-
def fail_or_return_response_body(
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
klass.from_response(body)
|
75
|
+
def fail_or_return_response_body(response, body)
|
76
|
+
if body.nil?
|
77
|
+
fail(Taxjar::Error.for_json_parse_error(response.code))
|
78
|
+
elsif response.status.success?
|
79
|
+
body[object_key.to_sym]
|
80
|
+
elsif !(klass = Taxjar::Error::ERRORS[response.code]).nil?
|
81
|
+
fail(klass.from_response(body))
|
82
|
+
else
|
83
|
+
fail(Taxjar::Error.from_response_code(response.code))
|
75
84
|
end
|
76
85
|
end
|
77
86
|
end
|
data/lib/taxjar/client.rb
CHANGED
@@ -16,6 +16,7 @@ module Taxjar
|
|
16
16
|
attr_accessor :api_key
|
17
17
|
attr_accessor :api_url
|
18
18
|
attr_accessor :headers
|
19
|
+
attr_accessor :http_proxy
|
19
20
|
|
20
21
|
def initialize(options = {})
|
21
22
|
options.each do |key, value|
|
@@ -37,7 +38,14 @@ module Taxjar
|
|
37
38
|
end
|
38
39
|
|
39
40
|
def user_agent
|
40
|
-
|
41
|
+
def platform
|
42
|
+
(`uname -a` || '').strip
|
43
|
+
rescue Errno::ENOENT, Errno::ENOMEM
|
44
|
+
''
|
45
|
+
end
|
46
|
+
ruby_version = "ruby #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
|
47
|
+
openSSL_version = OpenSSL::OPENSSL_LIBRARY_VERSION
|
48
|
+
"TaxJar/Ruby (#{platform}; #{ruby_version}; #{openSSL_version}) taxjar-ruby/#{Taxjar::Version}"
|
41
49
|
end
|
42
50
|
end
|
43
51
|
end
|
data/lib/taxjar/error.rb
CHANGED
@@ -61,6 +61,15 @@ module Taxjar
|
|
61
61
|
new(message, code)
|
62
62
|
end
|
63
63
|
|
64
|
+
def from_response_code(code)
|
65
|
+
message = HTTP::Response::Status::REASONS[code] || "Unknown Error"
|
66
|
+
new(message, code)
|
67
|
+
end
|
68
|
+
|
69
|
+
def for_json_parse_error(code)
|
70
|
+
ServerError.new("Couldn't parse response as JSON.", code)
|
71
|
+
end
|
72
|
+
|
64
73
|
end
|
65
74
|
|
66
75
|
def initialize(message = '', code = nil)
|
data/lib/taxjar/order.rb
CHANGED
@@ -3,10 +3,12 @@ require 'taxjar/base'
|
|
3
3
|
module Taxjar
|
4
4
|
class Order < Taxjar::Base
|
5
5
|
extend ModelAttribute
|
6
|
-
|
6
|
+
|
7
7
|
attribute :transaction_id, :string
|
8
8
|
attribute :user_id, :integer
|
9
9
|
attribute :transaction_date, :string
|
10
|
+
attribute :provider, :string
|
11
|
+
attribute :exemption_type, :string
|
10
12
|
attribute :from_country, :string
|
11
13
|
attribute :from_zip, :string
|
12
14
|
attribute :from_state, :string
|
data/lib/taxjar/refund.rb
CHANGED
@@ -3,11 +3,13 @@ require 'taxjar/base'
|
|
3
3
|
module Taxjar
|
4
4
|
class Refund < Taxjar::Base
|
5
5
|
extend ModelAttribute
|
6
|
-
|
6
|
+
|
7
7
|
attribute :transaction_id, :string
|
8
8
|
attribute :user_id, :integer
|
9
9
|
attribute :transaction_date, :string
|
10
10
|
attribute :transaction_reference_id, :string
|
11
|
+
attribute :provider, :string
|
12
|
+
attribute :exemption_type, :string
|
11
13
|
attribute :from_country, :string
|
12
14
|
attribute :from_zip, :string
|
13
15
|
attribute :from_state, :string
|
data/lib/taxjar/tax.rb
CHANGED
@@ -12,6 +12,7 @@ module Taxjar
|
|
12
12
|
attribute :has_nexus, :boolean
|
13
13
|
attribute :freight_taxable, :boolean
|
14
14
|
attribute :tax_source, :string
|
15
|
+
attribute :exemption_type, :string
|
15
16
|
|
16
17
|
object_attr_reader Taxjar::Jurisdictions, :jurisdictions
|
17
18
|
object_attr_reader Taxjar::Breakdown, :breakdown
|
data/lib/taxjar/version.rb
CHANGED
data/spec/fixtures/order.json
CHANGED
data/spec/fixtures/refund.json
CHANGED
data/spec/fixtures/taxes.json
CHANGED
data/spec/taxjar/api/api_spec.rb
CHANGED
@@ -168,6 +168,7 @@ describe Taxjar::API do
|
|
168
168
|
:to_zip => '07446',
|
169
169
|
:amount => 16.50,
|
170
170
|
:shipping => 1.5,
|
171
|
+
:exemption_type => 'non_exempt',
|
171
172
|
:line_items => [{:line_item => {:id => '1',
|
172
173
|
:quantity => 1,
|
173
174
|
:unit_price => 15.0,
|
@@ -191,6 +192,7 @@ describe Taxjar::API do
|
|
191
192
|
expect(tax.has_nexus).to eq(true)
|
192
193
|
expect(tax.freight_taxable).to eq(true)
|
193
194
|
expect(tax.tax_source).to eq('destination')
|
195
|
+
expect(tax.exemption_type).to eq('non_exempt')
|
194
196
|
end
|
195
197
|
|
196
198
|
it 'allows access to jurisdictions' do
|
@@ -275,6 +277,7 @@ describe Taxjar::API do
|
|
275
277
|
expect(tax.has_nexus).to eq(true)
|
276
278
|
expect(tax.freight_taxable).to eq(true)
|
277
279
|
expect(tax.tax_source).to eq('destination')
|
280
|
+
expect(tax.exemption_type).to eq('non_exempt')
|
278
281
|
end
|
279
282
|
|
280
283
|
it 'allows access to jurisdictions' do
|
@@ -330,6 +333,7 @@ describe Taxjar::API do
|
|
330
333
|
expect(tax.has_nexus).to eq(true)
|
331
334
|
expect(tax.freight_taxable).to eq(true)
|
332
335
|
expect(tax.tax_source).to eq('destination')
|
336
|
+
expect(tax.exemption_type).to eq('non_exempt')
|
333
337
|
end
|
334
338
|
|
335
339
|
it 'allows access to jurisdictions' do
|
@@ -28,7 +28,7 @@ describe Taxjar::API::Order do
|
|
28
28
|
|
29
29
|
context "with parameters" do
|
30
30
|
before do
|
31
|
-
stub_get('/v2/transactions/orders?from_transaction_date=2015/05/01&to_transaction_date=2015/05/31').
|
31
|
+
stub_get('/v2/transactions/orders?from_transaction_date=2015/05/01&to_transaction_date=2015/05/31&provider=api').
|
32
32
|
to_return(body: fixture('orders.json'),
|
33
33
|
headers: {content_type: 'application/json; charset=utf-8'})
|
34
34
|
|
@@ -36,13 +36,15 @@ describe Taxjar::API::Order do
|
|
36
36
|
|
37
37
|
it 'requests the right resource' do
|
38
38
|
@client.list_orders(from_transaction_date: '2015/05/01',
|
39
|
-
|
40
|
-
|
39
|
+
to_transaction_date: '2015/05/31',
|
40
|
+
provider: 'api')
|
41
|
+
expect(a_get('/v2/transactions/orders?from_transaction_date=2015/05/01&to_transaction_date=2015/05/31&provider=api')).to have_been_made
|
41
42
|
end
|
42
43
|
|
43
44
|
it 'returns the requested orders' do
|
44
45
|
orders = @client.list_orders(from_transaction_date: '2015/05/01',
|
45
|
-
to_transaction_date: '2015/05/31'
|
46
|
+
to_transaction_date: '2015/05/31',
|
47
|
+
provider: 'api')
|
46
48
|
expect(orders).to be_an Array
|
47
49
|
expect(orders.first).to be_a String
|
48
50
|
expect(orders.first).to eq('123')
|
@@ -52,22 +54,24 @@ describe Taxjar::API::Order do
|
|
52
54
|
|
53
55
|
describe "#show_order" do
|
54
56
|
before do
|
55
|
-
stub_get('/v2/transactions/orders/123').
|
57
|
+
stub_get('/v2/transactions/orders/123?provider=api').
|
56
58
|
to_return(body: fixture('order.json'),
|
57
59
|
headers: {content_type: 'application/json; charset=utf-8'})
|
58
60
|
end
|
59
61
|
|
60
62
|
it 'requests the right resource' do
|
61
|
-
@client.show_order('123')
|
62
|
-
expect(a_get('/v2/transactions/orders/123')).to have_been_made
|
63
|
+
@client.show_order('123', provider: 'api')
|
64
|
+
expect(a_get('/v2/transactions/orders/123?provider=api')).to have_been_made
|
63
65
|
end
|
64
66
|
|
65
67
|
it 'returns the requested order' do
|
66
|
-
order = @client.show_order('123')
|
68
|
+
order = @client.show_order('123', provider: 'api')
|
67
69
|
expect(order).to be_an Taxjar::Order
|
68
70
|
expect(order.transaction_id).to eq('123')
|
69
71
|
expect(order.user_id).to eq(10649)
|
70
72
|
expect(order.transaction_date).to eq('2015-05-14T00:00:00Z')
|
73
|
+
expect(order.provider).to eq('api')
|
74
|
+
expect(order.exemption_type).to eq('non_exempt')
|
71
75
|
expect(order.from_country).to eq('US')
|
72
76
|
expect(order.from_zip).to eq('93107')
|
73
77
|
expect(order.from_state).to eq('CA')
|
@@ -84,7 +88,7 @@ describe Taxjar::API::Order do
|
|
84
88
|
end
|
85
89
|
|
86
90
|
it 'allows access to line_items' do
|
87
|
-
order = @client.show_order('123')
|
91
|
+
order = @client.show_order('123', provider: 'api')
|
88
92
|
expect(order.line_items[0].id).to eq('1')
|
89
93
|
expect(order.line_items[0].quantity).to eq(1)
|
90
94
|
expect(order.line_items[0].product_identifier).to eq('12-34243-9')
|
@@ -103,6 +107,8 @@ describe Taxjar::API::Order do
|
|
103
107
|
|
104
108
|
@order = {:transaction_id => '123',
|
105
109
|
:transaction_date => '2015/05/14',
|
110
|
+
:provider => 'api',
|
111
|
+
:exemption_type => 'non_exempt',
|
106
112
|
:to_country => 'US',
|
107
113
|
:to_zip => '90002',
|
108
114
|
:to_city => 'Los Angeles',
|
@@ -132,6 +138,8 @@ describe Taxjar::API::Order do
|
|
132
138
|
expect(order.transaction_id).to eq('123')
|
133
139
|
expect(order.user_id).to eq(10649)
|
134
140
|
expect(order.transaction_date).to eq("2015-05-14T00:00:00Z")
|
141
|
+
expect(order.provider).to eq('api')
|
142
|
+
expect(order.exemption_type).to eq('non_exempt')
|
135
143
|
expect(order.from_country).to eq('US')
|
136
144
|
expect(order.from_zip).to eq('93107')
|
137
145
|
expect(order.from_state).to eq('CA')
|
@@ -146,7 +154,7 @@ describe Taxjar::API::Order do
|
|
146
154
|
expect(order.shipping).to eq(1.5)
|
147
155
|
expect(order.sales_tax).to eq(0.95)
|
148
156
|
end
|
149
|
-
|
157
|
+
|
150
158
|
it 'allows access to line_items' do
|
151
159
|
order = @client.create_order(@order)
|
152
160
|
expect(order.line_items[0].id).to eq('1')
|
@@ -169,6 +177,7 @@ describe Taxjar::API::Order do
|
|
169
177
|
@order = {:transaction_id => '123',
|
170
178
|
:amount => 17.95,
|
171
179
|
:shipping => 2.0,
|
180
|
+
:exemption_type => 'non_exempt',
|
172
181
|
:line_items => [{:id => 1,
|
173
182
|
:quantity => 1,
|
174
183
|
:product_identifier => '12-34243-0',
|
@@ -191,6 +200,8 @@ describe Taxjar::API::Order do
|
|
191
200
|
expect(order.transaction_id).to eq('123')
|
192
201
|
expect(order.user_id).to eq(10649)
|
193
202
|
expect(order.transaction_date).to eq("2015-05-14T00:00:00Z")
|
203
|
+
expect(order.provider).to eq('api')
|
204
|
+
expect(order.exemption_type).to eq('non_exempt')
|
194
205
|
expect(order.from_country).to eq('US')
|
195
206
|
expect(order.from_zip).to eq('93107')
|
196
207
|
expect(order.from_state).to eq('CA')
|
@@ -205,7 +216,7 @@ describe Taxjar::API::Order do
|
|
205
216
|
expect(order.shipping).to eq(1.5)
|
206
217
|
expect(order.sales_tax).to eq(0.95)
|
207
218
|
end
|
208
|
-
|
219
|
+
|
209
220
|
it 'allows access to line_items' do
|
210
221
|
order = @client.update_order(@order)
|
211
222
|
expect(order.line_items[0].id).to eq('1')
|
@@ -221,22 +232,24 @@ describe Taxjar::API::Order do
|
|
221
232
|
|
222
233
|
describe "#delete_order" do
|
223
234
|
before do
|
224
|
-
stub_delete('/v2/transactions/orders/123').
|
235
|
+
stub_delete('/v2/transactions/orders/123?provider=api').
|
225
236
|
to_return(body: fixture('order.json'),
|
226
237
|
headers: {content_type: 'application/json; charset=utf-8'})
|
227
238
|
end
|
228
239
|
|
229
240
|
it 'requests the right resource' do
|
230
|
-
@client.delete_order('123')
|
231
|
-
expect(a_delete('/v2/transactions/orders/123')).to have_been_made
|
241
|
+
@client.delete_order('123', provider: 'api')
|
242
|
+
expect(a_delete('/v2/transactions/orders/123?provider=api')).to have_been_made
|
232
243
|
end
|
233
244
|
|
234
245
|
it 'returns the deleted order' do
|
235
|
-
order = @client.delete_order('123')
|
246
|
+
order = @client.delete_order('123', provider: 'api')
|
236
247
|
expect(order).to be_an Taxjar::Order
|
237
248
|
expect(order.transaction_id).to eq('123')
|
238
249
|
expect(order.user_id).to eq(10649)
|
239
250
|
expect(order.transaction_date).to eq("2015-05-14T00:00:00Z")
|
251
|
+
expect(order.provider).to eq('api')
|
252
|
+
expect(order.exemption_type).to eq('non_exempt')
|
240
253
|
expect(order.from_country).to eq('US')
|
241
254
|
expect(order.from_zip).to eq('93107')
|
242
255
|
expect(order.from_state).to eq('CA')
|
@@ -251,9 +264,9 @@ describe Taxjar::API::Order do
|
|
251
264
|
expect(order.shipping).to eq(1.5)
|
252
265
|
expect(order.sales_tax).to eq(0.95)
|
253
266
|
end
|
254
|
-
|
267
|
+
|
255
268
|
it 'allows access to line items' do
|
256
|
-
order = @client.delete_order('123')
|
269
|
+
order = @client.delete_order('123', provider: 'api')
|
257
270
|
expect(order.line_items[0].id).to eq('1')
|
258
271
|
expect(order.line_items[0].quantity).to eq(1)
|
259
272
|
expect(order.line_items[0].product_identifier).to eq('12-34243-9')
|
@@ -28,7 +28,7 @@ describe Taxjar::API::Refund do
|
|
28
28
|
|
29
29
|
context "with parameters" do
|
30
30
|
before do
|
31
|
-
stub_get('/v2/transactions/refunds?from_transaction_date=2015/05/01&to_transaction_date=2015/05/31').
|
31
|
+
stub_get('/v2/transactions/refunds?from_transaction_date=2015/05/01&to_transaction_date=2015/05/31&provider=api').
|
32
32
|
to_return(body: fixture('refunds.json'),
|
33
33
|
headers: {content_type: 'application/json; charset=utf-8'})
|
34
34
|
|
@@ -36,13 +36,15 @@ describe Taxjar::API::Refund do
|
|
36
36
|
|
37
37
|
it 'requests the right resource' do
|
38
38
|
@client.list_refunds(from_transaction_date: '2015/05/01',
|
39
|
-
|
40
|
-
|
39
|
+
to_transaction_date: '2015/05/31',
|
40
|
+
provider: 'api')
|
41
|
+
expect(a_get('/v2/transactions/refunds?from_transaction_date=2015/05/01&to_transaction_date=2015/05/31&provider=api')).to have_been_made
|
41
42
|
end
|
42
43
|
|
43
44
|
it 'returns the requested refunds' do
|
44
45
|
refunds = @client.list_refunds(from_transaction_date: '2015/05/01',
|
45
|
-
|
46
|
+
to_transaction_date: '2015/05/31',
|
47
|
+
provider: 'api')
|
46
48
|
expect(refunds).to be_an Array
|
47
49
|
expect(refunds.first).to be_a String
|
48
50
|
expect(refunds.first).to eq('321')
|
@@ -52,23 +54,25 @@ describe Taxjar::API::Refund do
|
|
52
54
|
|
53
55
|
describe "#show_refund" do
|
54
56
|
before do
|
55
|
-
stub_get('/v2/transactions/refunds/321').
|
57
|
+
stub_get('/v2/transactions/refunds/321?provider=api').
|
56
58
|
to_return(body: fixture('refund.json'),
|
57
59
|
headers: {content_type: 'application/json; charset=utf-8'})
|
58
60
|
end
|
59
61
|
|
60
62
|
it 'requests the right resource' do
|
61
|
-
@client.show_refund('321')
|
62
|
-
expect(a_get('/v2/transactions/refunds/321')).to have_been_made
|
63
|
+
@client.show_refund('321', provider: 'api')
|
64
|
+
expect(a_get('/v2/transactions/refunds/321?provider=api')).to have_been_made
|
63
65
|
end
|
64
66
|
|
65
67
|
it 'returns the requested refund' do
|
66
|
-
refund = @client.show_refund('321')
|
68
|
+
refund = @client.show_refund('321', provider: 'api')
|
67
69
|
expect(refund).to be_an Taxjar::Refund
|
68
70
|
expect(refund.transaction_id).to eq('321')
|
69
71
|
expect(refund.user_id).to eq(10649)
|
70
72
|
expect(refund.transaction_date).to eq("2015-05-14T00:00:00Z")
|
71
73
|
expect(refund.transaction_reference_id).to eq("123")
|
74
|
+
expect(refund.provider).to eql('api')
|
75
|
+
expect(refund.exemption_type).to eq('non_exempt')
|
72
76
|
expect(refund.from_country).to eq('US')
|
73
77
|
expect(refund.from_zip).to eq('93107')
|
74
78
|
expect(refund.from_state).to eq('CA')
|
@@ -83,9 +87,9 @@ describe Taxjar::API::Refund do
|
|
83
87
|
expect(refund.shipping).to eq(1.5)
|
84
88
|
expect(refund.sales_tax).to eq(0.95)
|
85
89
|
end
|
86
|
-
|
90
|
+
|
87
91
|
it 'allows access to line_items' do
|
88
|
-
refund = @client.show_refund('321')
|
92
|
+
refund = @client.show_refund('321', provider: 'api')
|
89
93
|
expect(refund.line_items[0].id).to eq('1')
|
90
94
|
expect(refund.line_items[0].quantity).to eq(1)
|
91
95
|
expect(refund.line_items[0].product_identifier).to eq('12-34243-9')
|
@@ -105,6 +109,8 @@ describe Taxjar::API::Refund do
|
|
105
109
|
@refund = {:transaction_id => '321',
|
106
110
|
:transaction_date => '2015/05/14',
|
107
111
|
:transaction_reference_id => '123',
|
112
|
+
:provider => 'api',
|
113
|
+
:exemption_type => 'non_exempt',
|
108
114
|
:to_country => 'US',
|
109
115
|
:to_zip => '90002',
|
110
116
|
:to_state => 'CA',
|
@@ -135,6 +141,8 @@ describe Taxjar::API::Refund do
|
|
135
141
|
expect(refund.user_id).to eq(10649)
|
136
142
|
expect(refund.transaction_date).to eq("2015-05-14T00:00:00Z")
|
137
143
|
expect(refund.transaction_reference_id).to eq("123")
|
144
|
+
expect(refund.provider).to eq('api')
|
145
|
+
expect(refund.exemption_type).to eq('non_exempt')
|
138
146
|
expect(refund.from_country).to eq('US')
|
139
147
|
expect(refund.from_zip).to eq('93107')
|
140
148
|
expect(refund.from_state).to eq('CA')
|
@@ -149,7 +157,7 @@ describe Taxjar::API::Refund do
|
|
149
157
|
expect(refund.shipping).to eq(1.5)
|
150
158
|
expect(refund.sales_tax).to eq(0.95)
|
151
159
|
end
|
152
|
-
|
160
|
+
|
153
161
|
it 'allows access to line_items' do
|
154
162
|
refund = @client.create_refund(@refund)
|
155
163
|
expect(refund.line_items[0].id).to eq('1')
|
@@ -173,6 +181,7 @@ describe Taxjar::API::Refund do
|
|
173
181
|
:amount => 17.95,
|
174
182
|
:shipping => 2.0,
|
175
183
|
:sales_tax => 0.95,
|
184
|
+
:exemption_type => 'non_exempt',
|
176
185
|
:line_items => [{:quantity => 1,
|
177
186
|
:product_identifier => '12-34243-9',
|
178
187
|
:description => 'Heavy Widget',
|
@@ -195,6 +204,8 @@ describe Taxjar::API::Refund do
|
|
195
204
|
expect(refund.user_id).to eq(10649)
|
196
205
|
expect(refund.transaction_date).to eq("2015-05-14T00:00:00Z")
|
197
206
|
expect(refund.transaction_reference_id).to eq("123")
|
207
|
+
expect(refund.provider).to eq('api')
|
208
|
+
expect(refund.exemption_type).to eq('non_exempt')
|
198
209
|
expect(refund.from_country).to eq('US')
|
199
210
|
expect(refund.from_zip).to eq('93107')
|
200
211
|
expect(refund.from_state).to eq('CA')
|
@@ -209,7 +220,7 @@ describe Taxjar::API::Refund do
|
|
209
220
|
expect(refund.shipping).to eq(1.5)
|
210
221
|
expect(refund.sales_tax).to eq(0.95)
|
211
222
|
end
|
212
|
-
|
223
|
+
|
213
224
|
it 'allows access to line_items' do
|
214
225
|
refund = @client.update_refund(@refund)
|
215
226
|
expect(refund.line_items[0].id).to eq('1')
|
@@ -225,23 +236,25 @@ describe Taxjar::API::Refund do
|
|
225
236
|
|
226
237
|
describe "#delete_refund" do
|
227
238
|
before do
|
228
|
-
stub_delete('/v2/transactions/refunds/321').
|
239
|
+
stub_delete('/v2/transactions/refunds/321?provider=api').
|
229
240
|
to_return(body: fixture('refund.json'),
|
230
241
|
headers: {content_type: 'application/json; charset=utf-8'})
|
231
242
|
end
|
232
243
|
|
233
244
|
it 'requests the right resource' do
|
234
|
-
@client.delete_refund('321')
|
235
|
-
expect(a_delete('/v2/transactions/refunds/321')).to have_been_made
|
245
|
+
@client.delete_refund('321', provider: 'api')
|
246
|
+
expect(a_delete('/v2/transactions/refunds/321?provider=api')).to have_been_made
|
236
247
|
end
|
237
248
|
|
238
|
-
it 'returns the
|
239
|
-
refund = @client.delete_refund('321')
|
249
|
+
it 'returns the deleted refund' do
|
250
|
+
refund = @client.delete_refund('321', provider: 'api')
|
240
251
|
expect(refund).to be_an Taxjar::Refund
|
241
252
|
expect(refund.transaction_id).to eq('321')
|
242
253
|
expect(refund.user_id).to eq(10649)
|
243
254
|
expect(refund.transaction_date).to eq("2015-05-14T00:00:00Z")
|
244
255
|
expect(refund.transaction_reference_id).to eq("123")
|
256
|
+
expect(refund.provider).to eq('api')
|
257
|
+
expect(refund.exemption_type).to eq('non_exempt')
|
245
258
|
expect(refund.from_country).to eq('US')
|
246
259
|
expect(refund.from_zip).to eq('93107')
|
247
260
|
expect(refund.from_state).to eq('CA')
|
@@ -256,9 +269,9 @@ describe Taxjar::API::Refund do
|
|
256
269
|
expect(refund.shipping).to eq(1.5)
|
257
270
|
expect(refund.sales_tax).to eq(0.95)
|
258
271
|
end
|
259
|
-
|
272
|
+
|
260
273
|
it 'allows access to line_items' do
|
261
|
-
refund = @client.delete_refund('321')
|
274
|
+
refund = @client.delete_refund('321', provider: 'api')
|
262
275
|
expect(refund.line_items[0].id).to eq('1')
|
263
276
|
expect(refund.line_items[0].quantity).to eq(1)
|
264
277
|
expect(refund.line_items[0].product_identifier).to eq('12-34243-9')
|