paddle_pay 0.0.1 → 0.1.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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -2
  3. data/lib/paddle_pay.rb +23 -23
  4. data/lib/paddle_pay/configuration.rb +19 -6
  5. data/lib/paddle_pay/connection.rb +11 -11
  6. data/lib/paddle_pay/errors/paddle_pay_error.rb +4 -1
  7. data/lib/paddle_pay/models/alert/webhook.rb +2 -2
  8. data/lib/paddle_pay/models/product/coupon.rb +12 -12
  9. data/lib/paddle_pay/models/product/license.rb +2 -2
  10. data/lib/paddle_pay/models/product/pay_link.rb +2 -2
  11. data/lib/paddle_pay/models/product/payment.rb +4 -4
  12. data/lib/paddle_pay/models/product/product.rb +2 -2
  13. data/lib/paddle_pay/models/subscription/charge.rb +1 -1
  14. data/lib/paddle_pay/models/subscription/modifier.rb +6 -6
  15. data/lib/paddle_pay/models/subscription/payment.rb +7 -7
  16. data/lib/paddle_pay/models/subscription/plan.rb +4 -4
  17. data/lib/paddle_pay/models/subscription/user.rb +10 -10
  18. data/lib/paddle_pay/util.rb +6 -6
  19. data/lib/paddle_pay/version.rb +1 -1
  20. data/test/spec/paddle_pay/configuration_spec.rb +35 -7
  21. data/test/spec/paddle_pay/connection_spec.rb +38 -38
  22. data/test/spec/paddle_pay/models/alert/webhook_spec.rb +9 -13
  23. data/test/spec/paddle_pay/models/product/coupon_spec.rb +29 -33
  24. data/test/spec/paddle_pay/models/product/license_spec.rb +8 -8
  25. data/test/spec/paddle_pay/models/product/pay_link_spec.rb +8 -8
  26. data/test/spec/paddle_pay/models/product/payment_spec.rb +7 -7
  27. data/test/spec/paddle_pay/models/product/product_spec.rb +9 -13
  28. data/test/spec/paddle_pay/models/subscription/charge_spec.rb +8 -8
  29. data/test/spec/paddle_pay/models/subscription/modifier_spec.rb +17 -21
  30. data/test/spec/paddle_pay/models/subscription/payment_spec.rb +17 -21
  31. data/test/spec/paddle_pay/models/subscription/plan_spec.rb +14 -18
  32. data/test/spec/paddle_pay/models/subscription/user_spec.rb +20 -24
  33. data/test/spec/paddle_pay/models/transaction/checkout_spec.rb +10 -14
  34. data/test/spec/paddle_pay/models/transaction/order_spec.rb +10 -14
  35. data/test/spec/paddle_pay/models/transaction/product_spec.rb +9 -13
  36. data/test/spec/paddle_pay/models/transaction/subscription_spec.rb +9 -13
  37. data/test/spec/paddle_pay/models/transaction/user_spec.rb +9 -13
  38. data/test/spec/paddle_pay/util_spec.rb +19 -19
  39. data/test/spec/paddle_pay/version_spec.rb +2 -2
  40. data/test/test_helper.rb +10 -10
  41. metadata +35 -7
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PaddlePay
4
- VERSION = '0.0.1'
4
+ VERSION = "0.1.0"
5
5
  end
@@ -1,24 +1,52 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'test_helper'
3
+ require "test_helper"
4
4
 
5
5
  describe PaddlePay::Configuration do
6
6
  before do
7
- PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
- PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
7
+ PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
8
+ PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
9
9
  end
10
10
 
11
- describe 'when loading configuration' do
12
- it 'should have a base url' do
11
+ describe "when loading default configuration" do
12
+ it "should have a base url" do
13
13
  assert !PaddlePay.config.vendors_url.nil?
14
14
  end
15
15
 
16
- it 'should have a vendor id' do
16
+ it "should have a vendor id" do
17
17
  assert !PaddlePay.config.vendor_id.nil?
18
18
  end
19
19
 
20
- it 'should have a vendor auth code' do
20
+ it "should have a vendor auth code" do
21
21
  assert !PaddlePay.config.vendor_auth_code.nil?
22
22
  end
23
+
24
+ it "should use the production url if no environment is set" do
25
+ assert_equal PaddlePay.config.vendors_url, "https://vendors.paddle.com/api"
26
+ end
27
+ end
28
+
29
+ describe "when loading production configuration" do
30
+ before do
31
+ PaddlePay.config.environment = :production
32
+ end
33
+
34
+ it "should use the production url" do
35
+ assert_equal PaddlePay.config.vendors_url, "https://vendors.paddle.com/api"
36
+ end
37
+ end
38
+
39
+ describe "when loading development configuration" do
40
+ before do
41
+ PaddlePay.config.environment = :development
42
+ end
43
+
44
+ after do
45
+ PaddlePay.config.environment = :production
46
+ end
47
+
48
+ it "should use the sandbox url" do
49
+ assert_equal PaddlePay.config.vendors_url, "https://sandbox-vendors.paddle.com/api"
50
+ end
23
51
  end
24
52
  end
@@ -1,114 +1,114 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'test_helper'
3
+ require "test_helper"
4
4
 
5
5
  describe PaddlePay::Connection do
6
6
  before do
7
7
  @connection = PaddlePay::Connection
8
8
  end
9
9
 
10
- describe 'when a request is made' do
11
- it 'should return a json parsed response if request is successful' do
10
+ describe "when a request is made" do
11
+ it "should return a json parsed response if request is successful" do
12
12
  stub_request(:post, PaddlePay.config.vendors_url)
13
13
  .to_return(body: '{"success":true,"response":[{"data": "abcd"}]}', status: 200)
14
- response = @connection.request('')
14
+ response = @connection.request("")
15
15
  assert_instance_of Array, response
16
- assert_equal response.first[:data], 'abcd'
16
+ assert_equal response.first[:data], "abcd"
17
17
  end
18
18
 
19
- it 'should raise a paddle pay error if request is not successful' do
19
+ it "should raise a paddle pay error if request is not successful" do
20
20
  stub_request(:post, PaddlePay.config.vendors_url)
21
21
  .to_return(body: '{"success":false,"error":{"code":100,"message":"Error"}}', status: 200)
22
22
  assert_raises PaddlePay::PaddlePayError do
23
- @connection.request('')
23
+ @connection.request("")
24
24
  end
25
25
  end
26
26
 
27
- it 'should raise a parse error if response is not in json format' do
27
+ it "should raise a parse error if response is not in json format" do
28
28
  stub_request(:post, PaddlePay.config.vendors_url)
29
- .to_return(body: 'abcd', status: 200)
29
+ .to_return(body: "abcd", status: 200)
30
30
  assert_raises PaddlePay::ParseError do
31
- @connection.request('')
31
+ @connection.request("")
32
32
  end
33
33
  end
34
34
 
35
- it 'should raise a bad request error if status 400 is returned' do
35
+ it "should raise a bad request error if status 400 is returned" do
36
36
  stub_request(:post, PaddlePay.config.vendors_url)
37
- .to_return(status: [400, 'Bad Request'])
37
+ .to_return(status: [400, "Bad Request"])
38
38
  assert_raises PaddlePay::BadRequestError do
39
- @connection.request('')
39
+ @connection.request("")
40
40
  end
41
41
  end
42
42
 
43
- it 'should raise an unauthorized error if status 401 is returned' do
43
+ it "should raise an unauthorized error if status 401 is returned" do
44
44
  stub_request(:post, PaddlePay.config.vendors_url)
45
- .to_return(status: [401, 'Unauthorized'])
45
+ .to_return(status: [401, "Unauthorized"])
46
46
  assert_raises PaddlePay::UnauthorizedError do
47
- @connection.request('')
47
+ @connection.request("")
48
48
  end
49
49
  end
50
50
 
51
- it 'should raise a forbidden error if status 403 is returned' do
51
+ it "should raise a forbidden error if status 403 is returned" do
52
52
  stub_request(:post, PaddlePay.config.vendors_url)
53
- .to_return(status: [403, 'Forbidden'])
53
+ .to_return(status: [403, "Forbidden"])
54
54
  assert_raises PaddlePay::ForbiddenError do
55
- @connection.request('')
55
+ @connection.request("")
56
56
  end
57
57
  end
58
58
 
59
- it 'should raise a resource not found error if status 404 is returned' do
59
+ it "should raise a resource not found error if status 404 is returned" do
60
60
  stub_request(:post, PaddlePay.config.vendors_url)
61
- .to_return(status: [404, 'Not Found'])
61
+ .to_return(status: [404, "Not Found"])
62
62
  assert_raises PaddlePay::ResourceNotFoundError do
63
- @connection.request('')
63
+ @connection.request("")
64
64
  end
65
65
  end
66
66
 
67
- it 'should raise a proxy authentication error if status 407 is returned' do
67
+ it "should raise a proxy authentication error if status 407 is returned" do
68
68
  stub_request(:post, PaddlePay.config.vendors_url)
69
- .to_return(status: [407, 'Proxy Authentication Required'])
69
+ .to_return(status: [407, "Proxy Authentication Required"])
70
70
  assert_raises PaddlePay::ProxyAuthError do
71
- @connection.request('')
71
+ @connection.request("")
72
72
  end
73
73
  end
74
74
 
75
- it 'should raise a conflict error if status 409 is returned' do
75
+ it "should raise a conflict error if status 409 is returned" do
76
76
  stub_request(:post, PaddlePay.config.vendors_url)
77
- .to_return(status: [409, 'Conflict'])
77
+ .to_return(status: [409, "Conflict"])
78
78
  assert_raises PaddlePay::ConflictError do
79
- @connection.request('')
79
+ @connection.request("")
80
80
  end
81
81
  end
82
82
 
83
- it 'should raise an unprocessable entity error if status 422 is returned' do
83
+ it "should raise an unprocessable entity error if status 422 is returned" do
84
84
  stub_request(:post, PaddlePay.config.vendors_url)
85
- .to_return(status: [422, 'Unprocessable Entity'])
85
+ .to_return(status: [422, "Unprocessable Entity"])
86
86
  assert_raises PaddlePay::UnprocessableEntityError do
87
- @connection.request('')
87
+ @connection.request("")
88
88
  end
89
89
  end
90
90
 
91
- it 'should raise a connection error if connection failed' do
91
+ it "should raise a connection error if connection failed" do
92
92
  stub_request(:post, PaddlePay.config.vendors_url)
93
93
  .to_timeout
94
94
  assert_raises PaddlePay::ConnectionError do
95
- @connection.request('')
95
+ @connection.request("")
96
96
  end
97
97
  end
98
98
 
99
- it 'should raise an timeout error if request timed out' do
99
+ it "should raise an timeout error if request timed out" do
100
100
  stub_request(:post, PaddlePay.config.vendors_url)
101
101
  .to_raise(Net::ReadTimeout)
102
102
  assert_raises PaddlePay::TimeoutError do
103
- @connection.request('')
103
+ @connection.request("")
104
104
  end
105
105
  end
106
106
 
107
- it 'should raise a server error if status 500 is returned' do
107
+ it "should raise a server error if status 500 is returned" do
108
108
  stub_request(:post, PaddlePay.config.vendors_url)
109
- .to_return(status: [500, 'Internal Server Error'])
109
+ .to_return(status: [500, "Internal Server Error"])
110
110
  assert_raises PaddlePay::ServerError do
111
- @connection.request('')
111
+ @connection.request("")
112
112
  end
113
113
  end
114
114
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'test_helper'
3
+ require "test_helper"
4
4
 
5
5
  describe PaddlePay::Alert::Webhook do
6
6
  before do
7
- PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
- PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
7
+ PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
8
+ PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
9
9
  @webhook = PaddlePay::Alert::Webhook
10
10
  path = PaddlePay::Util.convert_class_to_path(@webhook.name) + "/#{name}"
11
11
  VCR.insert_cassette(path)
@@ -15,26 +15,22 @@ describe PaddlePay::Alert::Webhook do
15
15
  VCR.eject_cassette
16
16
  end
17
17
 
18
- describe 'when webhooks are requested' do
19
- it 'should list all webhooks' do
18
+ describe "when webhooks are requested" do
19
+ it "should list all webhooks" do
20
20
  response = @webhook.history
21
21
  assert_instance_of Hash, response
22
22
  refute_nil response[:data]
23
23
  end
24
24
 
25
- it 'should raise an error if no vendor id is present' do
25
+ it "should raise an error if no vendor id is present" do
26
26
  PaddlePay.config.vendor_id = nil
27
- exception = assert_raises PaddlePay::PaddlePayError do
28
- @webhook.history
29
- end
27
+ exception = assert_raises(PaddlePay::PaddlePayError) { @webhook.history }
30
28
  assert_equal exception.code, 107 # You don't have permission to access this resource
31
29
  end
32
30
 
33
- it 'should raise an error if no vendor auth code is present' do
31
+ it "should raise an error if no vendor auth code is present" do
34
32
  PaddlePay.config.vendor_auth_code = nil
35
- exception = assert_raises PaddlePay::PaddlePayError do
36
- @webhook.history
37
- end
33
+ exception = assert_raises(PaddlePay::PaddlePayError) { @webhook.history }
38
34
  assert_equal exception.code, 107 # You don't have permission to access this resource
39
35
  end
40
36
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'test_helper'
3
+ require "test_helper"
4
4
 
5
5
  describe PaddlePay::Product::Coupon do
6
6
  before do
7
- PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
- PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
7
+ PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
8
+ PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
9
9
  @coupon = PaddlePay::Product::Coupon
10
10
  path = PaddlePay::Util.convert_class_to_path(@coupon.name) + "/#{name}"
11
11
  VCR.insert_cassette(path)
@@ -15,83 +15,79 @@ describe PaddlePay::Product::Coupon do
15
15
  VCR.eject_cassette
16
16
  end
17
17
 
18
- describe 'when coupons are requested' do
19
- it 'should list all coupons' do
18
+ describe "when coupons are requested" do
19
+ it "should list all coupons" do
20
20
  list = @coupon.list(594469)
21
21
  assert_instance_of Array, list
22
22
  refute_nil list.first[:coupon] if list.count > 0
23
23
  end
24
24
 
25
- it 'should raise an error if no vendor id is present' do
25
+ it "should raise an error if no vendor id is present" do
26
26
  PaddlePay.config.vendor_id = nil
27
- exception = assert_raises PaddlePay::PaddlePayError do
28
- @coupon.list(594469)
29
- end
27
+ exception = assert_raises(PaddlePay::PaddlePayError) { @coupon.list(594469) }
30
28
  assert_equal exception.code, 107 # You don't have permission to access this resource
31
29
  end
32
30
 
33
- it 'should raise an error if no vendor auth code is present' do
31
+ it "should raise an error if no vendor auth code is present" do
34
32
  PaddlePay.config.vendor_auth_code = nil
35
- exception = assert_raises PaddlePay::PaddlePayError do
36
- @coupon.list(594469)
37
- end
33
+ exception = assert_raises(PaddlePay::PaddlePayError) { @coupon.list(594469) }
38
34
  assert_equal exception.code, 107 # You don't have permission to access this resource
39
35
  end
40
36
  end
41
37
 
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' }
38
+ describe "when the creation of a coupon is requested" do
39
+ it "should raise an error if the coupon is invalid" do
40
+ coupon = {coupon_type: "checkout"}
45
41
  assert_raises PaddlePay::PaddlePayError do
46
42
  @coupon.create(coupon)
47
43
  end
48
44
  end
49
45
 
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 }
46
+ it "should return coupon codes if the coupon is valid" do
47
+ coupon = {coupon_type: "checkout", discount_type: "percentage", discount_amount: "100", allowed_uses: 10}
52
48
  response = @coupon.create(coupon)
53
49
  assert_instance_of Hash, response
54
50
  refute_nil response[:coupon_codes]
55
51
  end
56
52
  end
57
53
 
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 })
54
+ describe "when the update of a coupon is requested" do
55
+ it "should return updated == 0 if the coupon update is invalid" do
56
+ response = @coupon.update_code("NOVALIDCODE", {allowed_uses: 20})
61
57
  assert_instance_of Hash, response
62
58
  assert_equal response[:updated], 0
63
59
  end
64
60
 
65
- it 'should return updated > 0 if the coupon update is valid' do
66
- response = @coupon.update_code('7D0E7A68', { allowed_uses: 20 })
61
+ it "should return updated > 0 if the coupon update is valid" do
62
+ response = @coupon.update_code("7D0E7A68", {allowed_uses: 20})
67
63
  assert_instance_of Hash, response
68
64
  assert_equal response[:updated], 1
69
65
  end
70
66
  end
71
67
 
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 })
68
+ describe "when the update of a coupon group is requested" do
69
+ it "should return updated == 0 if the coupon group update is invalid" do
70
+ response = @coupon.update_group("NOVALIDGROUP", {allowed_uses: 20})
75
71
  assert_instance_of Hash, response
76
72
  assert_equal response[:updated], 0
77
73
  end
78
74
 
79
- it 'should return updated > 0 if the coupon group update is valid' do
80
- response = @coupon.update_group('Testgroup', { allowed_uses: 30 })
75
+ it "should return updated > 0 if the coupon group update is valid" do
76
+ response = @coupon.update_group("Testgroup", {allowed_uses: 30})
81
77
  assert_instance_of Hash, response
82
78
  assert_equal response[:updated], 1
83
79
  end
84
80
  end
85
81
 
86
- describe 'when the deletion of a coupon is requested' do
87
- it 'should raise an error if the coupon deletion is invalid' do
82
+ describe "when the deletion of a coupon is requested" do
83
+ it "should raise an error if the coupon deletion is invalid" do
88
84
  assert_raises PaddlePay::PaddlePayError do
89
- @coupon.delete('NOVALIDCOUPON', 594470)
85
+ @coupon.delete("NOVALIDCOUPON", 594470)
90
86
  end
91
87
  end
92
88
 
93
- it 'should return success if the coupon deletion is valid' do
94
- response = @coupon.delete('9F9F78DA', 594470)
89
+ it "should return success if the coupon deletion is valid" do
90
+ response = @coupon.delete("9F9F78DA", 594470)
95
91
  assert_nil response # no response when request is successful
96
92
  end
97
93
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'test_helper'
3
+ require "test_helper"
4
4
 
5
5
  describe PaddlePay::Product::License do
6
6
  before do
7
- PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
- PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
7
+ PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
8
+ PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
9
9
  @license = PaddlePay::Product::License
10
10
  path = PaddlePay::Util.convert_class_to_path(@license.name) + "/#{name}"
11
11
  VCR.insert_cassette(path)
@@ -15,16 +15,16 @@ describe PaddlePay::Product::License do
15
15
  VCR.eject_cassette
16
16
  end
17
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 }
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
21
  assert_raises PaddlePay::PaddlePayError do
22
22
  @license.generate(license)
23
23
  end
24
24
  end
25
25
 
26
- it 'should return a license code if license generation request is valid' do
27
- license = { product_id: '594512', allowed_uses: 10 }
26
+ it "should return a license code if license generation request is valid" do
27
+ license = {product_id: "594512", allowed_uses: 10}
28
28
  response = @license.generate(license)
29
29
  assert_instance_of Hash, response
30
30
  refute_nil response[:license_code]
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'test_helper'
3
+ require "test_helper"
4
4
 
5
5
  describe PaddlePay::Product::PayLink do
6
6
  before do
7
- PaddlePay.config.vendor_id = ENV['PADDLE_VENDOR_ID']
8
- PaddlePay.config.vendor_auth_code = ENV['PADDLE_VENDOR_AUTH_CODE']
7
+ PaddlePay.config.vendor_id = ENV["PADDLE_VENDOR_ID"]
8
+ PaddlePay.config.vendor_auth_code = ENV["PADDLE_VENDOR_AUTH_CODE"]
9
9
  @pay_link = PaddlePay::Product::PayLink
10
10
  path = PaddlePay::Util.convert_class_to_path(@pay_link.name) + "/#{name}"
11
11
  VCR.insert_cassette(path)
@@ -15,16 +15,16 @@ describe PaddlePay::Product::PayLink do
15
15
  VCR.eject_cassette
16
16
  end
17
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' }
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
21
  assert_raises PaddlePay::PaddlePayError do
22
22
  @pay_link.generate(pay_link)
23
23
  end
24
24
  end
25
25
 
26
- it 'should return an url if pay link generation request is valid' do
27
- pay_link = { product_id: '594512' }
26
+ it "should return an url if pay link generation request is valid" do
27
+ pay_link = {product_id: "594512"}
28
28
  response = @pay_link.generate(pay_link)
29
29
  assert_instance_of Hash, response
30
30
  refute_nil response[:url]