avatax 21.9.0 → 22.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +55 -55
  3. data/.rspec +1 -1
  4. data/.travis.yml +18 -18
  5. data/.vs/VSWorkspaceState.json +5 -5
  6. data/.yardopts +4 -4
  7. data/Gemfile +2 -2
  8. data/LICENSE +201 -201
  9. data/README.md +98 -98
  10. data/Rakefile +9 -9
  11. data/avatax.gemspec +38 -38
  12. data/example/avatax.rb +47 -47
  13. data/example/credentials.example.yaml +5 -5
  14. data/lib/avatax/api.rb +27 -27
  15. data/lib/avatax/client/accounts.rb +22 -11
  16. data/lib/avatax/client/addresses.rb +4 -2
  17. data/lib/avatax/client/advancedrules.rb +10 -5
  18. data/lib/avatax/client/ageverification.rb +29 -0
  19. data/lib/avatax/client/avafileforms.rb +10 -5
  20. data/lib/avatax/client/batches.rb +16 -8
  21. data/lib/avatax/client/certexpressinvites.rb +6 -3
  22. data/lib/avatax/client/certificates.rb +30 -15
  23. data/lib/avatax/client/companies.rb +61 -21
  24. data/lib/avatax/client/compliance.rb +25 -14
  25. data/lib/avatax/client/contacts.rb +12 -6
  26. data/lib/avatax/client/customers.rb +26 -13
  27. data/lib/avatax/client/datasources.rb +12 -6
  28. data/lib/avatax/client/definitions.rb +140 -70
  29. data/lib/avatax/client/distancethresholds.rb +12 -6
  30. data/lib/avatax/client/ecms.rb +73 -73
  31. data/lib/avatax/client/ecommercetoken.rb +4 -2
  32. data/lib/avatax/client/errortransactions.rb +61 -61
  33. data/lib/avatax/client/filingcalendars.rb +9 -4
  34. data/lib/avatax/client/filings.rb +6 -2
  35. data/lib/avatax/client/firmclientlinkages.rb +18 -9
  36. data/lib/avatax/client/free.rb +2 -1
  37. data/lib/avatax/client/fundingrequests.rb +4 -2
  38. data/lib/avatax/client/items.rb +50 -25
  39. data/lib/avatax/client/jurisdictionoverrides.rb +12 -6
  40. data/lib/avatax/client/locations.rb +24 -12
  41. data/lib/avatax/client/multidocument.rb +20 -10
  42. data/lib/avatax/client/nexus.rb +30 -15
  43. data/lib/avatax/client/notices.rb +8 -4
  44. data/lib/avatax/client/notifications.rb +6 -3
  45. data/lib/avatax/client/onboarding.rb +55 -55
  46. data/lib/avatax/client/pointofsale.rb +21 -21
  47. data/lib/avatax/client/provisioning.rb +4 -2
  48. data/lib/avatax/client/registrar.rb +22 -11
  49. data/lib/avatax/client/reports.rb +8 -4
  50. data/lib/avatax/client/settings.rb +12 -6
  51. data/lib/avatax/client/shippingverification.rb +66 -0
  52. data/lib/avatax/client/subscriptions.rb +6 -3
  53. data/lib/avatax/client/taxcodes.rb +12 -6
  54. data/lib/avatax/client/taxcontent.rb +10 -5
  55. data/lib/avatax/client/taxprofiles.rb +42 -42
  56. data/lib/avatax/client/taxrules.rb +12 -6
  57. data/lib/avatax/client/transactions.rb +42 -21
  58. data/lib/avatax/client/upcs.rb +12 -6
  59. data/lib/avatax/client/userdefinedfields.rb +52 -0
  60. data/lib/avatax/client/users.rb +16 -8
  61. data/lib/avatax/client/utilities.rb +6 -3
  62. data/lib/avatax/client.rb +37 -35
  63. data/lib/avatax/configuration.rb +76 -76
  64. data/lib/avatax/connection.rb +49 -49
  65. data/lib/avatax/request.rb +51 -42
  66. data/lib/avatax/version.rb +3 -3
  67. data/lib/avatax.rb +26 -26
  68. data/spec/avatax/client/accounts_spec.rb +13 -13
  69. data/spec/avatax/client/transactions_spec.rb +80 -80
  70. data/spec/avatax/request_spec.rb +25 -25
  71. data/spec/avatax_spec.rb +45 -45
  72. data/spec/credentials.yaml.example +4 -4
  73. data/spec/fixtures/accounts.json +15 -15
  74. data/spec/spec_helper.rb +27 -27
  75. metadata +9 -13
data/lib/avatax/client.rb CHANGED
@@ -1,35 +1,37 @@
1
- module AvaTax
2
- class Client < API
3
- Dir[File.expand_path('../client/*.rb', __FILE__)].each{|f| require f}
4
-
5
- include AvaTax::Client::Accounts
6
- include AvaTax::Client::Addresses
7
- include AvaTax::Client::Batches
8
- include AvaTax::Client::CertExpressInvites
9
- include AvaTax::Client::Companies
10
- include AvaTax::Client::Contacts
11
- include AvaTax::Client::Customers
12
- include AvaTax::Client::Definitions
13
- include AvaTax::Client::FilingCalendars
14
- include AvaTax::Client::Filings
15
- include AvaTax::Client::Free
16
- include AvaTax::Client::FundingRequests
17
- include AvaTax::Client::Items
18
- include AvaTax::Client::JurisdictionOverrides
19
- include AvaTax::Client::Locations
20
- include AvaTax::Client::Nexus
21
- include AvaTax::Client::Notices
22
- include AvaTax::Client::Onboarding
23
- include AvaTax::Client::PointOfSale
24
- include AvaTax::Client::Registrar
25
- include AvaTax::Client::Settings
26
- include AvaTax::Client::Subscriptions
27
- include AvaTax::Client::TaxCodes
28
- include AvaTax::Client::TaxContent
29
- include AvaTax::Client::TaxRules
30
- include AvaTax::Client::Transactions
31
- include AvaTax::Client::Upcs
32
- include AvaTax::Client::Users
33
- include AvaTax::Client::Utilities
34
- end
35
- end
1
+ module AvaTax
2
+ class Client < API
3
+ Dir[File.expand_path('../client/*.rb', __FILE__)].each{|f| require f}
4
+
5
+ include AvaTax::Client::Accounts
6
+ include AvaTax::Client::Addresses
7
+ include AvaTax::Client::Batches
8
+ include AvaTax::Client::CertExpressInvites
9
+ include AvaTax::Client::Companies
10
+ include AvaTax::Client::Contacts
11
+ include AvaTax::Client::Customers
12
+ include AvaTax::Client::Definitions
13
+ include AvaTax::Client::FilingCalendars
14
+ include AvaTax::Client::Filings
15
+ include AvaTax::Client::Free
16
+ include AvaTax::Client::FundingRequests
17
+ include AvaTax::Client::Items
18
+ include AvaTax::Client::JurisdictionOverrides
19
+ include AvaTax::Client::Locations
20
+ include AvaTax::Client::Nexus
21
+ include AvaTax::Client::Notices
22
+ include AvaTax::Client::Onboarding
23
+ include AvaTax::Client::PointOfSale
24
+ include AvaTax::Client::Registrar
25
+ include AvaTax::Client::Settings
26
+ include AvaTax::Client::Subscriptions
27
+ include AvaTax::Client::TaxCodes
28
+ include AvaTax::Client::TaxContent
29
+ include AvaTax::Client::TaxRules
30
+ include AvaTax::Client::Transactions
31
+ include AvaTax::Client::Upcs
32
+ include AvaTax::Client::Users
33
+ include AvaTax::Client::Utilities
34
+ include AvaTax::Client::ShippingVerification
35
+ include AvaTax::Client::AgeVerification
36
+ end
37
+ end
@@ -1,76 +1,76 @@
1
- require 'faraday'
2
- require File.expand_path('../version', __FILE__)
3
-
4
- module AvaTax
5
- module Configuration
6
-
7
- VALID_OPTIONS_KEYS = [
8
- :app_name,
9
- :app_version,
10
- :machine_name,
11
- :environment,
12
- :endpoint,
13
- :user_agent,
14
- :username,
15
- :password,
16
- :connection_options,
17
- :logger,
18
- :custom_logger,
19
- :custom_logger_options,
20
- :proxy,
21
- :faraday_response,
22
- :response_big_decimal_conversion
23
- ].freeze
24
-
25
- DEFAULT_APP_NAME = nil
26
- DEFAULT_APP_VERSION = nil
27
- DEFAULT_MACHINE_NAME = nil
28
- DEFAULT_ENDPOINT = 'https://rest.avatax.com'
29
- DEFAULT_USER_AGENT = "AvaTax Ruby Gem #{AvaTax::VERSION}".freeze
30
- DEFAULT_USERNAME = nil
31
- DEFAULT_PASSWORD = nil
32
- DEFAULT_CONNECTION_OPTIONS = {request: {timeout: 1200}} # timeout in seconds
33
- DEFAULT_LOGGER = false
34
- DEFAULT_CUSTOM_LOGGER = nil
35
- DEFAULT_CUSTOM_LOGGER_OPTIONS = {}
36
- DEFAULT_PROXY = nil
37
- DEFAULT_FARADAY_RESPONSE = false
38
- DEFAULT_RESPONSE_BIG_DECIMAL_CONVERSION = false
39
-
40
- attr_accessor *VALID_OPTIONS_KEYS
41
-
42
- # Reset config values when extended
43
- def self.extended(base)
44
- base.reset
45
- end
46
-
47
- # Allow configuration options to be set in a block
48
- def configure
49
- yield self
50
- end
51
-
52
- def options
53
- VALID_OPTIONS_KEYS.inject({}) do |option, key|
54
- option.merge!(key => send(key))
55
- end
56
- end
57
-
58
- def reset
59
- self.app_name = DEFAULT_APP_NAME
60
- self.app_version = DEFAULT_APP_VERSION
61
- self.machine_name = DEFAULT_MACHINE_NAME
62
- self.endpoint = DEFAULT_ENDPOINT
63
- self.user_agent = DEFAULT_USER_AGENT
64
- self.username = DEFAULT_USERNAME
65
- self.password = DEFAULT_PASSWORD
66
- self.connection_options = DEFAULT_CONNECTION_OPTIONS
67
- self.logger = DEFAULT_LOGGER
68
- self.custom_logger = DEFAULT_CUSTOM_LOGGER
69
- self.custom_logger_options = DEFAULT_CUSTOM_LOGGER_OPTIONS
70
- self.proxy = DEFAULT_PROXY
71
- self.faraday_response = DEFAULT_FARADAY_RESPONSE
72
- self.response_big_decimal_conversion = DEFAULT_RESPONSE_BIG_DECIMAL_CONVERSION
73
- end
74
-
75
- end
76
- end
1
+ require 'faraday'
2
+ require File.expand_path('../version', __FILE__)
3
+
4
+ module AvaTax
5
+ module Configuration
6
+
7
+ VALID_OPTIONS_KEYS = [
8
+ :app_name,
9
+ :app_version,
10
+ :machine_name,
11
+ :environment,
12
+ :endpoint,
13
+ :user_agent,
14
+ :username,
15
+ :password,
16
+ :connection_options,
17
+ :logger,
18
+ :custom_logger,
19
+ :custom_logger_options,
20
+ :proxy,
21
+ :faraday_response,
22
+ :response_big_decimal_conversion
23
+ ].freeze
24
+
25
+ DEFAULT_APP_NAME = nil
26
+ DEFAULT_APP_VERSION = nil
27
+ DEFAULT_MACHINE_NAME = nil
28
+ DEFAULT_ENDPOINT = 'https://rest.avatax.com'
29
+ DEFAULT_USER_AGENT = "AvaTax Ruby Gem #{AvaTax::VERSION}".freeze
30
+ DEFAULT_USERNAME = nil
31
+ DEFAULT_PASSWORD = nil
32
+ DEFAULT_CONNECTION_OPTIONS = {request: {timeout: 1200}} # timeout in seconds
33
+ DEFAULT_LOGGER = false
34
+ DEFAULT_CUSTOM_LOGGER = nil
35
+ DEFAULT_CUSTOM_LOGGER_OPTIONS = {}
36
+ DEFAULT_PROXY = nil
37
+ DEFAULT_FARADAY_RESPONSE = false
38
+ DEFAULT_RESPONSE_BIG_DECIMAL_CONVERSION = false
39
+
40
+ attr_accessor *VALID_OPTIONS_KEYS
41
+
42
+ # Reset config values when extended
43
+ def self.extended(base)
44
+ base.reset
45
+ end
46
+
47
+ # Allow configuration options to be set in a block
48
+ def configure
49
+ yield self
50
+ end
51
+
52
+ def options
53
+ VALID_OPTIONS_KEYS.inject({}) do |option, key|
54
+ option.merge!(key => send(key))
55
+ end
56
+ end
57
+
58
+ def reset
59
+ self.app_name = DEFAULT_APP_NAME
60
+ self.app_version = DEFAULT_APP_VERSION
61
+ self.machine_name = DEFAULT_MACHINE_NAME
62
+ self.endpoint = DEFAULT_ENDPOINT
63
+ self.user_agent = DEFAULT_USER_AGENT
64
+ self.username = DEFAULT_USERNAME
65
+ self.password = DEFAULT_PASSWORD
66
+ self.connection_options = DEFAULT_CONNECTION_OPTIONS
67
+ self.logger = DEFAULT_LOGGER
68
+ self.custom_logger = DEFAULT_CUSTOM_LOGGER
69
+ self.custom_logger_options = DEFAULT_CUSTOM_LOGGER_OPTIONS
70
+ self.proxy = DEFAULT_PROXY
71
+ self.faraday_response = DEFAULT_FARADAY_RESPONSE
72
+ self.response_big_decimal_conversion = DEFAULT_RESPONSE_BIG_DECIMAL_CONVERSION
73
+ end
74
+
75
+ end
76
+ end
@@ -1,49 +1,49 @@
1
- require 'faraday_middleware'
2
-
3
- module AvaTax
4
-
5
- module Connection
6
- private
7
- AUTHORIZATION_FILTER_REGEX = /(Authorization\:\ \"Basic\ )(\w+)\=/
8
- REMOVED_LABEL = '\1[REMOVED]'
9
-
10
- def connection
11
- client_id = "#{app_name};#{app_version};RubySdk;#{AvaTax::VERSION.dup};#{machine_name}"
12
- options = {
13
- :headers =>
14
- {
15
- 'Accept' => "application/json; charset=utf-8",
16
- 'User-Agent' => user_agent,
17
- 'X-Avalara-Client' => client_id
18
- },
19
- :url => endpoint,
20
- :proxy => proxy
21
- }.merge(connection_options)
22
-
23
- Faraday.new(options) do |faraday|
24
- if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.2.2') and response_big_decimal_conversion
25
- Oj.default_options = {
26
- bigdecimal_load: :bigdecimal
27
- }
28
- end
29
-
30
- faraday.response :json, content_type: /\bjson$/
31
- faraday.basic_auth(username, password)
32
-
33
- if logger
34
- faraday.response :logger do |logger|
35
- logger.filter(AUTHORIZATION_FILTER_REGEX, REMOVED_LABEL)
36
- end
37
- end
38
-
39
- if custom_logger
40
- faraday.response :logger, custom_logger, custom_logger_options do |logger|
41
- logger.filter(AUTHORIZATION_FILTER_REGEX, REMOVED_LABEL)
42
- end
43
- end
44
-
45
- faraday.adapter Faraday.default_adapter
46
- end
47
- end
48
- end
49
- end
1
+ require 'faraday_middleware'
2
+
3
+ module AvaTax
4
+
5
+ module Connection
6
+ private
7
+ AUTHORIZATION_FILTER_REGEX = /(Authorization\:\ \"Basic\ )(\w+)\=/
8
+ REMOVED_LABEL = '\1[REMOVED]'
9
+
10
+ def connection
11
+ client_id = "#{app_name};#{app_version};RubySdk;API_VERSION;#{machine_name}"
12
+ options = {
13
+ :headers =>
14
+ {
15
+ 'Accept' => "application/json; charset=utf-8",
16
+ 'User-Agent' => user_agent,
17
+ 'X-Avalara-Client' => client_id
18
+ },
19
+ :url => endpoint,
20
+ :proxy => proxy
21
+ }.merge(connection_options)
22
+
23
+ Faraday.new(options) do |faraday|
24
+ if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.2.2') and response_big_decimal_conversion
25
+ Oj.default_options = {
26
+ bigdecimal_load: :bigdecimal
27
+ }
28
+ end
29
+
30
+ faraday.response :json, content_type: /\bjson$/
31
+ faraday.basic_auth(username, password)
32
+
33
+ if logger
34
+ faraday.response :logger do |logger|
35
+ logger.filter(AUTHORIZATION_FILTER_REGEX, REMOVED_LABEL)
36
+ end
37
+ end
38
+
39
+ if custom_logger
40
+ faraday.response :logger, custom_logger, custom_logger_options do |logger|
41
+ logger.filter(AUTHORIZATION_FILTER_REGEX, REMOVED_LABEL)
42
+ end
43
+ end
44
+
45
+ faraday.adapter Faraday.default_adapter
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,42 +1,51 @@
1
- require 'faraday'
2
- require 'json'
3
-
4
- module AvaTax
5
- module Request
6
-
7
- def get(path, options={})
8
- request(:get, path, nil, options)
9
- end
10
-
11
- def post(path, model, options={})
12
- request(:post, path, model, options)
13
- end
14
-
15
- def put(path, model, options={})
16
- request(:put, path, model, options)
17
- end
18
-
19
- def delete(path, options={})
20
- request(:delete, path, nil, options)
21
- end
22
-
23
- def request(method, path, model, options={})
24
- response = connection.send(method) do |request|
25
- case method
26
- when :get, :delete
27
- request.url("#{URI.encode(path)}?#{URI.encode_www_form(options)}")
28
- when :post, :put
29
- request.url("#{URI.encode(path)}?#{URI.encode_www_form(options)}")
30
- request.headers['Content-Type'] = 'application/json'
31
- request.body = model.to_json unless model.empty?
32
- end
33
- end
34
-
35
- if faraday_response
36
- response
37
- else
38
- response.body
39
- end
40
- end
41
- end
42
- end
1
+ require 'faraday'
2
+ require 'json'
3
+ require "erb"
4
+
5
+
6
+ module AvaTax
7
+ module Request
8
+
9
+ def get(path, options={}, apiversion="")
10
+ request(:get, path, nil, options, apiversion)
11
+ end
12
+
13
+ def post(path, model, options={}, apiversion="")
14
+ request(:post, path, model, options, apiversion)
15
+ end
16
+
17
+ def put(path, model, options={}, apiversion="")
18
+ request(:put, path, model, options, apiversion)
19
+ end
20
+
21
+ def delete(path, options={}, apiversion="")
22
+ request(:delete, path, nil, options, apiversion)
23
+ end
24
+
25
+ def request(method, path, model, options={}, apiversion="")
26
+ response = connection.send(method) do |request|
27
+ request.headers['X-Avalara-Client'] = request.headers['X-Avalara-Client'].gsub("API_VERSION", apiversion)
28
+ case method
29
+ when :get, :delete
30
+ request.url("#{encode_path(path)}?#{URI.encode_www_form(options)}")
31
+ when :post, :put
32
+ request.url("#{encode_path(path)}?#{URI.encode_www_form(options)}")
33
+ request.headers['Content-Type'] = 'application/json'
34
+ request.body = model.to_json unless model.empty?
35
+ end
36
+ end
37
+
38
+ if faraday_response
39
+ response
40
+ else
41
+ response.body
42
+ end
43
+ end
44
+
45
+ private
46
+
47
+ def encode_path(path)
48
+ path.split('/').map { |part| ERB::Util.url_encode(part) }.join('/')
49
+ end
50
+ end
51
+ end
@@ -1,3 +1,3 @@
1
- module AvaTax
2
- VERSION = '21.9.0'.freeze unless defined?(::AvaTax::VERSION)
3
- end
1
+ module AvaTax
2
+ VERSION = '22.2.0'.freeze unless defined?(::AvaTax::VERSION)
3
+ end
data/lib/avatax.rb CHANGED
@@ -1,26 +1,26 @@
1
- require File.expand_path('../avatax/configuration', __FILE__)
2
- require File.expand_path('../avatax/api', __FILE__)
3
- require File.expand_path('../avatax/client', __FILE__)
4
-
5
- module AvaTax
6
- extend Configuration
7
-
8
- # Alias for Avatax::Client.new
9
- #
10
- # @return [Avatax::Client]
11
- def self.client(options={})
12
- AvaTax::Client.new(options)
13
- end
14
-
15
- # Delegate to AvaTax::Client
16
- def self.method_missing(method, *args, &block)
17
- return super unless client.respond_to?(method)
18
- client.send(method, *args, &block)
19
- end
20
-
21
- # Delegate to AvaTax::Client
22
- def self.respond_to?(method, include_all=false)
23
- return client.respond_to?(method, include_all) || super
24
- end
25
-
26
- end
1
+ require File.expand_path('../avatax/configuration', __FILE__)
2
+ require File.expand_path('../avatax/api', __FILE__)
3
+ require File.expand_path('../avatax/client', __FILE__)
4
+
5
+ module AvaTax
6
+ extend Configuration
7
+
8
+ # Alias for Avatax::Client.new
9
+ #
10
+ # @return [Avatax::Client]
11
+ def self.client(options={})
12
+ AvaTax::Client.new(options)
13
+ end
14
+
15
+ # Delegate to AvaTax::Client
16
+ def self.method_missing(method, *args, &block)
17
+ return super unless client.respond_to?(method)
18
+ client.send(method, *args, &block)
19
+ end
20
+
21
+ # Delegate to AvaTax::Client
22
+ def self.respond_to?(method, include_all=false)
23
+ return client.respond_to?(method, include_all) || super
24
+ end
25
+
26
+ end
@@ -1,13 +1,13 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
-
3
- describe AvaTax::Client do
4
-
5
- describe ".accounts" do
6
- it "should return an array of accounts" do
7
- accounts = @client.query_accounts
8
- expect(accounts).to be_a Object
9
- expect(accounts['value'].first['id']).to be_a Integer
10
- end
11
- end
12
-
13
- end
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe AvaTax::Client do
4
+
5
+ describe ".accounts" do
6
+ it "should return an array of accounts" do
7
+ accounts = @client.query_accounts
8
+ expect(accounts).to be_a Object
9
+ expect(accounts['value'].first['id']).to be_a Integer
10
+ end
11
+ end
12
+
13
+ end
@@ -1,80 +1,80 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
-
3
- describe AvaTax::Client do
4
-
5
- describe ".transactions" do
6
- before do
7
- @base_transaction = {
8
- type: 'SalesInvoice',
9
- companyCode: @company_code,
10
- date: '2017-06-05',
11
- customerCode: 'ABC',
12
- addresses: {
13
- ShipFrom: {
14
- line1: "123 Main Street",
15
- city: "Irvine",
16
- region: "CA",
17
- country: "US",
18
- postalCode: "92615"
19
- },
20
- ShipTo: {
21
- line1: "100 Market Street",
22
- city: "San Francisco",
23
- region: "CA",
24
- country: "US",
25
- postalCode: "94105"
26
- }
27
- },
28
- lines: [{amount: 100}]
29
- }
30
- end
31
-
32
- it "should create a transaction" do
33
- transaction = @client.create_transaction(@base_transaction)
34
- expect(transaction).to be_a Object
35
- expect(transaction["id"]).to be_a Integer
36
- expect(transaction["status"]).to eq "Saved"
37
- end
38
-
39
- end
40
-
41
-
42
- # Test the option of faraday_response, the returned response should be a type of Faraday response rather than Hashie
43
- describe ".transaction_with_faraday_response" do
44
- before do
45
- @client.faraday_response = true
46
- @base_transaction = {
47
- type: 'SalesInvoice',
48
- companyCode: @company_code,
49
- date: '2017-06-05',
50
- customerCode: 'ABC',
51
- addresses: {
52
- ShipFrom: {
53
- line1: "123 Main Street",
54
- city: "Irvine",
55
- region: "CA",
56
- country: "US",
57
- postalCode: "92615"
58
- },
59
- ShipTo: {
60
- line1: "100 Market Street",
61
- city: "San Francisco",
62
- region: "CA",
63
- country: "US",
64
- postalCode: "94105"
65
- }
66
- },
67
- lines: [{amount: 100}]
68
- }
69
- end
70
-
71
- it "should create a transaction and return the faraday response" do
72
- faraday_trans = @client.create_transaction(@base_transaction)
73
- expect(faraday_trans).to be_a Object
74
- expect(faraday_trans["status"]) == 201
75
- expect(faraday_trans["reason_phrase"]) == "Created"
76
- expect(faraday_trans["request_headers"]).to be_a Object
77
- expect(faraday_trans["body"]).to be_a Object
78
- end
79
- end
80
- end
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe AvaTax::Client do
4
+
5
+ describe ".transactions" do
6
+ before do
7
+ @base_transaction = {
8
+ type: 'SalesInvoice',
9
+ companyCode: @company_code,
10
+ date: '2017-06-05',
11
+ customerCode: 'ABC',
12
+ addresses: {
13
+ ShipFrom: {
14
+ line1: "123 Main Street",
15
+ city: "Irvine",
16
+ region: "CA",
17
+ country: "US",
18
+ postalCode: "92615"
19
+ },
20
+ ShipTo: {
21
+ line1: "100 Market Street",
22
+ city: "San Francisco",
23
+ region: "CA",
24
+ country: "US",
25
+ postalCode: "94105"
26
+ }
27
+ },
28
+ lines: [{amount: 100}]
29
+ }
30
+ end
31
+
32
+ it "should create a transaction" do
33
+ transaction = @client.create_transaction(@base_transaction)
34
+ expect(transaction).to be_a Object
35
+ expect(transaction["id"]).to be_a Integer
36
+ expect(transaction["status"]).to eq "Saved"
37
+ end
38
+
39
+ end
40
+
41
+
42
+ # Test the option of faraday_response, the returned response should be a type of Faraday response rather than Hashie
43
+ describe ".transaction_with_faraday_response" do
44
+ before do
45
+ @client.faraday_response = true
46
+ @base_transaction = {
47
+ type: 'SalesInvoice',
48
+ companyCode: @company_code,
49
+ date: '2017-06-05',
50
+ customerCode: 'ABC',
51
+ addresses: {
52
+ ShipFrom: {
53
+ line1: "123 Main Street",
54
+ city: "Irvine",
55
+ region: "CA",
56
+ country: "US",
57
+ postalCode: "92615"
58
+ },
59
+ ShipTo: {
60
+ line1: "100 Market Street",
61
+ city: "San Francisco",
62
+ region: "CA",
63
+ country: "US",
64
+ postalCode: "94105"
65
+ }
66
+ },
67
+ lines: [{amount: 100}]
68
+ }
69
+ end
70
+
71
+ it "should create a transaction and return the faraday response" do
72
+ faraday_trans = @client.create_transaction(@base_transaction)
73
+ expect(faraday_trans).to be_a Object
74
+ expect(faraday_trans["status"]) == 201
75
+ expect(faraday_trans["reason_phrase"]) == "Created"
76
+ expect(faraday_trans["request_headers"]).to be_a Object
77
+ expect(faraday_trans["body"]).to be_a Object
78
+ end
79
+ end
80
+ end