klarna-xmlrpc 0.2.0
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 +7 -0
- data/.travis.yml +13 -0
- data/Gemfile +14 -0
- data/Guardfile +16 -0
- data/MIT-LICENSE +20 -0
- data/README.textile +139 -0
- data/Rakefile +22 -0
- data/TODO +30 -0
- data/examples/Gemfile +8 -0
- data/examples/config/initializer.rb +15 -0
- data/examples/console.rb +71 -0
- data/examples/public/images/klarna.png +0 -0
- data/examples/public/images/ruby.png +0 -0
- data/examples/views/_address.haml +22 -0
- data/examples/views/_articles.haml +21 -0
- data/examples/views/checkout_page_example.haml +2 -0
- data/examples/views/essential/add_transaction/_form.haml +32 -0
- data/examples/views/essential/add_transaction/result.haml +7 -0
- data/examples/views/essential/calculate_monthly_cost/_form.haml +16 -0
- data/examples/views/essential/calculate_monthly_cost/result.haml +7 -0
- data/examples/views/essential/get_addresses/_form.haml +9 -0
- data/examples/views/essential/get_addresses/result.haml +8 -0
- data/examples/views/index.haml +296 -0
- data/examples/views/layout.haml +48 -0
- data/examples/views/payment_terms_example.haml +102 -0
- data/examples/views/product_page_example.haml +2 -0
- data/examples/views/reservation/activate_reservation/_form.haml +54 -0
- data/examples/views/reservation/activate_reservation/result.haml +7 -0
- data/examples/views/reservation/cancel_reservation/_form.haml +8 -0
- data/examples/views/reservation/cancel_reservation/result.haml +7 -0
- data/examples/views/reservation/change_reservation/_form.haml +10 -0
- data/examples/views/reservation/change_reservation/result.haml +7 -0
- data/examples/views/reservation/reserve_amount/_form.haml +58 -0
- data/examples/views/reservation/reserve_amount/result.haml +7 -0
- data/examples/views/reservation/reserve_ocr_numbers/_form.haml +8 -0
- data/examples/views/reservation/reserve_ocr_numbers/result.haml +7 -0
- data/examples/views/reservation/split_reservation/_form.haml +14 -0
- data/examples/views/reservation/split_reservation/result.haml +7 -0
- data/examples/views/special/get_pclasses/_form.haml +8 -0
- data/examples/views/special/get_pclasses/result.haml +7 -0
- data/examples/views/special/invoice_address/_form.haml +8 -0
- data/examples/views/special/invoice_address/result.haml +7 -0
- data/examples/views/special/invoice_amount/_form.haml +8 -0
- data/examples/views/special/invoice_amount/result.haml +7 -0
- data/examples/views/special/is_invoice_paid/_form.haml +8 -0
- data/examples/views/special/is_invoice_paid/result.haml +7 -0
- data/examples/views/special/update_charge_amount/_form.haml +15 -0
- data/examples/views/special/update_charge_amount/result.haml +7 -0
- data/examples/views/special/update_goods_quantity/_form.haml +17 -0
- data/examples/views/special/update_goods_quantity/result.haml +7 -0
- data/examples/views/special/update_order_number/_form.haml +10 -0
- data/examples/views/special/update_order_number/result.haml +7 -0
- data/examples/views/useful/activate_invoice/_form.haml +9 -0
- data/examples/views/useful/activate_invoice/result.haml +7 -0
- data/examples/views/useful/credit_invoice/_form.haml +11 -0
- data/examples/views/useful/credit_invoice/result.haml +7 -0
- data/examples/views/useful/delete_invoice/_form.haml +9 -0
- data/examples/views/useful/delete_invoice/result.haml +7 -0
- data/examples/views/useful/email_invoice/_form.haml +9 -0
- data/examples/views/useful/email_invoice/result.haml +7 -0
- data/examples/views/useful/has_account/_form.haml +9 -0
- data/examples/views/useful/has_account/result.haml +7 -0
- data/examples/views/useful/return_amount/_form.haml +15 -0
- data/examples/views/useful/return_amount/result.haml +7 -0
- data/examples/views/useful/send_invoice/_form.haml +9 -0
- data/examples/views/useful/send_invoice/result.haml +7 -0
- data/examples/web.rb +349 -0
- data/klarna.gemspec +34 -0
- data/lib/klarna.rb +171 -0
- data/lib/klarna/api.rb +187 -0
- data/lib/klarna/api/client.rb +126 -0
- data/lib/klarna/api/constants.rb +647 -0
- data/lib/klarna/api/errors.rb +154 -0
- data/lib/klarna/api/methods.rb +16 -0
- data/lib/klarna/api/methods/cost_calculations.rb +134 -0
- data/lib/klarna/api/methods/invoicing.rb +304 -0
- data/lib/klarna/api/methods/reservation.rb +188 -0
- data/lib/klarna/api/methods/standard.rb +126 -0
- data/lib/klarna/version.rb +5 -0
- data/test/fixtures/api/companies.yml +97 -0
- data/test/fixtures/api/pclasses.yml +37 -0
- data/test/fixtures/api/persons.yml +144 -0
- data/test/fixtures/api/stores.yml +6 -0
- data/test/fixtures/klarna.yml +10 -0
- data/test/klarna/api/client_test.rb +288 -0
- data/test/klarna/api/errors_test.rb +34 -0
- data/test/klarna/api/methods/cost_calculations_test.rb +78 -0
- data/test/klarna/api/methods/invoicing_test.rb +409 -0
- data/test/klarna/api/methods/reservation_test.rb +66 -0
- data/test/klarna/api/methods/standard_test.rb +244 -0
- data/test/klarna/api_test.rb +184 -0
- data/test/klarna_test.rb +204 -0
- data/test/support/assertions_helper.rb +40 -0
- data/test/test_helper.rb +55 -0
- metadata +335 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
describe Klarna::API::Errors do
|
5
|
+
|
6
|
+
describe Klarna::API::Errors::KlarnaStandardError do
|
7
|
+
it 'should be defined' do
|
8
|
+
assert defined?(::Klarna::API::Errors::KlarnaStandardError)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe Klarna::API::Errors::KlarnaCredentialsError do
|
13
|
+
it 'should be defined' do
|
14
|
+
assert defined?(::Klarna::API::Errors::KlarnaCredentialsError)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe Klarna::API::Errors::KlarnaServiceError do
|
19
|
+
it 'should be defined' do
|
20
|
+
assert defined?(::Klarna::API::Errors::KlarnaServiceError)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe ".error_message" do
|
25
|
+
it "should return correct error key from a ID" do
|
26
|
+
assert_equal :no_such_subscription, ::Klarna::API::Errors.error_message(7101)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return correct error key from a key" do
|
30
|
+
assert_equal :no_such_subscription, ::Klarna::API::Errors.error_message(:no_such_subscription)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
describe Klarna::API::Methods::CostCalculations do
|
5
|
+
|
6
|
+
# TODO: Mock responses using VCR.
|
7
|
+
|
8
|
+
before do
|
9
|
+
valid_credentials!
|
10
|
+
@client = Klarna::API::Client.new
|
11
|
+
|
12
|
+
@protocol_version = ::Klarna::API::PROTOCOL_VERSION.to_s
|
13
|
+
@user_agent = ::XMLRPC::Client::USER_AGENT.to_s
|
14
|
+
|
15
|
+
expose_protected_methods_in @client.class
|
16
|
+
end
|
17
|
+
|
18
|
+
# Spec: http://integration.klarna.com/en/api/monthly-cost-functions/functions/fetchpclasses
|
19
|
+
describe '#fetch_pclasses' do
|
20
|
+
it 'should be defined' do
|
21
|
+
assert_respond_to @client, :fetch_pclasses
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Spec: http://integration.klarna.com/en/api/monthly-cost-functions/functions/calcmonthlycost
|
26
|
+
describe '#calculate_monthly_cost' do
|
27
|
+
it 'should be defined' do
|
28
|
+
assert_respond_to @client, :calculate_monthly_cost
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#periodic_cost' do
|
33
|
+
it 'should be defined' do
|
34
|
+
assert_respond_to @client, :periodic_cost
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#monthly_cost' do
|
39
|
+
it 'should be defined' do
|
40
|
+
assert_respond_to @client, :monthly_cost
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'protected/private methods' do
|
45
|
+
|
46
|
+
describe '#calculate_interest_cost' do
|
47
|
+
it 'should be defined' do
|
48
|
+
assert_respond_to @client, :calculate_interest_cost
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '#calculate_monthly_payment' do
|
53
|
+
it 'should be defined' do
|
54
|
+
assert_respond_to @client, :calculate_monthly_payment
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '#calculate_daily_rate' do
|
59
|
+
it 'should be defined' do
|
60
|
+
assert_respond_to @client, :calculate_daily_rate
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe '#get_denominator' do
|
65
|
+
it 'should be defined' do
|
66
|
+
assert_respond_to @client, :get_denominator
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe '#round_up' do
|
71
|
+
it 'should be defined' do
|
72
|
+
assert_respond_to @client, :round_up
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
@@ -0,0 +1,409 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
describe Klarna::API::Methods::Invoicing do
|
5
|
+
|
6
|
+
# TODO: Mock responses using VCR.
|
7
|
+
|
8
|
+
INVALID_ORDER_NO = '12312312312312312'
|
9
|
+
|
10
|
+
before do
|
11
|
+
valid_credentials!
|
12
|
+
@klarna = Klarna::API::Client.new
|
13
|
+
@klarna.client_ip = '85.230.98.196'
|
14
|
+
|
15
|
+
@protocol_version = ::Klarna::API::PROTOCOL_VERSION.to_s
|
16
|
+
@user_agent = ::XMLRPC::Client::USER_AGENT.to_s
|
17
|
+
|
18
|
+
expose_protected_methods_in @klarna.class
|
19
|
+
|
20
|
+
@order_items = []
|
21
|
+
@order_items << @klarna.make_goods(1, 'ABC1', "T-shirt 1", 1.00 * 100, 25, 0, :INC_VAT => true)
|
22
|
+
@order_items << @klarna.make_goods(3, 'ABC2', "T-shirt 2", 7.00 * 100, 25, 0, :INC_VAT => true)
|
23
|
+
@order_items << @klarna.make_goods(7, 'ABC3', "T-shirt 3", 17.00 * 100, 25, 0, :INC_VAT => true)
|
24
|
+
@order_items_total = (1 * (1.00 * 100) + 3 * (7.00 * 100) + 7 * (17.00 * 100)).to_i
|
25
|
+
|
26
|
+
@address_SE = @klarna.make_address("c/o Lidin", "Junibackg. 42", "23634", "Höllviken", :SE, "076 526 00 00", "076 526 00 00", "karl.lidin@klarna.com")
|
27
|
+
|
28
|
+
@valid_invoice_args_SE =
|
29
|
+
['USER-4304158399', 'ORDER-1', @order_items, 0, 0, :NORMAL, '4304158399', 'Karl', 'Lidin', @address_SE, '85.230.98.196', :SEK, :SE, :SV, :SE, nil, nil, nil, nil, nil, nil, nil, 2]
|
30
|
+
end
|
31
|
+
|
32
|
+
# Spec: http://integration.klarna.com/en/api/standard-integration/functions/addtransaction
|
33
|
+
describe '#add_invoice' do
|
34
|
+
it 'should be defined' do
|
35
|
+
assert_respond_to @klarna, :add_transaction
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "SE" do
|
39
|
+
it 'should create order successfully with valid arguments' do
|
40
|
+
invoice_no = @klarna.add_transaction(
|
41
|
+
'USER-4304158399', 'ORDER-1', @order_items, 0, 0, ::Klarna::API::SHIPMENT_TYPES[:NORMAL], '4304158399', 'Karl', 'Lidin', @address_SE, '85.230.98.196', ::Klarna::API::CURRENCIES[:SEK], ::Klarna::API::COUNTRIES[:SE], ::Klarna::API::LANGUAGES[:SV], ::Klarna::API::PNO_FORMATS[:SE])
|
42
|
+
|
43
|
+
assert_match /^\d+$/, invoice_no
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should accept shortcut arguments for: shipment_type, currency, country, language, pno_encoding' do
|
47
|
+
invoice_no = @klarna.add_invoice(
|
48
|
+
'USER-4304158399', 'ORDER-1', @order_items, 0, 0, :NORMAL, '4304158399', 'Karl', 'Lidin', @address_SE, '85.230.98.196', :SEK, :SE, :SV, :SE)
|
49
|
+
|
50
|
+
assert_match /^\d+$/, invoice_no
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# NOTE: active_invoice don't seem to work with the Klarna 2.0 backend currently, raises "invoice_in_test_mode" (which it didn't before).
|
56
|
+
|
57
|
+
# Spec:
|
58
|
+
# http://integration.klarna.com/en/api/standard-integration/functions/activateinvoice
|
59
|
+
# http://integration.klarna.com/en/api/standard-integration/functions/activatepart (combined)
|
60
|
+
describe '#activate_invoice' do
|
61
|
+
it 'should be defined' do
|
62
|
+
assert_respond_to @klarna, :activate_invoice
|
63
|
+
end
|
64
|
+
|
65
|
+
describe 'full' do
|
66
|
+
it 'should raise error for when trying to activate an non-existing invoice' do
|
67
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
68
|
+
@klarna.activate_invoice(INVALID_ORDER_NO)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'should successfully activate an existing invoice' # do
|
73
|
+
# invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
74
|
+
#
|
75
|
+
# assert_equal "#{@klarna.endpoint_uri}/temp/#{invoice_no}.pdf", @klarna.activate_invoice(invoice_no)
|
76
|
+
# end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe 'partial' do
|
80
|
+
it 'should raise error for when trying to activate an non-existing invoice' do
|
81
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
82
|
+
activate_articles = [@order_items.first]
|
83
|
+
@klarna.activate_invoice(INVALID_ORDER_NO, activate_articles)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# FAILS: Klarna API 2.0 don't support this for test-accounts. :(
|
88
|
+
it 'should successfully activate an existing partial invoice' # do
|
89
|
+
# invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
90
|
+
# activate_articles = [@order_items.first]
|
91
|
+
#
|
92
|
+
# assert_equal "#{@klarna.endpoint_uri}/temp/#{invoice_no}.pdf", @klarna.activate_invoice(invoice_no, activate_articles)
|
93
|
+
# end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# Spec:
|
98
|
+
# http://integration.klarna.com/en/api/standard-integration/functions/deleteinvoice
|
99
|
+
describe '#delete_invoice' do
|
100
|
+
it 'should be defined' do
|
101
|
+
assert_respond_to @klarna, :delete_invoice
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'should raise error when trying to delete an non-existing invoice' do
|
105
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
106
|
+
@klarna.delete_invoice(INVALID_ORDER_NO)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'should successfully delete an existing invoice' do
|
111
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
112
|
+
|
113
|
+
assert_equal 'ok', @klarna.delete_invoice(invoice_no)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
# Spec:
|
118
|
+
# http://integration.klarna.com/en/api/invoice-handling-functions/functions/returnamount
|
119
|
+
describe '#return_amount' do
|
120
|
+
it 'should be defined' do
|
121
|
+
assert_respond_to @klarna, :return_amount
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'should raise error for non-existing invoice' do
|
125
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
126
|
+
amount = 100
|
127
|
+
vat = 25
|
128
|
+
@klarna.return_amount(INVALID_ORDER_NO, amount, vat)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'should raise error for existing but un-activated invoice' do
|
133
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
134
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
135
|
+
amount = 100
|
136
|
+
vat = 25
|
137
|
+
|
138
|
+
assert_equal invoice_no, @klarna.return_amount(invoice_no, amount, vat)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
# FAILS: Klarna API 2.0 don't support this for test-accounts. :(
|
143
|
+
it 'should successfully return amount for an activated invoice' # do
|
144
|
+
# invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
145
|
+
# amount = 100
|
146
|
+
# vat = 25
|
147
|
+
#
|
148
|
+
# assert_equal invoice_no, @klarna.credit_invoice(invoice_no, credit_no)
|
149
|
+
# end
|
150
|
+
end
|
151
|
+
|
152
|
+
# Spec:
|
153
|
+
# http://integration.klarna.com/en/api/invoice-handling-functions/functions/returnamount
|
154
|
+
describe '#credit_invoice' do
|
155
|
+
it 'should be defined' do
|
156
|
+
assert_respond_to @klarna, :credit_invoice
|
157
|
+
end
|
158
|
+
|
159
|
+
describe 'full' do
|
160
|
+
it 'should raise error for non-existing invoice' do
|
161
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
162
|
+
credit_no = ''
|
163
|
+
@klarna.credit_invoice(INVALID_ORDER_NO, credit_no)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
it 'should raise error for existing but un-activated invoice' do
|
168
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
169
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
170
|
+
credit_no = ''
|
171
|
+
@klarna.credit_invoice(invoice_no, credit_no)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
# FAILS: Klarna API 2.0 don't support this for test-accounts. :(
|
176
|
+
it 'should successfully credit an activated invoice' # do
|
177
|
+
# invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
178
|
+
# invoice_url = @klarna.activate_invoice(invoice_no)
|
179
|
+
# credit_no = ''
|
180
|
+
#
|
181
|
+
# assert_equal invoice_no, @klarna.credit_invoice(invoice_no, credit_no)
|
182
|
+
# end
|
183
|
+
end
|
184
|
+
|
185
|
+
describe 'partial' do
|
186
|
+
it 'should raise error for existing but un-activated invoice' do
|
187
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
188
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
189
|
+
refund_articles = [@order_items.first]
|
190
|
+
credit_no = ''
|
191
|
+
@klarna.credit_invoice(invoice_no, credit_no, refund_articles)
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
it 'should successfully credit an activated invoice' # do
|
196
|
+
# invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
197
|
+
# invoice_url = @klarna.activate_invoice(invoice_no)
|
198
|
+
# refund_articles = [@order_items.first]
|
199
|
+
# credit_no = ''
|
200
|
+
#
|
201
|
+
# assert_equal invoice_no, @klarna.credit_invoice(invoice_no, credit_no, refund_articles)
|
202
|
+
# end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
# Spec:
|
207
|
+
# http://integration.klarna.com/en/api/invoice-handling-functions/functions/emailinvoice
|
208
|
+
describe '#email_invoice' do
|
209
|
+
it 'should be defined' do
|
210
|
+
assert_respond_to @klarna, :email_invoice
|
211
|
+
end
|
212
|
+
|
213
|
+
it 'should raise error for e-mail request of an existing but un-activated invoice' do
|
214
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
215
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
216
|
+
@klarna.email_invoice(invoice_no)
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
# FAILS: Klarna API 2.0 don't support this for test-accounts. :(
|
221
|
+
it 'should successfully accept email request of an activated invoice' # do
|
222
|
+
# invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
223
|
+
# invoice_url = @klarna.activate_invoice(invoice_no)
|
224
|
+
#
|
225
|
+
# assert_equal invoice_no, @klarna.email_invoice(invoice_no)
|
226
|
+
# end
|
227
|
+
end
|
228
|
+
|
229
|
+
# Spec:
|
230
|
+
# http://integration.klarna.com/en/api/invoice-handling-functions/functions/sendinvoice
|
231
|
+
describe '#send_invoice' do
|
232
|
+
it 'should be defined' do
|
233
|
+
assert_respond_to @klarna, :send_invoice
|
234
|
+
end
|
235
|
+
|
236
|
+
it 'should raise error for snail-mail request of an existing but un-activated invoice' do
|
237
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
238
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
239
|
+
@klarna.send_invoice(invoice_no)
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
# FAILS: Klarna API 2.0 don't support this for test-accounts. :(
|
244
|
+
it 'should successfully accept snail-mail request of an activated invoice' # do
|
245
|
+
# invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
246
|
+
# invoice_url = @klarna.activate_invoice(invoice_no)
|
247
|
+
#
|
248
|
+
# assert_equal invoice_no, @klarna.send_invoice(invoice_no)
|
249
|
+
# end
|
250
|
+
end
|
251
|
+
|
252
|
+
# Spec:
|
253
|
+
# http://integration.klarna.com/en/api/invoice-handling-functions/functions/mkartno
|
254
|
+
describe '#make_article' do
|
255
|
+
it 'should be defined' do
|
256
|
+
assert_respond_to @klarna, :make_article
|
257
|
+
end
|
258
|
+
|
259
|
+
it 'should generate valid article structure' do
|
260
|
+
assert_equal [5, '12345'], @klarna.make_article(5, 12345)
|
261
|
+
assert_equal [5, '12345'], @klarna.make_article(5, '12345')
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
# Spec:
|
266
|
+
# http://integration.klarna.com/en/api/other-functions/functions/updategoodsqty
|
267
|
+
describe '#update_goods_quantity' do
|
268
|
+
it 'should be defined' do
|
269
|
+
assert_respond_to @klarna, :update_goods_quantity
|
270
|
+
end
|
271
|
+
|
272
|
+
it 'should raise error for an non-existing invoice' do
|
273
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
274
|
+
@klarna.update_goods_quantity(INVALID_ORDER_NO, 'ABC1', 10)
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
278
|
+
it 'should raise error for an non-existing article-no for an existing invoice' do
|
279
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
280
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
281
|
+
|
282
|
+
@klarna.update_goods_quantity(invoice_no, 'XXX', 10)
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
it 'should successfully update goods quantity for an existing invoice and valid article-no' do
|
287
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
288
|
+
|
289
|
+
assert_equal invoice_no, @klarna.update_goods_quantity(invoice_no, 'ABC1', 10)
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
# Spec:
|
294
|
+
# http://integration.klarna.com/en/api/other-functions/functions/updatechargeamount
|
295
|
+
describe '#update_charge_amount' do
|
296
|
+
it 'should be defined' do
|
297
|
+
assert_respond_to @klarna, :update_charge_amount
|
298
|
+
end
|
299
|
+
|
300
|
+
it 'should raise error for an non-existing invoice' do
|
301
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
302
|
+
@klarna.update_charge_amount(INVALID_ORDER_NO, 1, 10.00 * 100)
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
it 'should successfully update shipment fee for an existing invoice'
|
307
|
+
|
308
|
+
it 'should successfully update handling fee for an existing invoice'
|
309
|
+
end
|
310
|
+
|
311
|
+
# Spec: http://integration.klarna.com/en/api/other-functions/functions/updateorderno
|
312
|
+
describe '#update_order_no' do
|
313
|
+
it 'should be defined' do
|
314
|
+
assert_respond_to @klarna, :update_order_no
|
315
|
+
end
|
316
|
+
|
317
|
+
it 'should raise error for an non-existing invoice' do
|
318
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
319
|
+
@klarna.update_order_no(INVALID_ORDER_NO, '123')
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
323
|
+
# FIXME: Throws "invno"-error - don't know why. :S
|
324
|
+
it 'should successfully update order-no for an existing invoice' # do
|
325
|
+
# invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
326
|
+
# new_invoice_no = (invoice_no.to_i + 1).to_s
|
327
|
+
|
328
|
+
# assert_equal new_invoice_no, @klarna.update_order_no(invoice_no, new_invoice_no)
|
329
|
+
# end
|
330
|
+
end
|
331
|
+
|
332
|
+
# Spec:
|
333
|
+
# http://integration.klarna.com/en/api/other-functions/functions/invoiceaddress
|
334
|
+
describe '#invoice_address' do
|
335
|
+
it 'should be defined' do
|
336
|
+
assert_respond_to @klarna, :invoice_address
|
337
|
+
end
|
338
|
+
|
339
|
+
it 'should raise error for an non-existing invoice' do
|
340
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
341
|
+
@klarna.invoice_address(INVALID_ORDER_NO)
|
342
|
+
end
|
343
|
+
end
|
344
|
+
|
345
|
+
it 'should successfully return the address for an existing invoice' do
|
346
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
347
|
+
|
348
|
+
assert_equal ["Karl", "Lidin", "Junibacksg 42", "23634", "Hollviken", 'SE'], @klarna.invoice_address(invoice_no)
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
# Spec:
|
353
|
+
# http://integration.klarna.com/en/api/other-functions/functions/invoiceamount
|
354
|
+
# http://integration.klarna.com/en/api/other-functions/functions/invoicepartamount (combined)
|
355
|
+
describe '#invoice_amount' do
|
356
|
+
it 'should be defined' do
|
357
|
+
assert_respond_to @klarna, :invoice_amount
|
358
|
+
end
|
359
|
+
|
360
|
+
describe 'full' do
|
361
|
+
it 'should raise error for an non-existing invoice' do
|
362
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
363
|
+
@klarna.invoice_amount(INVALID_ORDER_NO)
|
364
|
+
end
|
365
|
+
end
|
366
|
+
|
367
|
+
it 'should successfully return the invoice amount for an existing invoice' do
|
368
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
369
|
+
|
370
|
+
assert_equal @order_items_total, @klarna.invoice_amount(invoice_no)
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
374
|
+
describe 'partial' do
|
375
|
+
it 'should raise error for an non-existing invoice' do
|
376
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
377
|
+
articles = [@order_items.last]
|
378
|
+
@klarna.invoice_amount(INVALID_ORDER_NO, articles)
|
379
|
+
end
|
380
|
+
end
|
381
|
+
|
382
|
+
it 'should successfully return the invoice amount for an existing invoice' do
|
383
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
384
|
+
articles = [@order_items.last]
|
385
|
+
|
386
|
+
assert_equal 7*(17.00 * 100), @klarna.invoice_amount(invoice_no, articles)
|
387
|
+
end
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
391
|
+
describe '#invoice_paid?' do
|
392
|
+
it 'should be defined' do
|
393
|
+
assert_respond_to @klarna, :invoice_paid?
|
394
|
+
end
|
395
|
+
|
396
|
+
it 'should raise error for an non-existing invoice' do
|
397
|
+
assert_raises ::Klarna::API::Errors::KlarnaServiceError do
|
398
|
+
@klarna.invoice_paid?(INVALID_ORDER_NO)
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
402
|
+
it 'should be unpaid for an existing but un-activated invoice' do
|
403
|
+
invoice_no = @klarna.add_invoice(*@valid_invoice_args_SE)
|
404
|
+
|
405
|
+
assert_equal false, @klarna.invoice_paid?(invoice_no)
|
406
|
+
end
|
407
|
+
end
|
408
|
+
|
409
|
+
end
|