ziptax 0.0.1 → 0.0.2
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/lib/zip_tax.rb +3 -0
- data/lib/zip_tax/response.rb +7 -1
- data/lib/zip_tax/sales_tax.rb +8 -6
- data/lib/zip_tax/version.rb +1 -1
- data/spec/lib/zip_tax/sales_tax_spec.rb +28 -14
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6afdbbb88bb11f22b44fb7d6fefd6e8aa84af92
|
4
|
+
data.tar.gz: ff6e331acea9618d9f7fdf57e7797766739a611d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46c1d75684d29bf3b861d15e2250f09d8182a1b4a9cb122d1186a0ce6bbd87eccbcaaec005bbe688945a41ad87a92ac2c8830d571f85d99929047d2e5bf5f4c0
|
7
|
+
data.tar.gz: ce18de858d8d6f78a3c12f5eb2a8d300de22062163c6e802626d206cdbe23d1d6092d87fbc2d8a52732a16ca2308cd5068f8a8dba8f99899331d851ba33896e2
|
data/lib/zip_tax.rb
CHANGED
data/lib/zip_tax/response.rb
CHANGED
@@ -10,8 +10,14 @@ module ZipTax
|
|
10
10
|
# it is supported in the API
|
11
11
|
hsh = JSON.parse(response_hsh)
|
12
12
|
resp = ZipTax::Response.new(hsh)
|
13
|
-
resp.results = hsh['results'].collect
|
13
|
+
resp.results = hsh['results'].collect do |result|
|
14
|
+
self.create_result_from_response(result)
|
15
|
+
end
|
14
16
|
resp
|
15
17
|
end
|
18
|
+
|
19
|
+
def self.create_result_from_response(result)
|
20
|
+
ZipTax::Result.new(result)
|
21
|
+
end
|
16
22
|
end
|
17
23
|
end
|
data/lib/zip_tax/sales_tax.rb
CHANGED
@@ -8,12 +8,12 @@ module ZipTax
|
|
8
8
|
|
9
9
|
BASE_URL="http://api.zip-tax.com/request/v20"
|
10
10
|
|
11
|
-
def initialize(
|
12
|
-
postalcode: nil,
|
11
|
+
def initialize(postalcode: nil,
|
13
12
|
state: nil,
|
14
13
|
city: nil)
|
15
14
|
|
16
|
-
fail ArgumentError,
|
15
|
+
fail ArgumentError, 'ZipTax.api_key must be set' if ZipTax.api_key.nil?
|
16
|
+
fail ArgumentError, "postalcode is a required argument" if !postalcode
|
17
17
|
@key = key
|
18
18
|
@postalcode = postalcode.to_s
|
19
19
|
@state = state
|
@@ -22,7 +22,8 @@ module ZipTax
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def request_url
|
25
|
-
query = {
|
25
|
+
query = {postalcode: @postalcode, state: @state, city: @city, format: @format}
|
26
|
+
query.merge!(key: ZipTax.api_key)
|
26
27
|
"#{BASE_URL}?#{Rack::Utils.build_query(query)}"
|
27
28
|
end
|
28
29
|
|
@@ -32,10 +33,11 @@ module ZipTax
|
|
32
33
|
ZipTax::Response.new_from_http_request(resp)
|
33
34
|
end
|
34
35
|
|
35
|
-
def self.request_for(
|
36
|
+
def self.request_for(postalcode: nil, state: nil, city: nil)
|
36
37
|
|
37
|
-
rt = self.new(
|
38
|
+
rt = self.new(postalcode: postalcode, state: state, city: city)
|
38
39
|
rt.request_tax
|
39
40
|
end
|
41
|
+
|
40
42
|
end
|
41
43
|
end
|
data/lib/zip_tax/version.rb
CHANGED
@@ -31,25 +31,41 @@ describe ZipTax::SalesTax do
|
|
31
31
|
}
|
32
32
|
STR
|
33
33
|
}
|
34
|
-
describe "#new" do
|
35
|
-
it "errors if key or postal code are not set" do
|
36
|
-
expect {
|
37
|
-
ZipTax::SalesTax.new(postalcode: '001245')
|
38
|
-
}.to raise_exception(ArgumentError, /api key/i)
|
39
34
|
|
35
|
+
let(:generic_request) {
|
36
|
+
ZipTax.api_key = 'abc123'
|
37
|
+
ZipTax::SalesTax.new(postalcode: '00124')
|
38
|
+
}
|
39
|
+
|
40
|
+
describe "must set api key" do
|
41
|
+
it "sets an api key via class attribute" do
|
42
|
+
expect(ZipTax.api_key).to be_falsey
|
43
|
+
ZipTax.api_key = 'abc123'
|
44
|
+
expect(ZipTax.api_key).to_not be_nil
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "#new" do
|
49
|
+
it "errors if postal code are not set" do
|
40
50
|
expect {
|
41
|
-
ZipTax::SalesTax.new
|
51
|
+
ZipTax::SalesTax.new
|
42
52
|
}.to raise_exception(ArgumentError, /postalcode/i)
|
43
53
|
end
|
44
54
|
|
55
|
+
it "errors if api_key is not set" do
|
56
|
+
expect(ZipTax).to receive(:api_key).and_return(nil)
|
57
|
+
expect {
|
58
|
+
ZipTax::SalesTax.new(postalcode: '10023')
|
59
|
+
}.to raise_exception(ArgumentError, /api_key/i)
|
60
|
+
end
|
61
|
+
|
45
62
|
it "sets all possible parameters to the api" do
|
46
|
-
rq = ZipTax::SalesTax.new(
|
47
|
-
postalcode: '000123',
|
63
|
+
rq = ZipTax::SalesTax.new(postalcode: '000123',
|
48
64
|
state: 'NY',
|
49
65
|
city: 'New York'
|
50
66
|
)
|
51
67
|
expect(rq).to be_kind_of ZipTax::SalesTax
|
52
|
-
[:
|
68
|
+
[:postalcode, :state, :city].each do |attr|
|
53
69
|
expect(rq.send(attr.to_sym)).to_not be_nil
|
54
70
|
end
|
55
71
|
end
|
@@ -59,8 +75,7 @@ describe ZipTax::SalesTax do
|
|
59
75
|
context "success" do
|
60
76
|
it "returns a json response" do
|
61
77
|
expect(Net::HTTP).to receive(:get).and_return(fake_response)
|
62
|
-
|
63
|
-
resp = rq.request_tax
|
78
|
+
resp = generic_request.request_tax
|
64
79
|
expect(resp).to be_kind_of ZipTax::Response
|
65
80
|
end
|
66
81
|
end
|
@@ -68,15 +83,14 @@ describe ZipTax::SalesTax do
|
|
68
83
|
|
69
84
|
describe "#request_url" do
|
70
85
|
it "includes the keys/values included as get params on the base url" do
|
71
|
-
|
72
|
-
expect(rq.request_url).to eql("#{ZipTax::SalesTax::BASE_URL}?key=abc123&postalcode=00012&state&city&format=json")
|
86
|
+
expect(generic_request.request_url).to eql("#{ZipTax::SalesTax::BASE_URL}?postalcode=00124&state&city&format=json&key=abc123")
|
73
87
|
end
|
74
88
|
end
|
75
89
|
|
76
90
|
describe ".request_for" do
|
77
91
|
it "calls the API endpoing in one method call" do
|
78
92
|
expect(Net::HTTP).to receive(:get).and_return(fake_response)
|
79
|
-
rq = ZipTax::SalesTax.request_for(
|
93
|
+
rq = ZipTax::SalesTax.request_for(postalcode: '00123')
|
80
94
|
expect(rq).to be_kind_of ZipTax::Response
|
81
95
|
end
|
82
96
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ziptax
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryce McDonnell
|
@@ -14,56 +14,56 @@ dependencies:
|
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.6'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '3.1'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rack
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.4'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.4'
|
69
69
|
description: Fetch calculated sales tax rate at the zip code area of specificity by
|
@@ -74,8 +74,8 @@ executables: []
|
|
74
74
|
extensions: []
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
|
-
- .gitignore
|
78
|
-
- .rspec
|
77
|
+
- ".gitignore"
|
78
|
+
- ".rspec"
|
79
79
|
- Gemfile
|
80
80
|
- LICENSE.txt
|
81
81
|
- README.md
|
@@ -99,12 +99,12 @@ require_paths:
|
|
99
99
|
- lib
|
100
100
|
required_ruby_version: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- -
|
102
|
+
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '0'
|
105
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
|
-
- -
|
107
|
+
- - ">="
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0'
|
110
110
|
requirements: []
|