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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3c03de0d5649f47596a9c9faddaeb2f51aa30501
4
- data.tar.gz: 7f4ec97a2e2200d2a33f136c7a3f14ffaada37bf
3
+ metadata.gz: a6afdbbb88bb11f22b44fb7d6fefd6e8aa84af92
4
+ data.tar.gz: ff6e331acea9618d9f7fdf57e7797766739a611d
5
5
  SHA512:
6
- metadata.gz: 17bc5d039af1a6db1993176a36a59453ff8fe410214a33b1d2af12bc2cde7da40bad84bda8c520f807ac72d7ab03e54500498a99e3d3f829f464155d711981fb
7
- data.tar.gz: cda8978e29f8a71fe83eea5574df2316c058886e9fbcd69bf67ddc270ee12fd9e262e531bfb36912b2bb0e364bf736d6c68f63aae6d2f03b9ab2542d1f183343
6
+ metadata.gz: 46c1d75684d29bf3b861d15e2250f09d8182a1b4a9cb122d1186a0ce6bbd87eccbcaaec005bbe688945a41ad87a92ac2c8830d571f85d99929047d2e5bf5f4c0
7
+ data.tar.gz: ce18de858d8d6f78a3c12f5eb2a8d300de22062163c6e802626d206cdbe23d1d6092d87fbc2d8a52732a16ca2308cd5068f8a8dba8f99899331d851ba33896e2
@@ -1,4 +1,7 @@
1
1
  module ZipTax
2
+ class << self
3
+ attr_accessor :api_key
4
+ end
2
5
  end
3
6
 
4
7
  require "zip_tax/version"
@@ -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 { |result| ZipTax::Result.new(result) }
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
@@ -8,12 +8,12 @@ module ZipTax
8
8
 
9
9
  BASE_URL="http://api.zip-tax.com/request/v20"
10
10
 
11
- def initialize(key: nil,
12
- postalcode: nil,
11
+ def initialize(postalcode: nil,
13
12
  state: nil,
14
13
  city: nil)
15
14
 
16
- fail ArgumentError, "postalcode and key (api key) are required arguments" if !key || !postalcode
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 = {key: @key, postalcode: @postalcode, state: @state, city: @city, format: @format}
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(key: nil, postalcode: nil, state: nil, city: nil)
36
+ def self.request_for(postalcode: nil, state: nil, city: nil)
36
37
 
37
- rt = self.new(key: key, postalcode: postalcode, state: state, city: city)
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
@@ -1,3 +1,3 @@
1
1
  module ZipTax
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -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(key: 'abc123')
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(key: 'abc123',
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
- [:key, :postalcode, :state, :city].each do |attr|
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
- rq = ZipTax::SalesTax.new(key: 'abc123', postalcode: 000123)
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
- rq = ZipTax::SalesTax.new(key: 'abc123', postalcode: "00012")
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(key: 'abc123', postalcode: '00123')
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.1
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: []