quaderno 1.14.0 → 1.15.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +56 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +2 -15
  6. data/README.md +1 -1
  7. data/Rakefile +4 -50
  8. data/changelog.md +9 -0
  9. data/lib/quaderno-ruby.rb +3 -4
  10. data/lib/quaderno-ruby/base.rb +106 -108
  11. data/lib/quaderno-ruby/behavior/block.rb +17 -19
  12. data/lib/quaderno-ruby/behavior/crud.rb +93 -95
  13. data/lib/quaderno-ruby/behavior/deliver.rb +16 -18
  14. data/lib/quaderno-ruby/behavior/payment.rb +32 -34
  15. data/lib/quaderno-ruby/behavior/retrieve.rb +23 -25
  16. data/lib/quaderno-ruby/contact.rb +6 -8
  17. data/lib/quaderno-ruby/credit.rb +10 -12
  18. data/lib/quaderno-ruby/document_item.rb +1 -3
  19. data/lib/quaderno-ruby/estimate.rb +5 -7
  20. data/lib/quaderno-ruby/evidence.rb +5 -7
  21. data/lib/quaderno-ruby/exceptions/exceptions.rb +42 -44
  22. data/lib/quaderno-ruby/expense.rb +6 -8
  23. data/lib/quaderno-ruby/helpers/authentication.rb +16 -18
  24. data/lib/quaderno-ruby/income.rb +8 -10
  25. data/lib/quaderno-ruby/invoice.rb +9 -11
  26. data/lib/quaderno-ruby/item.rb +3 -6
  27. data/lib/quaderno-ruby/payment.rb +1 -3
  28. data/lib/quaderno-ruby/receipt.rb +6 -8
  29. data/lib/quaderno-ruby/recurring.rb +4 -7
  30. data/lib/quaderno-ruby/report.rb +56 -58
  31. data/lib/quaderno-ruby/tax.rb +45 -47
  32. data/lib/quaderno-ruby/version.rb +3 -0
  33. data/lib/quaderno-ruby/webhook.rb +3 -5
  34. data/quaderno.gemspec +28 -148
  35. metadata +83 -84
  36. data/Gemfile.lock +0 -91
  37. data/VERSION +0 -1
  38. data/test/fixtures/quaderno_cassettes/.DS_Store +0 -0
  39. data/test/fixtures/quaderno_cassettes/all_contacts.yml +0 -52
  40. data/test/fixtures/quaderno_cassettes/all_contacts_by_access_token.yml +0 -56
  41. data/test/fixtures/quaderno_cassettes/all_contacts_by_authentication_token.yml +0 -57
  42. data/test/fixtures/quaderno_cassettes/all_estimates.yml +0 -52
  43. data/test/fixtures/quaderno_cassettes/all_expenses.yml +0 -55
  44. data/test/fixtures/quaderno_cassettes/all_invoices.yml +0 -56
  45. data/test/fixtures/quaderno_cassettes/all_items.yml +0 -46
  46. data/test/fixtures/quaderno_cassettes/all_receipts.yml +0 -53
  47. data/test/fixtures/quaderno_cassettes/all_webhooks.yml +0 -214
  48. data/test/fixtures/quaderno_cassettes/create_estimate_on_downgraded_API.yml +0 -156
  49. data/test/fixtures/quaderno_cassettes/create_expense_on_downgraded_API.yml +0 -278
  50. data/test/fixtures/quaderno_cassettes/create_invoice_on_downgraded_API.yml +0 -159
  51. data/test/fixtures/quaderno_cassettes/create_receipt_on_downgraded_API.yml +0 -196
  52. data/test/fixtures/quaderno_cassettes/deleted_contact.yml +0 -187
  53. data/test/fixtures/quaderno_cassettes/deleted_contact_by_access_token.yml +0 -199
  54. data/test/fixtures/quaderno_cassettes/deleted_contact_by_authentication_token.yml +0 -199
  55. data/test/fixtures/quaderno_cassettes/deleted_estimate.yml +0 -187
  56. data/test/fixtures/quaderno_cassettes/deleted_expense.yml +0 -189
  57. data/test/fixtures/quaderno_cassettes/deleted_invoice.yml +0 -190
  58. data/test/fixtures/quaderno_cassettes/deleted_item.yml +0 -128
  59. data/test/fixtures/quaderno_cassettes/deleted_receipt.yml +0 -223
  60. data/test/fixtures/quaderno_cassettes/deleted_webhook.yml +0 -257
  61. data/test/fixtures/quaderno_cassettes/delivered_estimate.yml +0 -136
  62. data/test/fixtures/quaderno_cassettes/delivered_invoice.yml +0 -143
  63. data/test/fixtures/quaderno_cassettes/delivered_receipt.yml +0 -140
  64. data/test/fixtures/quaderno_cassettes/evidence_invoice.yml +0 -98
  65. data/test/fixtures/quaderno_cassettes/found_contact.yml +0 -95
  66. data/test/fixtures/quaderno_cassettes/found_contact_by_access_token.yml +0 -99
  67. data/test/fixtures/quaderno_cassettes/found_contact_by_authentication_token.yml +0 -100
  68. data/test/fixtures/quaderno_cassettes/found_estimate.yml +0 -97
  69. data/test/fixtures/quaderno_cassettes/found_expense.yml +0 -99
  70. data/test/fixtures/quaderno_cassettes/found_invoice.yml +0 -100
  71. data/test/fixtures/quaderno_cassettes/found_item.yml +0 -91
  72. data/test/fixtures/quaderno_cassettes/found_receipt.yml +0 -98
  73. data/test/fixtures/quaderno_cassettes/found_webhook.yml +0 -130
  74. data/test/fixtures/quaderno_cassettes/new_contact.yml +0 -48
  75. data/test/fixtures/quaderno_cassettes/new_contact_by_access_token.yml +0 -48
  76. data/test/fixtures/quaderno_cassettes/new_contact_by_authentication_token.yml +0 -48
  77. data/test/fixtures/quaderno_cassettes/new_estimate.yml +0 -137
  78. data/test/fixtures/quaderno_cassettes/new_evidence.yml +0 -48
  79. data/test/fixtures/quaderno_cassettes/new_expense.yml +0 -189
  80. data/test/fixtures/quaderno_cassettes/new_invoice.yml +0 -137
  81. data/test/fixtures/quaderno_cassettes/new_item.yml +0 -48
  82. data/test/fixtures/quaderno_cassettes/new_receipt.yml +0 -173
  83. data/test/fixtures/quaderno_cassettes/new_webhook.yml +0 -87
  84. data/test/fixtures/quaderno_cassettes/paid_expense.yml +0 -98
  85. data/test/fixtures/quaderno_cassettes/paid_invoice.yml +0 -99
  86. data/test/fixtures/quaderno_cassettes/rate_limit.yml +0 -46
  87. data/test/fixtures/quaderno_cassettes/unpay_an_expense.yml +0 -138
  88. data/test/fixtures/quaderno_cassettes/unpay_an_invoice.yml +0 -138
  89. data/test/fixtures/quaderno_cassettes/updated_contact.yml +0 -97
  90. data/test/fixtures/quaderno_cassettes/updated_contact_by_access_token.yml +0 -101
  91. data/test/fixtures/quaderno_cassettes/updated_contact_by_authentication_token.yml +0 -102
  92. data/test/fixtures/quaderno_cassettes/updated_estimate.yml +0 -185
  93. data/test/fixtures/quaderno_cassettes/updated_expense.yml +0 -184
  94. data/test/fixtures/quaderno_cassettes/updated_invoice.yml +0 -184
  95. data/test/fixtures/quaderno_cassettes/updated_item.yml +0 -93
  96. data/test/fixtures/quaderno_cassettes/updated_receipt.yml +0 -220
  97. data/test/fixtures/quaderno_cassettes/updated_webhook.yml +0 -175
  98. data/test/fixtures/quaderno_cassettes/validate_invalid_VAT_number.yml +0 -44
  99. data/test/fixtures/quaderno_cassettes/validate_valid_VAT_number.yml +0 -44
  100. data/test/helper.rb +0 -32
  101. data/test/unit/test_quaderno_contacts.rb +0 -83
  102. data/test/unit/test_quaderno_contacts_thread_safe.rb +0 -104
  103. data/test/unit/test_quaderno_estimates.rb +0 -155
  104. data/test/unit/test_quaderno_evidences.rb +0 -41
  105. data/test/unit/test_quaderno_expenses.rb +0 -162
  106. data/test/unit/test_quaderno_invoices.rb +0 -177
  107. data/test/unit/test_quaderno_items.rb +0 -84
  108. data/test/unit/test_quaderno_receipts.rb +0 -156
  109. data/test/unit/test_quaderno_tax.rb +0 -46
  110. data/test/unit/test_quaderno_webhooks.rb +0 -93
@@ -1,177 +0,0 @@
1
- require 'helper'
2
-
3
- class TestQuadernoInvoice < Test::Unit::TestCase
4
- context 'A user with an authenticate token with invoices' do
5
-
6
- setup do
7
- Quaderno::Base.configure do |config|
8
- config.auth_token = TEST_KEY
9
- config.url = TEST_URL
10
- config.api_version = nil
11
- end
12
- end
13
-
14
- should 'get exception if pass wrong arguments' do
15
- assert_raise ArgumentError do
16
- VCR.use_cassette('all invoices') do
17
- Quaderno::Invoice.all 1, 2, 3
18
- end
19
- end
20
- assert_raise ArgumentError do
21
- VCR.use_cassette('found invoice') do
22
- Quaderno::Invoice.find
23
- end
24
- end
25
- end
26
-
27
- should 'get all invoices (populated db)' do
28
- VCR.use_cassette('all invoices') do
29
- invoices = Quaderno::Invoice.all
30
- assert_not_nil invoices
31
- assert_kind_of Array, invoices
32
- invoices.each do |invoice|
33
- assert_kind_of Quaderno::Invoice, invoice
34
- end
35
- end
36
- end
37
-
38
- should 'find a invoice' do
39
- VCR.use_cassette('found invoice') do
40
- invoices = Quaderno::Invoice.all
41
- invoice = Quaderno::Invoice.find invoices.first.id
42
- assert_kind_of Quaderno::Invoice, invoice
43
- assert_equal invoices.first.id, invoice.id
44
- end
45
- end
46
-
47
- should 'create a invoice' do
48
- VCR.use_cassette('new invoice') do
49
- contacts = Quaderno::Contact.all
50
- invoice = Quaderno::Invoice.create(contact_id: contacts[0].id ,
51
- contact_name: contacts[0].full_name,
52
- currency: 'EUR',
53
- items_attributes: [
54
- {
55
- description: 'Aircraft',
56
- quantity: '1.0',
57
- unit_price: '0.0'
58
- }
59
- ],
60
- tags: 'tnt',
61
- payment_details: '',
62
- notes: '')
63
- assert_kind_of Quaderno::Invoice, invoice
64
- assert_equal contacts[0].id, invoice.contact.id
65
- assert_equal 'Aircraft', invoice.items[0].description
66
- Quaderno::Invoice.delete(invoice.id)
67
- end
68
- end
69
-
70
- should 'update an invoice' do
71
- VCR.use_cassette('updated invoice') do
72
- contacts = Quaderno::Contact.all
73
- invoice = Quaderno::Invoice.create(contact_id: contacts[0].id ,
74
- contact_name: contacts[0].full_name,
75
- currency: 'EUR',
76
- items_attributes: [
77
- {
78
- description: 'Aircraft',
79
- quantity: '1.0',
80
- unit_price: '0.0'
81
- }
82
- ],
83
- tags: 'tnt',
84
- payment_details: '',
85
- notes: '')
86
- invoice = Quaderno::Invoice.update(invoice.id, payment_details: 'Show me the moneeeeeeeyy!!!!')
87
- assert_kind_of Quaderno::Invoice, invoice
88
- assert_equal 'Show me the moneeeeeeeyy!!!!', invoice.payment_details
89
- Quaderno::Invoice.delete(invoice.id)
90
- end
91
- end
92
-
93
- should 'delete an invoice' do
94
- VCR.use_cassette('deleted invoice') do
95
- contacts = Quaderno::Contact.all
96
- invoice = Quaderno::Invoice.create(contact_id: contacts[0].id ,
97
- contact_name: contacts[0].full_name,
98
- currency: 'EUR',
99
- items_attributes: [
100
- {
101
- description: 'Aircraft',
102
- quantity: '1.0',
103
- unit_price: '0.0'
104
- }
105
- ],
106
- tags: 'tnt',
107
- payment_details: '',
108
- notes: '')
109
- Quaderno::Invoice.delete invoice.id
110
- invoices = Quaderno::Invoice.all
111
- assert_not_equal invoices.first.id, invoice.id
112
- end
113
- end
114
-
115
- should 'deliver an invoice' do
116
- VCR.use_cassette('delivered invoice') do
117
- invoices = Quaderno::Invoice.all
118
- rate_limit_before = Quaderno::Base.rate_limit_info
119
- begin
120
- rate_limit_after = invoices.first.deliver
121
- rescue Quaderno::Exceptions::RequiredFieldsEmptyOrInvalid
122
- rate_limit_after = { remaining: (rate_limit_before[:remaining] - 1) }
123
- end
124
- assert_equal rate_limit_before[:remaining]-1, rate_limit_after[:remaining]
125
- end
126
- end
127
-
128
- should 'add a payment' do
129
- VCR.use_cassette('paid invoice') do
130
- invoices = Quaderno::Invoice.all
131
- payment = invoices.first.add_payment(payment_method: 'cash', amount: 100000000)
132
- assert_kind_of Quaderno::Payment, payment
133
- assert_equal 'cash', payment.payment_method
134
- assert_equal 10000000000, payment.amount_cents
135
- assert_equal invoices.first.payments.last.id, payment.id
136
- end
137
- end
138
-
139
- should 'remove a payment' do
140
- VCR.use_cassette('unpay an invoice') do
141
- invoices = Quaderno::Invoice.all
142
- invoices.first.add_payment(payment_method: 'cash', amount: 100000000)
143
- payment = invoices.first.payments.last
144
- array_length = invoices.first.payments.length
145
- invoices.first.remove_payment(payment.id) unless payment.nil?
146
- assert_equal (array_length.zero? ? array_length : array_length-1), invoices.first.payments.length
147
- end
148
- end
149
-
150
- should 'override version' do
151
- Quaderno::Base.api_version = OLDEST_SUPPORTED_API_VERSION
152
-
153
- VCR.use_cassette('create invoice on downgraded API') do
154
- contacts = Quaderno::Contact.all
155
- invoice = Quaderno::Invoice.create(contact_id: contacts[0].id ,
156
- contact_name: contacts[0].full_name,
157
- currency: 'EUR',
158
- items_attributes: [
159
- {
160
- description: 'Aircraft',
161
- quantity: '1.0',
162
- unit_price: '0.0'
163
- }
164
- ],
165
- tags: 'tnt',
166
- payment_details: '',
167
- notes: '')
168
- assert invoice.total_cents.nil?
169
- assert !invoice.total.nil?
170
- assert_kind_of Quaderno::Invoice, invoice
171
- assert_equal contacts[0].id, invoice.contact.id
172
- assert_equal 'Aircraft', invoice.items[0].description
173
- Quaderno::Invoice.delete(invoice.id)
174
- end
175
- end
176
- end
177
- end
@@ -1,84 +0,0 @@
1
- require 'helper'
2
-
3
- class TestQuadernoItem < Test::Unit::TestCase
4
- context 'A user with an authenticate token with items' do
5
-
6
- setup do
7
- Quaderno::Base.configure do |config|
8
- config.auth_token = TEST_KEY
9
- config.url = TEST_URL
10
- config.api_version = nil
11
- end
12
- end
13
-
14
- should 'get exception if pass wrong arguments' do
15
- assert_raise ArgumentError do
16
- VCR.use_cassette('all items') do
17
- Quaderno::Item.all 1, 2, 3
18
- end
19
- end
20
- assert_raise ArgumentError do
21
- VCR.use_cassette('found item') do
22
- Quaderno::Item.find
23
- end
24
- end
25
- end
26
-
27
- should 'get all items (populated db)' do
28
- VCR.use_cassette('all items') do
29
- items = Quaderno::Item.all
30
- assert_not_nil items
31
- assert_kind_of Array, items
32
- items.each do |item|
33
- assert_kind_of Quaderno::Item, item
34
- end
35
- end
36
- end
37
-
38
- should 'find an item' do
39
- VCR.use_cassette('found item') do
40
- new_item = Quaderno::Item.create(code: Time.now.to_i.to_s, name: 'Test_Skynet', unit_cost: 21.00)
41
- item = Quaderno::Item.find new_item.id
42
-
43
- assert_kind_of Quaderno::Item, item
44
- assert_equal new_item.id, item.id
45
- end
46
- end
47
-
48
- should 'create an item' do
49
- VCR.use_cassette('new item') do
50
- item = Quaderno::Item.create(code: '000000', name: 'Test_Skynet', unit_cost: 21.00)
51
- assert_kind_of Quaderno::Item, item
52
- assert_equal '000000', item.code
53
- assert_equal 'Test_Skynet', item.name
54
- end
55
- end
56
-
57
- should 'update an item' do
58
- VCR.use_cassette('updated item') do
59
- new_item = Quaderno::Item.create(code: Time.now.to_i.to_s, name: 'Test_Skynet', unit_cost: 21.00)
60
- item = Quaderno::Item.update(new_item.id, name: 'Test_OCP')
61
-
62
- assert_kind_of Quaderno::Item, item
63
- assert_equal 'Test_OCP', item.name
64
- end
65
- end
66
-
67
- should 'delete a item' do
68
- VCR.use_cassette('deleted item') do
69
- items_before = Quaderno::Item.all
70
- item_id = items_before.last.id
71
- Quaderno::Item.delete item_id
72
- items_after = Quaderno::Item.all
73
- assert_equal (items_before.length - items_after.length), 1
74
- end
75
- end
76
-
77
- should 'know the rate limit' do
78
- VCR.use_cassette('rate limit') do
79
- rate_limit_info = Quaderno::Base.rate_limit_info
80
- assert_operator rate_limit_info[:remaining], :< ,2000
81
- end
82
- end
83
- end
84
- end
@@ -1,156 +0,0 @@
1
- require 'helper'
2
-
3
- class TestQuadernoReceipt < Test::Unit::TestCase
4
- context 'A user with an authenticate token with receipts' do
5
-
6
- setup do
7
- Quaderno::Base.configure do |config|
8
- config.auth_token = TEST_KEY
9
- config.url = TEST_URL
10
- config.api_version = nil
11
- end
12
- end
13
-
14
- should 'get exception if pass wrong arguments' do
15
- assert_raise ArgumentError do
16
- VCR.use_cassette('all receipts') do
17
- Quaderno::Receipt.all 1, 2, 3
18
- end
19
- end
20
- assert_raise ArgumentError do
21
- VCR.use_cassette('found receipt') do
22
- Quaderno::Receipt.find
23
- end
24
- end
25
- end
26
-
27
- should 'get all receipts (populated db)' do
28
- VCR.use_cassette('all receipts') do
29
- receipts = Quaderno::Receipt.all
30
- assert_not_nil receipts
31
- assert_kind_of Array, receipts
32
- receipts.each do |receipt|
33
- assert_kind_of Quaderno::Receipt, receipt
34
- end
35
- end
36
- end
37
-
38
- should 'find a receipt' do
39
- VCR.use_cassette('found receipt') do
40
- receipts = Quaderno::Receipt.all
41
- receipt = Quaderno::Receipt.find receipts.first.id
42
- assert_kind_of Quaderno::Receipt, receipt
43
- assert_equal receipts.first.id, receipt.id
44
- end
45
- end
46
-
47
- should 'create a receipt' do
48
- VCR.use_cassette('new receipt') do
49
- contact = Quaderno::Contact.create(first_name: 'Test customer')
50
- receipt = Quaderno::Receipt.create(contact_id: contact.id ,
51
- currency: 'EUR',
52
- items_attributes: [
53
- {
54
- description: 'Aircraft',
55
- quantity: '1.0',
56
- unit_price: '0.0'
57
- }
58
- ],
59
- tags: 'tnt',
60
- payment_method: :cash,
61
- notes: '')
62
- assert_kind_of Quaderno::Receipt, receipt
63
- assert_equal contact.id, receipt.contact.id
64
- assert_equal 'Aircraft', receipt.items[0].description
65
- Quaderno::Receipt.delete(receipt.id)
66
- Quaderno::Contact.delete(contact.id)
67
- end
68
- end
69
-
70
- should 'update an receipt' do
71
- VCR.use_cassette('updated receipt') do
72
- contact = Quaderno::Contact.create(first_name: 'Test customer')
73
- receipt = Quaderno::Receipt.create(contact_id: contact.id ,
74
- currency: 'EUR',
75
- items_attributes: [
76
- {
77
- description: 'Aircraft',
78
- quantity: '1.0',
79
- unit_price: '0.0'
80
- }
81
- ],
82
- tags: 'tnt',
83
- payment_method: :cash,
84
- notes: '')
85
- receipt = Quaderno::Receipt.update(receipt.id, notes: 'Show me the moneeeeeeeyy!!!!')
86
- assert_kind_of Quaderno::Receipt, receipt
87
- assert_equal 'Show me the moneeeeeeeyy!!!!', receipt.notes
88
- Quaderno::Receipt.delete(receipt.id)
89
- Quaderno::Contact.delete(contact.id)
90
- end
91
- end
92
-
93
- should 'delete an receipt' do
94
- VCR.use_cassette('deleted receipt') do
95
- contact = Quaderno::Contact.create(first_name: 'Test customer')
96
- receipt = Quaderno::Receipt.create(contact_id: contact.id ,
97
- currency: 'EUR',
98
- items_attributes: [
99
- {
100
- description: 'Aircraft',
101
- quantity: '1.0',
102
- unit_price: '0.0'
103
- }
104
- ],
105
- tags: 'tnt',
106
- payment_method: :cash,
107
- notes: '')
108
- Quaderno::Receipt.delete receipt.id
109
- Quaderno::Contact.delete(contact.id)
110
-
111
- receipts = Quaderno::Receipt.all
112
- assert_not_equal receipts.first.id, receipt.id
113
- end
114
- end
115
-
116
- should 'deliver an receipt' do
117
- VCR.use_cassette('delivered receipt') do
118
- receipts = Quaderno::Receipt.all
119
- rate_limit_before = Quaderno::Base.rate_limit_info
120
- begin
121
- rate_limit_after = receipts.first.deliver
122
- rescue Quaderno::Exceptions::RequiredFieldsEmptyOrInvalid
123
- rate_limit_after = { remaining: (rate_limit_before[:remaining] - 1) }
124
- end
125
- assert_equal rate_limit_before[:remaining]-1, rate_limit_after[:remaining]
126
- end
127
- end
128
-
129
- should 'override version' do
130
- Quaderno::Base.api_version = OLDEST_SUPPORTED_API_VERSION
131
-
132
- VCR.use_cassette('create receipt on downgraded API') do
133
- contact = Quaderno::Contact.create(first_name: 'Test customer')
134
- receipt = Quaderno::Receipt.create(contact_id: contact.id ,
135
- currency: 'EUR',
136
- items_attributes: [
137
- {
138
- description: 'Aircraft',
139
- quantity: '1.0',
140
- unit_price: '0.0'
141
- }
142
- ],
143
- tags: 'tnt',
144
- payment_method: :cash,
145
- notes: '')
146
- assert receipt.total_cents.nil?
147
- assert !receipt.total.nil?
148
- assert_kind_of Quaderno::Receipt, receipt
149
- assert_equal contact.id, receipt.contact.id
150
- assert_equal 'Aircraft', receipt.items[0].description
151
- Quaderno::Receipt.delete(receipt.id)
152
- Quaderno::Contact.delete(contact.id)
153
- end
154
- end
155
- end
156
- end
@@ -1,46 +0,0 @@
1
- require 'helper'
2
-
3
- class TestQuadernoTax < Test::Unit::TestCase
4
- context 'A user with an authenticate token with webhooks' do
5
-
6
- setup do
7
- Quaderno::Base.configure do |config|
8
- config.auth_token = TEST_KEY
9
- config.url = TEST_URL
10
- config.api_version = nil
11
- end
12
- end
13
-
14
- should 'raise exception if pass wrong arguments' do
15
- assert_raise ArgumentError do
16
- Quaderno::Tax.calculate 1, 2, 3
17
- end
18
- end
19
-
20
- should 'raise exception if token is wrong' do
21
- VCR.use_cassette('wrong token') do
22
- assert_raise Quaderno::Exceptions::InvalidSubdomainOrToken do
23
- Quaderno::Base.auth_token = '7h15154f4k370k3n'
24
- Quaderno::Tax.calculate(country: 'ES', postal_code: '08080')
25
- end
26
- end
27
- end
28
-
29
- should 'calculate tax' do
30
- VCR.use_cassette('validate valid VAT number') do
31
- vat_number_valid = Quaderno::Tax.validate_vat_number('IE', 'IE6388047V')
32
- assert vat_number_valid
33
- end
34
-
35
- VCR.use_cassette('validate invalid VAT number') do
36
- vat_number_valid = Quaderno::Tax.validate_vat_number('IE', 'IE6388047X')
37
- assert !vat_number_valid
38
- end
39
- end
40
-
41
- should 'validate VAT number' do
42
- VCR.use_cassette('calculate tax') do
43
- end
44
- end
45
- end
46
- end