ziptax 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: []