paddle_pay 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/README.md +207 -0
  4. data/lib/paddle_pay.rb +40 -0
  5. data/lib/paddle_pay/configuration.rb +17 -0
  6. data/lib/paddle_pay/connection.rb +69 -0
  7. data/lib/paddle_pay/errors/paddle_pay_error.rb +54 -0
  8. data/lib/paddle_pay/models/alert/webhook.rb +14 -0
  9. data/lib/paddle_pay/models/product/coupon.rb +36 -0
  10. data/lib/paddle_pay/models/product/license.rb +14 -0
  11. data/lib/paddle_pay/models/product/pay_link.rb +14 -0
  12. data/lib/paddle_pay/models/product/payment.rb +15 -0
  13. data/lib/paddle_pay/models/product/product.rb +12 -0
  14. data/lib/paddle_pay/models/subscription/charge.rb +14 -0
  15. data/lib/paddle_pay/models/subscription/modifier.rb +24 -0
  16. data/lib/paddle_pay/models/subscription/payment.rb +25 -0
  17. data/lib/paddle_pay/models/subscription/plan.rb +19 -0
  18. data/lib/paddle_pay/models/subscription/user.rb +31 -0
  19. data/lib/paddle_pay/models/transaction/checkout.rb +13 -0
  20. data/lib/paddle_pay/models/transaction/order.rb +13 -0
  21. data/lib/paddle_pay/models/transaction/product.rb +13 -0
  22. data/lib/paddle_pay/models/transaction/subscription.rb +13 -0
  23. data/lib/paddle_pay/models/transaction/user.rb +13 -0
  24. data/lib/paddle_pay/util.rb +36 -0
  25. data/lib/paddle_pay/version.rb +5 -0
  26. data/test/spec/paddle_pay/configuration_spec.rb +24 -0
  27. data/test/spec/paddle_pay/connection_spec.rb +115 -0
  28. data/test/spec/paddle_pay/models/alert/webhook_spec.rb +41 -0
  29. data/test/spec/paddle_pay/models/product/coupon_spec.rb +98 -0
  30. data/test/spec/paddle_pay/models/product/license_spec.rb +33 -0
  31. data/test/spec/paddle_pay/models/product/pay_link_spec.rb +33 -0
  32. data/test/spec/paddle_pay/models/product/payment_spec.rb +31 -0
  33. data/test/spec/paddle_pay/models/product/product_spec.rb +42 -0
  34. data/test/spec/paddle_pay/models/subscription/charge_spec.rb +31 -0
  35. data/test/spec/paddle_pay/models/subscription/modifier_spec.rb +70 -0
  36. data/test/spec/paddle_pay/models/subscription/payment_spec.rb +68 -0
  37. data/test/spec/paddle_pay/models/subscription/plan_spec.rb +57 -0
  38. data/test/spec/paddle_pay/models/subscription/user_spec.rb +87 -0
  39. data/test/spec/paddle_pay/models/transaction/checkout_spec.rb +41 -0
  40. data/test/spec/paddle_pay/models/transaction/order_spec.rb +41 -0
  41. data/test/spec/paddle_pay/models/transaction/product_spec.rb +41 -0
  42. data/test/spec/paddle_pay/models/transaction/subscription_spec.rb +41 -0
  43. data/test/spec/paddle_pay/models/transaction/user_spec.rb +41 -0
  44. data/test/spec/paddle_pay/util_spec.rb +41 -0
  45. data/test/spec/paddle_pay/version_spec.rb +9 -0
  46. data/test/test_helper.rb +18 -0
  47. data/test/vcr_cassettes/paddle_pay/alert/webhook/test_0001_should_list_all_webhooks.yml +61 -0
  48. data/test/vcr_cassettes/paddle_pay/alert/webhook/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  49. data/test/vcr_cassettes/paddle_pay/alert/webhook/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  50. data/test/vcr_cassettes/paddle_pay/product/coupon/test_0001_should_list_all_coupons.yml +60 -0
  51. data/test/vcr_cassettes/paddle_pay/product/coupon/test_0001_should_raise_an_error_if_the_coupon_deletion_is_invalid.yml +61 -0
  52. data/test/vcr_cassettes/paddle_pay/product/coupon/test_0001_should_raise_an_error_if_the_coupon_is_invalid.yml +61 -0
  53. data/test/vcr_cassettes/paddle_pay/product/coupon/test_0001_should_return_updated_0_if_the_coupon_group_update_is_invalid.yml +62 -0
  54. data/test/vcr_cassettes/paddle_pay/product/coupon/test_0001_should_return_updated_0_if_the_coupon_update_is_invalid.yml +62 -0
  55. data/test/vcr_cassettes/paddle_pay/product/coupon/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  56. data/test/vcr_cassettes/paddle_pay/product/coupon/test_0002_should_return_coupon_codes_if_the_coupon_is_valid.yml +60 -0
  57. data/test/vcr_cassettes/paddle_pay/product/coupon/test_0002_should_return_success_if_the_coupon_deletion_is_valid.yml +62 -0
  58. data/test/vcr_cassettes/paddle_pay/product/coupon/test_0002_should_return_updated_0_if_the_coupon_group_update_is_valid.yml +62 -0
  59. data/test/vcr_cassettes/paddle_pay/product/coupon/test_0002_should_return_updated_0_if_the_coupon_update_is_valid.yml +62 -0
  60. data/test/vcr_cassettes/paddle_pay/product/coupon/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  61. data/test/vcr_cassettes/paddle_pay/product/license/test_0001_should_raise_an_error_if_license_generation_request_is_invalid.yml +61 -0
  62. data/test/vcr_cassettes/paddle_pay/product/license/test_0002_should_return_a_license_code_if_license_generation_request_is_valid.yml +61 -0
  63. data/test/vcr_cassettes/paddle_pay/product/pay_link/test_0001_should_raise_an_error_if_pay_link_generation_request_is_invalid.yml +61 -0
  64. data/test/vcr_cassettes/paddle_pay/product/pay_link/test_0002_should_return_an_url_if_pay_link_generation_request_is_valid.yml +60 -0
  65. data/test/vcr_cassettes/paddle_pay/product/payment/test_0001_should_raise_an_error_if_the_payment_refund_is_invalid.yml +61 -0
  66. data/test/vcr_cassettes/paddle_pay/product/payment/test_0002_should_return_success_if_the_payment_refund_is_valid.yml +60 -0
  67. data/test/vcr_cassettes/paddle_pay/product/test_0001_should_list_all_products.yml +60 -0
  68. data/test/vcr_cassettes/paddle_pay/product/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  69. data/test/vcr_cassettes/paddle_pay/product/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  70. data/test/vcr_cassettes/paddle_pay/subscription/charge/test_0001_should_raise_an_error_if_the_charge_is_invalid.yml +61 -0
  71. data/test/vcr_cassettes/paddle_pay/subscription/charge/test_0002_should_return_invoice_id_if_the_charge_is_valid.yml +61 -0
  72. data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0001_should_list_all_modifiers.yml +62 -0
  73. data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0001_should_raise_an_error_if_the_modifier_deletion_is_invalid.yml +61 -0
  74. data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0001_should_raise_an_error_if_the_modifier_is_invalid.yml +61 -0
  75. data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  76. data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0002_should_return_a_modifier_id_if_the_modifier_is_valid.yml +60 -0
  77. data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0002_should_return_a_product_id_if_the_modifier_deletion_is_valid.yml +60 -0
  78. data/test/vcr_cassettes/paddle_pay/subscription/modifier/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  79. data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0001_should_list_all_payments.yml +60 -0
  80. data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0001_should_raise_an_error_if_the_payment_refund_is_invalid.yml +61 -0
  81. data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0001_should_raise_an_error_if_the_payment_reschedule_is_invalid.yml +313 -0
  82. data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  83. data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0002_should_return_success_if_the_payment_refund_is_valid.yml +60 -0
  84. data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0002_should_return_success_if_the_payment_reschedule_is_valid.yml +62 -0
  85. data/test/vcr_cassettes/paddle_pay/subscription/payment/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  86. data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0001_should_list_all_plans.yml +60 -0
  87. data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0001_should_raise_an_error_if_the_plan_is_invalid.yml +61 -0
  88. data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0002_should_be_successful_if_the_plan_is_valid.yml +62 -0
  89. data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  90. data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0002_should_return_a_product_id_if_the_plan_is_valid.yml +62 -0
  91. data/test/vcr_cassettes/paddle_pay/subscription/plan/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  92. data/test/vcr_cassettes/paddle_pay/subscription/user/test_0001_should_list_all_users.yml +61 -0
  93. data/test/vcr_cassettes/paddle_pay/subscription/user/test_0001_should_raise_an_error_if_the_cancelation_is_invalid.yml +61 -0
  94. data/test/vcr_cassettes/paddle_pay/subscription/user/test_0001_should_raise_an_error_if_the_subscription_update_is_invalid.yml +61 -0
  95. data/test/vcr_cassettes/paddle_pay/subscription/user/test_0001_should_raise_an_error_if_the_subscription_update_preview_is_invalid.yml +61 -0
  96. data/test/vcr_cassettes/paddle_pay/subscription/user/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  97. data/test/vcr_cassettes/paddle_pay/subscription/user/test_0002_should_return_a_subscription_id_if_the_subscription_update_is_valid.yml +60 -0
  98. data/test/vcr_cassettes/paddle_pay/subscription/user/test_0002_should_return_a_subscription_id_if_the_subscription_update_preview_is_valid.yml +60 -0
  99. data/test/vcr_cassettes/paddle_pay/subscription/user/test_0002_should_return_success_if_the_cancelation_is_valid.yml +62 -0
  100. data/test/vcr_cassettes/paddle_pay/subscription/user/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  101. data/test/vcr_cassettes/paddle_pay/transaction/checkout/test_0001_should_list_all_checkouts.yml +61 -0
  102. data/test/vcr_cassettes/paddle_pay/transaction/checkout/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  103. data/test/vcr_cassettes/paddle_pay/transaction/checkout/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  104. data/test/vcr_cassettes/paddle_pay/transaction/order/test_0001_should_list_all_orders.yml +61 -0
  105. data/test/vcr_cassettes/paddle_pay/transaction/order/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  106. data/test/vcr_cassettes/paddle_pay/transaction/order/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  107. data/test/vcr_cassettes/paddle_pay/transaction/product/test_0001_should_list_all_products.yml +62 -0
  108. data/test/vcr_cassettes/paddle_pay/transaction/product/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  109. data/test/vcr_cassettes/paddle_pay/transaction/product/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  110. data/test/vcr_cassettes/paddle_pay/transaction/subscription/test_0001_should_list_all_subscriptions.yml +61 -0
  111. data/test/vcr_cassettes/paddle_pay/transaction/subscription/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  112. data/test/vcr_cassettes/paddle_pay/transaction/subscription/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  113. data/test/vcr_cassettes/paddle_pay/transaction/user/test_0001_should_list_all_users.yml +62 -0
  114. data/test/vcr_cassettes/paddle_pay/transaction/user/test_0002_should_raise_an_error_if_no_vendor_id_is_present.yml +61 -0
  115. data/test/vcr_cassettes/paddle_pay/transaction/user/test_0003_should_raise_an_error_if_no_vendor_auth_code_is_present.yml +61 -0
  116. metadata +358 -0
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ describe PaddlePay::Product::Coupon do
6
+ before do
7
+ PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
+ PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
9
+ @coupon = PaddlePay::Product::Coupon
10
+ path = PaddlePay::Util.convert_class_to_path(@coupon.name) + "/#{name}"
11
+ VCR.insert_cassette(path)
12
+ end
13
+
14
+ after do
15
+ VCR.eject_cassette
16
+ end
17
+
18
+ describe 'when coupons are requested' do
19
+ it 'should list all coupons' do
20
+ list = @coupon.list(594469)
21
+ assert_instance_of Array, list
22
+ refute_nil list.first[:coupon] if list.count > 0
23
+ end
24
+
25
+ it 'should raise an error if no vendor id is present' do
26
+ PaddlePay.config.vendor_id = nil
27
+ exception = assert_raises PaddlePay::PaddlePayError do
28
+ @coupon.list(594469)
29
+ end
30
+ assert_equal exception.code, 107 # You don't have permission to access this resource
31
+ end
32
+
33
+ it 'should raise an error if no vendor auth code is present' do
34
+ PaddlePay.config.vendor_auth_code = nil
35
+ exception = assert_raises PaddlePay::PaddlePayError do
36
+ @coupon.list(594469)
37
+ end
38
+ assert_equal exception.code, 107 # You don't have permission to access this resource
39
+ end
40
+ end
41
+
42
+ describe 'when the creation of a coupon is requested' do
43
+ it 'should raise an error if the coupon is invalid' do
44
+ coupon = { coupon_type: 'checkout' }
45
+ assert_raises PaddlePay::PaddlePayError do
46
+ @coupon.create(coupon)
47
+ end
48
+ end
49
+
50
+ it 'should return coupon codes if the coupon is valid' do
51
+ coupon = { coupon_type: 'checkout', discount_type: 'percentage', discount_amount: '100', allowed_uses: 10 }
52
+ response = @coupon.create(coupon)
53
+ assert_instance_of Hash, response
54
+ refute_nil response[:coupon_codes]
55
+ end
56
+ end
57
+
58
+ describe 'when the update of a coupon is requested' do
59
+ it 'should return updated == 0 if the coupon update is invalid' do
60
+ response = @coupon.update_code('NOVALIDCODE', { allowed_uses: 20 })
61
+ assert_instance_of Hash, response
62
+ assert_equal response[:updated], 0
63
+ end
64
+
65
+ it 'should return updated > 0 if the coupon update is valid' do
66
+ response = @coupon.update_code('7D0E7A68', { allowed_uses: 20 })
67
+ assert_instance_of Hash, response
68
+ assert_equal response[:updated], 1
69
+ end
70
+ end
71
+
72
+ describe 'when the update of a coupon group is requested' do
73
+ it 'should return updated == 0 if the coupon group update is invalid' do
74
+ response = @coupon.update_group('NOVALIDGROUP', { allowed_uses: 20 })
75
+ assert_instance_of Hash, response
76
+ assert_equal response[:updated], 0
77
+ end
78
+
79
+ it 'should return updated > 0 if the coupon group update is valid' do
80
+ response = @coupon.update_group('Testgroup', { allowed_uses: 30 })
81
+ assert_instance_of Hash, response
82
+ assert_equal response[:updated], 1
83
+ end
84
+ end
85
+
86
+ describe 'when the deletion of a coupon is requested' do
87
+ it 'should raise an error if the coupon deletion is invalid' do
88
+ assert_raises PaddlePay::PaddlePayError do
89
+ @coupon.delete('NOVALIDCOUPON', 594470)
90
+ end
91
+ end
92
+
93
+ it 'should return success if the coupon deletion is valid' do
94
+ response = @coupon.delete('9F9F78DA', 594470)
95
+ assert_nil response # no response when request is successful
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ describe PaddlePay::Product::License do
6
+ before do
7
+ PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
+ PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
9
+ @license = PaddlePay::Product::License
10
+ path = PaddlePay::Util.convert_class_to_path(@license.name) + "/#{name}"
11
+ VCR.insert_cassette(path)
12
+ end
13
+
14
+ after do
15
+ VCR.eject_cassette
16
+ end
17
+
18
+ describe 'when a license generation is requested' do
19
+ it 'should raise an error if license generation request is invalid' do
20
+ license = { product_id: '594512', allowed_uses: 10 }
21
+ assert_raises PaddlePay::PaddlePayError do
22
+ @license.generate(license)
23
+ end
24
+ end
25
+
26
+ it 'should return a license code if license generation request is valid' do
27
+ license = { product_id: '594512', allowed_uses: 10 }
28
+ response = @license.generate(license)
29
+ assert_instance_of Hash, response
30
+ refute_nil response[:license_code]
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ describe PaddlePay::Product::PayLink do
6
+ before do
7
+ PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
+ PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
9
+ @pay_link = PaddlePay::Product::PayLink
10
+ path = PaddlePay::Util.convert_class_to_path(@pay_link.name) + "/#{name}"
11
+ VCR.insert_cassette(path)
12
+ end
13
+
14
+ after do
15
+ VCR.eject_cassette
16
+ end
17
+
18
+ describe 'when a pay link generation is requested' do
19
+ it 'should raise an error if pay link generation request is invalid' do
20
+ pay_link = { product_id: 'NOTVALID' }
21
+ assert_raises PaddlePay::PaddlePayError do
22
+ @pay_link.generate(pay_link)
23
+ end
24
+ end
25
+
26
+ it 'should return an url if pay link generation request is valid' do
27
+ pay_link = { product_id: '594512' }
28
+ response = @pay_link.generate(pay_link)
29
+ assert_instance_of Hash, response
30
+ refute_nil response[:url]
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ describe PaddlePay::Product::Payment do
6
+ before do
7
+ PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
+ PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
9
+ @payment = PaddlePay::Product::Payment
10
+ path = PaddlePay::Util.convert_class_to_path(@payment.name) + "/#{name}"
11
+ VCR.insert_cassette(path)
12
+ end
13
+
14
+ after do
15
+ VCR.eject_cassette
16
+ end
17
+
18
+ describe 'when the refund of a payment is requested' do
19
+ it 'should raise an error if the payment refund is invalid' do
20
+ assert_raises PaddlePay::PaddlePayError do
21
+ @payment.refund(1234567)
22
+ end
23
+ end
24
+
25
+ it 'should return success if the payment refund is valid' do
26
+ response = @payment.refund(10710436)
27
+ assert_instance_of Hash, response
28
+ refute_nil response[:refund_request_id]
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ describe PaddlePay::Product do
6
+ before do
7
+ PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
+ PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
9
+ @product = PaddlePay::Product
10
+ path = PaddlePay::Util.convert_class_to_path(@product.name) + "/#{name}"
11
+ VCR.insert_cassette(path)
12
+ end
13
+
14
+ after do
15
+ VCR.eject_cassette
16
+ end
17
+
18
+ describe 'when products are requested' do
19
+ it 'should list all products' do
20
+ list = @product.list
21
+ assert_instance_of Hash, list
22
+ assert_instance_of Array, list[:products]
23
+ refute_nil list[:products].first[:id] if list[:products].count > 0
24
+ end
25
+
26
+ it 'should raise an error if no vendor id is present' do
27
+ PaddlePay.config.vendor_id = nil
28
+ exception = assert_raises PaddlePay::PaddlePayError do
29
+ @product.list
30
+ end
31
+ assert_equal exception.code, 107 # You don't have permission to access this resource
32
+ end
33
+
34
+ it 'should raise an error if no vendor auth code is present' do
35
+ PaddlePay.config.vendor_auth_code = nil
36
+ exception = assert_raises PaddlePay::PaddlePayError do
37
+ @product.list
38
+ end
39
+ assert_equal exception.code, 107 # You don't have permission to access this resource
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ describe PaddlePay::Subscription::Charge do
6
+ before do
7
+ PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
+ PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
9
+ @charge = PaddlePay::Subscription::Charge
10
+ path = PaddlePay::Util.convert_class_to_path(@charge.name) + "/#{name}"
11
+ VCR.insert_cassette(path)
12
+ end
13
+
14
+ after do
15
+ VCR.eject_cassette
16
+ end
17
+
18
+ describe 'when a charge is created' do
19
+ it 'should raise an error if the charge is invalid' do
20
+ assert_raises PaddlePay::PaddlePayError do
21
+ @charge.create(12345678, '0.00', 'Test')
22
+ end
23
+ end
24
+
25
+ it 'should return invoice id if the charge is valid' do
26
+ response = @charge.create(3484448, '0.00', 'Test')
27
+ assert_instance_of Hash, response
28
+ refute_nil response[:invoice_id]
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ describe PaddlePay::Subscription::Modifier do
6
+ before do
7
+ PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
+ PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
9
+ @modifier = PaddlePay::Subscription::Modifier
10
+ path = PaddlePay::Util.convert_class_to_path(@modifier.name) + "/#{name}"
11
+ VCR.insert_cassette(path)
12
+ end
13
+
14
+ after do
15
+ VCR.eject_cassette
16
+ end
17
+
18
+ describe 'when modifiers are requested' do
19
+ it 'should list all modifiers' do
20
+ list = @modifier.list
21
+ assert_instance_of Array, list
22
+ refute_nil list.first[:modifier_id] if list.count > 0
23
+ end
24
+
25
+ it 'should raise an error if no vendor id is present' do
26
+ PaddlePay.config.vendor_id = nil
27
+ exception = assert_raises PaddlePay::PaddlePayError do
28
+ @modifier.list
29
+ end
30
+ assert_equal exception.code, 107 # You don't have permission to access this resource
31
+ end
32
+
33
+ it 'should raise an error if no vendor auth code is present' do
34
+ PaddlePay.config.vendor_auth_code = nil
35
+ exception = assert_raises PaddlePay::PaddlePayError do
36
+ @modifier.list
37
+ end
38
+ assert_equal exception.code, 107 # You don't have permission to access this resource
39
+ end
40
+ end
41
+
42
+ describe 'when the creation of a modifier is requested' do
43
+ it 'should raise an error if the modifier is invalid' do
44
+ modifier = { subscription_id: 1234567, modifier_amount: '1.00', modifier_description: 'Test' }
45
+ assert_raises PaddlePay::PaddlePayError do
46
+ @modifier.create(modifier)
47
+ end
48
+ end
49
+
50
+ it 'should return a modifier id if the modifier is valid' do
51
+ modifier = { subscription_id: 3484448, modifier_amount: '1.00', modifier_description: 'Test' }
52
+ response = @modifier.create(modifier)
53
+ assert_instance_of Hash, response
54
+ refute_nil response[:modifier_id]
55
+ end
56
+ end
57
+
58
+ describe 'when the deletion of a modifier is requested' do
59
+ it 'should raise an error if the modifier deletion is invalid' do
60
+ assert_raises PaddlePay::PaddlePayError do
61
+ @modifier.delete(1234567)
62
+ end
63
+ end
64
+
65
+ it 'should return a product id if the modifier deletion is valid' do
66
+ response = @modifier.delete(143433)
67
+ assert_nil response # no response when request is successful
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ describe PaddlePay::Subscription::Payment do
6
+ before do
7
+ PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
+ PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
9
+ @payment = PaddlePay::Subscription::Payment
10
+ path = PaddlePay::Util.convert_class_to_path(@payment.name) + "/#{name}"
11
+ VCR.insert_cassette(path)
12
+ end
13
+
14
+ after do
15
+ VCR.eject_cassette
16
+ end
17
+
18
+ describe 'when payments are requested' do
19
+ it 'should list all payments' do
20
+ list = @payment.list
21
+ assert_instance_of Array, list
22
+ refute_nil list.first[:id] if list.count > 0
23
+ end
24
+
25
+ it 'should raise an error if no vendor id is present' do
26
+ PaddlePay.config.vendor_id = nil
27
+ exception = assert_raises PaddlePay::PaddlePayError do
28
+ @payment.list
29
+ end
30
+ assert_equal exception.code, 107 # You don't have permission to access this resource
31
+ end
32
+
33
+ it 'should raise an error if no vendor auth code is present' do
34
+ PaddlePay.config.vendor_auth_code = nil
35
+ exception = assert_raises PaddlePay::PaddlePayError do
36
+ @payment.list
37
+ end
38
+ assert_equal exception.code, 107 # You don't have permission to access this resource
39
+ end
40
+ end
41
+
42
+ describe 'when the reschedule of a payment is requested' do
43
+ it 'should raise an error if the payment reschedule is invalid' do
44
+ assert_raises PaddlePay::PaddlePayError do
45
+ @payment.reschedule(10710436, 'wrong date')
46
+ end
47
+ end
48
+
49
+ it 'should return success if the payment reschedule is valid' do
50
+ response = @payment.reschedule(10710436, '2020-12-31')
51
+ assert_nil response # no response when request is successful
52
+ end
53
+ end
54
+
55
+ describe 'when the refund of a payment is requested' do
56
+ it 'should raise an error if the payment refund is invalid' do
57
+ assert_raises PaddlePay::PaddlePayError do
58
+ @payment.refund(1234567)
59
+ end
60
+ end
61
+
62
+ it 'should return success if the payment refund is valid' do
63
+ response = @payment.refund(10710436)
64
+ assert_instance_of Hash, response
65
+ refute_nil response[:refund_request_id]
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ describe PaddlePay::Subscription::Plan do
6
+ before do
7
+ PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
+ PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
9
+ @plan = PaddlePay::Subscription::Plan
10
+ path = PaddlePay::Util.convert_class_to_path(@plan.name) + "/#{name}"
11
+ VCR.insert_cassette(path)
12
+ end
13
+
14
+ after do
15
+ VCR.eject_cassette
16
+ end
17
+
18
+ describe 'when plans are requested' do
19
+ it 'should list all plans' do
20
+ list = @plan.list
21
+ assert_instance_of Array, list
22
+ refute_nil list.first[:id] if list.count > 0
23
+ end
24
+
25
+ it 'should raise an error if no vendor id is present' do
26
+ PaddlePay.config.vendor_id = nil
27
+ exception = assert_raises PaddlePay::PaddlePayError do
28
+ @plan.list
29
+ end
30
+ assert_equal exception.code, 107 # You don't have permission to access this resource
31
+ end
32
+
33
+ it 'should raise an error if no vendor auth code is present' do
34
+ PaddlePay.config.vendor_auth_code = nil
35
+ exception = assert_raises PaddlePay::PaddlePayError do
36
+ @plan.list
37
+ end
38
+ assert_equal exception.code, 107 # You don't have permission to access this resource
39
+ end
40
+ end
41
+
42
+ describe 'when the creation of a plan is requested' do
43
+ it 'should raise an error if the plan is invalid' do
44
+ plan = { plan_name: 'Test', plan_trial_days: 30, plan_length: 1, plan_type: 'month' }
45
+ assert_raises PaddlePay::PaddlePayError do
46
+ @plan.create(plan)
47
+ end
48
+ end
49
+
50
+ it 'should return a product id if the plan is valid' do
51
+ plan = { plan_name: 'Test', plan_trial_days: 30, plan_length: 1, plan_type: 'month', main_currency_code: 'USD', recurring_price_usd: '5.00' }
52
+ response = @plan.create(plan)
53
+ assert_instance_of Hash, response
54
+ refute_nil response[:product_id]
55
+ end
56
+ end
57
+ end