taxjar-ruby 1.2.0 → 1.2.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 +4 -4
- data/README.md +31 -1
- data/lib/taxjar/rate.rb +21 -9
- data/lib/taxjar/version.rb +1 -1
- data/spec/fixtures/rates_intl.json +12 -0
- data/spec/taxjar/api/api_spec.rb +34 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf003c0f0010cd3ea52b16c2912aec7bdd4bc772
|
4
|
+
data.tar.gz: d8a1dbbad9c575c73b1c30bd777c266b44572a8c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfcef7a90b1f9d3e95411ad22a776ad17bb7b4a1d664a4179c3d361f148187bc41156383bd706b66d02eb04f1b6f5e1c48ba5f356ee541c782e0db4471078164
|
7
|
+
data.tar.gz: efc83610b58e8b2b3860b4ad0a9e8763c87370f08969e692bb7a8ea45869a4764f768163c6566d94a632759a4c253360ecdd9455668a8d2d91bf346a78dad4a9
|
data/README.md
CHANGED
@@ -20,6 +20,7 @@ Installing this gem also installs the following gems:
|
|
20
20
|
* [http](https://github.com/httprb/http.rb) Fast Ruby HTTP client with a chainable API and full streaming support.
|
21
21
|
* [addressable](https://github.com/sporkmonger/addressable) Replacement for the URI implementation that is part of Ruby's standard library. It more closely conforms to the relevant RFCs and adds support for IRIs and URI templates.
|
22
22
|
* [memoizable](https://github.com/dkubb/memoizable) Memoize method return values.
|
23
|
+
* [model_attribute](https://github.com/yammer/model_attribute) Type casted attributes for non-ActiveRecord models. [Forked](https://github.com/taxjar/model_attribute) to handle floats and more types.
|
23
24
|
|
24
25
|
## Installation
|
25
26
|
|
@@ -45,7 +46,6 @@ $ gem install taxjar-ruby
|
|
45
46
|
|
46
47
|
First, [get an API key from TaxJar](https://app.taxjar.com/api_sign_up/plus/). Copy and paste in your API key:
|
47
48
|
|
48
|
-
|
49
49
|
You are now ready to use TaxJar!
|
50
50
|
|
51
51
|
## Usage
|
@@ -138,6 +138,25 @@ rates = client.rates_for_location('00150', {
|
|
138
138
|
:combined_district_rate => 0.015,
|
139
139
|
:combined_rate => 0.09
|
140
140
|
}>
|
141
|
+
|
142
|
+
#<Taxjar::Rate:0x007fc47056a928 @attrs={
|
143
|
+
:zip => "V5K0A1",
|
144
|
+
:city => "Vancouver",
|
145
|
+
:state => "BC",
|
146
|
+
:country => "CA",
|
147
|
+
:combined_rate => "0.12"
|
148
|
+
}>
|
149
|
+
|
150
|
+
#<Taxjar::Rate:0x007fc47056a928 @attrs={
|
151
|
+
:country => "FI",
|
152
|
+
:name => "Finland",
|
153
|
+
:standard_rate => "0.24",
|
154
|
+
:reduced_rate => nil,
|
155
|
+
:super_reduced_rate => nil,
|
156
|
+
:parking_rate => nil,
|
157
|
+
:distance_sale_threshold => nil,
|
158
|
+
:freight_taxable => true
|
159
|
+
}>
|
141
160
|
```
|
142
161
|
|
143
162
|
### Calculate Sales tax for an order
|
@@ -209,6 +228,17 @@ client.tax_for_order({
|
|
209
228
|
]
|
210
229
|
}
|
211
230
|
}>
|
231
|
+
|
232
|
+
#<Taxjar::Tax:0x007f3945688fc8 @attrs={
|
233
|
+
:order_total_amount => 27.12,
|
234
|
+
:shipping => 1.5,
|
235
|
+
:taxable_amount => 27.12,
|
236
|
+
:amount_to_collect => 5.42,
|
237
|
+
:rate => 0.2,
|
238
|
+
:has_nexus => true,
|
239
|
+
:freight_taxable => true,
|
240
|
+
:tax_source => "origin"
|
241
|
+
}>
|
212
242
|
```
|
213
243
|
|
214
244
|
### List order transactions
|
data/lib/taxjar/rate.rb
CHANGED
@@ -4,14 +4,26 @@ module Taxjar
|
|
4
4
|
class Rate < Taxjar::Base
|
5
5
|
extend ModelAttribute
|
6
6
|
|
7
|
-
attribute :zip,
|
8
|
-
attribute :state,
|
9
|
-
attribute :state_rate,
|
10
|
-
attribute :county,
|
11
|
-
attribute :county_rate,
|
12
|
-
attribute :city,
|
13
|
-
attribute :city_rate,
|
14
|
-
attribute :combined_district_rate,
|
15
|
-
attribute :combined_rate,
|
7
|
+
attribute :zip, :string
|
8
|
+
attribute :state, :string
|
9
|
+
attribute :state_rate, :float
|
10
|
+
attribute :county, :string
|
11
|
+
attribute :county_rate, :float
|
12
|
+
attribute :city, :string
|
13
|
+
attribute :city_rate, :float
|
14
|
+
attribute :combined_district_rate, :float
|
15
|
+
attribute :combined_rate, :float
|
16
|
+
|
17
|
+
# International
|
18
|
+
attribute :country, :string
|
19
|
+
attribute :name, :string
|
20
|
+
|
21
|
+
# European Union
|
22
|
+
attribute :standard_rate, :float
|
23
|
+
attribute :reduced_rate, :float
|
24
|
+
attribute :super_reduced_rate, :float
|
25
|
+
attribute :parking_rate, :float
|
26
|
+
attribute :distance_sale_threshold, :float
|
27
|
+
attribute :freight_taxable, :boolean
|
16
28
|
end
|
17
29
|
end
|
data/lib/taxjar/version.rb
CHANGED
data/spec/taxjar/api/api_spec.rb
CHANGED
@@ -31,8 +31,7 @@ describe Taxjar::API do
|
|
31
31
|
before do
|
32
32
|
@postal_code = "90210"
|
33
33
|
stub_get("/v2/rates/#{@postal_code}").to_return(body: fixture('rates.json'),
|
34
|
-
|
35
|
-
|
34
|
+
headers: { content_type: 'application/json; charset=utf-8' })
|
36
35
|
end
|
37
36
|
|
38
37
|
it 'requests the right resource' do
|
@@ -54,6 +53,39 @@ describe Taxjar::API do
|
|
54
53
|
expect(rates.combined_rate).to eq(0.09)
|
55
54
|
end
|
56
55
|
end
|
56
|
+
|
57
|
+
describe '#rate_for_location (international)' do
|
58
|
+
before do
|
59
|
+
@postal_code = "00150"
|
60
|
+
@params = "city=Helsinki&country=FI"
|
61
|
+
stub_get("/v2/rates/#{@postal_code}?#{@params}").to_return(body: fixture('rates_intl.json'),
|
62
|
+
headers: { content_type: 'application/json; charset=utf-8' })
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'requests the right resource' do
|
66
|
+
@client.rates_for_location('00150', {
|
67
|
+
:city => 'Helsinki',
|
68
|
+
:country => 'FI'
|
69
|
+
})
|
70
|
+
expect(a_get("/v2/rates/#{@postal_code}?#{@params}")).to have_been_made
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'returns the requested rates' do
|
74
|
+
rates = @client.rates_for_location(@postal_code, {
|
75
|
+
:city => 'Helsinki',
|
76
|
+
:country => 'FI'
|
77
|
+
})
|
78
|
+
expect(rates).to be_a Taxjar::Rate
|
79
|
+
expect(rates.country).to eq('FI')
|
80
|
+
expect(rates.name).to eq('Finland')
|
81
|
+
expect(rates.standard_rate).to eq(0.24)
|
82
|
+
expect(rates.reduced_rate).to eq(0)
|
83
|
+
expect(rates.super_reduced_rate).to eq(0)
|
84
|
+
expect(rates.parking_rate).to eq(0)
|
85
|
+
expect(rates.distance_sale_threshold).to eq(0)
|
86
|
+
expect(rates.freight_taxable).to eq(true)
|
87
|
+
end
|
88
|
+
end
|
57
89
|
|
58
90
|
describe "#tax_for_order" do
|
59
91
|
before do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taxjar-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TaxJar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -132,6 +132,7 @@ files:
|
|
132
132
|
- spec/fixtures/order.json
|
133
133
|
- spec/fixtures/orders.json
|
134
134
|
- spec/fixtures/rates.json
|
135
|
+
- spec/fixtures/rates_intl.json
|
135
136
|
- spec/fixtures/refund.json
|
136
137
|
- spec/fixtures/refunds.json
|
137
138
|
- spec/fixtures/taxes.json
|
@@ -173,6 +174,7 @@ test_files:
|
|
173
174
|
- spec/fixtures/order.json
|
174
175
|
- spec/fixtures/orders.json
|
175
176
|
- spec/fixtures/rates.json
|
177
|
+
- spec/fixtures/rates_intl.json
|
176
178
|
- spec/fixtures/refund.json
|
177
179
|
- spec/fixtures/refunds.json
|
178
180
|
- spec/fixtures/taxes.json
|