mock_chargebee 0.0.2 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mock_chargebee/fixtures/plan.json +24 -0
- data/lib/mock_chargebee/fixtures/portal_session.json +20 -0
- data/lib/mock_chargebee/models/base.rb +6 -1
- data/lib/mock_chargebee/models/customer.rb +19 -3
- data/lib/mock_chargebee/models/plan.rb +31 -0
- data/lib/mock_chargebee/models/portal_session.rb +22 -0
- data/lib/mock_chargebee/repositories.rb +3 -1
- data/lib/mock_chargebee/request.rb +5 -4
- data/lib/mock_chargebee/request_handlers/customers.rb +6 -0
- data/lib/mock_chargebee/request_handlers/plans.rb +26 -0
- data/lib/mock_chargebee/request_handlers/portal_sessions.rb +14 -0
- data/lib/mock_chargebee/validations/portal_sessions.rb +11 -0
- data/lib/mock_chargebee/version.rb +1 -1
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1dbb28d7c0aa183440b5d6ea1e2006192dfb74ce0a61e9e98a7c5b31871e64f
|
4
|
+
data.tar.gz: 8556fef396a9aea7a4a4b58c381dc9da62fddf0a238bad174733916a99f7bcc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ab1262fdcf73d83647f07958ec03a676a5fc6890ac6e5d401f706a81fd62bc89bc81e67be869afa48ed9e4aa344d6592f018d916421c5694597f3a4e06bc827
|
7
|
+
data.tar.gz: 6b33a4a4e38f43cd4b6631073844d971c952dd19d6d0a71f5f3191d9b1d64e498485cc20a23bd308dc6c77e9e6f990f176d48bd9e9c58ff9097c0c13777f8a45
|
@@ -0,0 +1,24 @@
|
|
1
|
+
{
|
2
|
+
"addon_applicability": "all",
|
3
|
+
"charge_model": "flat_fee",
|
4
|
+
"currency_code": "USD",
|
5
|
+
"enabled_in_hosted_pages": true,
|
6
|
+
"enabled_in_portal": true,
|
7
|
+
"free_quantity": 0,
|
8
|
+
"giftable": false,
|
9
|
+
"id": "silver",
|
10
|
+
"invoice_name": "sample plan",
|
11
|
+
"is_shippable": false,
|
12
|
+
"name": "Silver",
|
13
|
+
"object": "plan",
|
14
|
+
"period": 1,
|
15
|
+
"period_unit": "month",
|
16
|
+
"price": 5000,
|
17
|
+
"pricing_model": "flat_fee",
|
18
|
+
"resource_version": 1517505797000,
|
19
|
+
"show_description_in_invoices": false,
|
20
|
+
"show_description_in_quotes": false,
|
21
|
+
"status": "active",
|
22
|
+
"taxable": true,
|
23
|
+
"updated_at": 1517505797
|
24
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"access_url": "https://yourapp.chargebeeportal.com/portal/access/__test__cdBbQgJg5fPSTw9qBPDIaQiVEEx0Gsrrc",
|
3
|
+
"created_at": 1517505973,
|
4
|
+
"customer_id": "__test__KyVnHhSBWm8kA2sT",
|
5
|
+
"expires_at": 1517509573,
|
6
|
+
"id": "portal___test__KyVnHhSBWm8l82sV",
|
7
|
+
"linked_customers": [
|
8
|
+
{
|
9
|
+
"customer_id": "__test__KyVnHhSBWm8kA2sT",
|
10
|
+
"has_active_subscription": false,
|
11
|
+
"has_billing_address": false,
|
12
|
+
"has_payment_method": false,
|
13
|
+
"object": "linked_customer"
|
14
|
+
}
|
15
|
+
],
|
16
|
+
"object": "portal_session",
|
17
|
+
"redirect_url": "https://yourdomain.com/users/3490343",
|
18
|
+
"status": "created",
|
19
|
+
"token": "__test__cdBbQgJg5fPSTw9qBPDIaQiVEEx0Gsrrc"
|
20
|
+
}
|
@@ -11,11 +11,16 @@ module MockChargebee
|
|
11
11
|
Util.generate_id(self::RESOURCE_ID_PREFIX)
|
12
12
|
end
|
13
13
|
|
14
|
+
def self.already_exists!(id)
|
15
|
+
raise ChargeBee::InvalidRequestError.new(400, message: "The value #{id} is already present.")
|
16
|
+
end
|
17
|
+
|
14
18
|
def self.load_fixtures(*args)
|
15
19
|
args.each do |arg|
|
16
20
|
define_singleton_method("#{arg}_fixture") do
|
17
21
|
instance_variable_get("@#{arg}_fixture") ||
|
18
|
-
instance_variable_set("@#{arg}_fixture",
|
22
|
+
instance_variable_set("@#{arg}_fixture",
|
23
|
+
JSON.parse(File.read("#{File.dirname(__FILE__)}/../fixtures/#{arg}.json")))
|
19
24
|
end
|
20
25
|
end
|
21
26
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module MockChargebee
|
4
4
|
module Models
|
5
5
|
class Customer < Base
|
6
|
-
RESOURCE_ID_PREFIX =
|
6
|
+
RESOURCE_ID_PREFIX = 'cust'
|
7
7
|
|
8
8
|
load_fixtures :customer
|
9
9
|
|
@@ -12,12 +12,28 @@ module MockChargebee
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.create(params)
|
15
|
-
params[
|
15
|
+
already_exists!(id) if already_exists?(params['id'])
|
16
|
+
|
17
|
+
params['id'] ||= unique_id
|
16
18
|
customer = customer_fixture.merge(params)
|
17
|
-
repositories.customers.store(customer[
|
19
|
+
repositories.customers.store(customer['id'], customer)
|
20
|
+
|
21
|
+
customer
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.update(id, params)
|
25
|
+
customer = find(id)
|
26
|
+
customer.merge!(params)
|
27
|
+
repositories.customers.store(customer['id'], customer)
|
18
28
|
|
19
29
|
customer
|
20
30
|
end
|
31
|
+
|
32
|
+
def self.already_exists?(id)
|
33
|
+
return false if id.nil?
|
34
|
+
|
35
|
+
repositories.customers[id].present?
|
36
|
+
end
|
21
37
|
end
|
22
38
|
end
|
23
39
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MockChargebee
|
4
|
+
module Models
|
5
|
+
class Plan < Base
|
6
|
+
RESOURCE_ID_PREFIX = 'plan'
|
7
|
+
|
8
|
+
load_fixtures :plan
|
9
|
+
|
10
|
+
def self.find(id)
|
11
|
+
repositories.plans.fetch(id)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.create(params)
|
15
|
+
params['id'] ||= unique_id
|
16
|
+
plan = plan_fixture.merge(params)
|
17
|
+
repositories.plans.store(plan['id'], plan)
|
18
|
+
|
19
|
+
plan
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.update(id, params)
|
23
|
+
plan = find(id)
|
24
|
+
plan.merge!(params)
|
25
|
+
repositories.plans.store(plan['id'], plan)
|
26
|
+
|
27
|
+
plan
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MockChargebee
|
4
|
+
module Models
|
5
|
+
class PortalSession < Base
|
6
|
+
RESOURCE_ID_PREFIX = 'portal'
|
7
|
+
|
8
|
+
load_fixtures :portal_session
|
9
|
+
|
10
|
+
def self.create(params)
|
11
|
+
Validations::PortalSessions::CreateParams.validate_required(params)
|
12
|
+
|
13
|
+
params['id'] ||= unique_id
|
14
|
+
params['customer_id'] = params.dig(:customer, :id)
|
15
|
+
portal_session = portal_session_fixture.merge(params)
|
16
|
+
repositories.portal_sessions.store(portal_session['id'], portal_session)
|
17
|
+
|
18
|
+
portal_session
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -6,12 +6,13 @@ module MockChargebee
|
|
6
6
|
parsed_path = Util.parse_path_from_url(url)
|
7
7
|
parsed_params = Util.parse_params(params)
|
8
8
|
|
9
|
-
handler = RequestHandlers.const_get(parsed_path.resource.capitalize)
|
9
|
+
handler = RequestHandlers.const_get(parsed_path.resource.split('_').map(&:capitalize).join(''))
|
10
10
|
resp = handler.call(method, parsed_path, parsed_params)
|
11
|
-
|
12
|
-
resp
|
11
|
+
ChargeBee::Util.symbolize_keys(resp)
|
13
12
|
rescue NameError => e
|
14
|
-
|
13
|
+
if e.message.match?(/uninitialized constant #{parsed_path.resource.capitalize}/)
|
14
|
+
raise MockChargebee::MissingRequestHandler parsed_path.resource
|
15
|
+
end
|
15
16
|
|
16
17
|
raise e
|
17
18
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MockChargebee
|
4
|
+
module RequestHandlers
|
5
|
+
class Plans < Base
|
6
|
+
private
|
7
|
+
|
8
|
+
def post
|
9
|
+
plan = if id.nil?
|
10
|
+
Models::Plan.create(params)
|
11
|
+
else
|
12
|
+
Models::Plan.update(id, params)
|
13
|
+
end
|
14
|
+
|
15
|
+
{ plan: plan }
|
16
|
+
end
|
17
|
+
|
18
|
+
def get
|
19
|
+
plan = Models::Plan.find(id)
|
20
|
+
binding.pry
|
21
|
+
|
22
|
+
{ plan: plan }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module MockChargebee
|
4
|
+
module RequestHandlers
|
5
|
+
class PortalSessions < Base
|
6
|
+
private
|
7
|
+
|
8
|
+
def post
|
9
|
+
portal_session = Models::PortalSession.create(params)
|
10
|
+
{ portal_session: portal_session }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mock_chargebee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Cass
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -110,6 +110,8 @@ files:
|
|
110
110
|
- lib/mock_chargebee/errors.rb
|
111
111
|
- lib/mock_chargebee/fixtures/coupon.json
|
112
112
|
- lib/mock_chargebee/fixtures/customer.json
|
113
|
+
- lib/mock_chargebee/fixtures/plan.json
|
114
|
+
- lib/mock_chargebee/fixtures/portal_session.json
|
113
115
|
- lib/mock_chargebee/fixtures/subscription.json
|
114
116
|
- lib/mock_chargebee/fixtures/subscription_cancel_response.json
|
115
117
|
- lib/mock_chargebee/fixtures/subscription_create_response.json
|
@@ -208,17 +210,22 @@ files:
|
|
208
210
|
- lib/mock_chargebee/models/base.rb
|
209
211
|
- lib/mock_chargebee/models/coupon.rb
|
210
212
|
- lib/mock_chargebee/models/customer.rb
|
213
|
+
- lib/mock_chargebee/models/plan.rb
|
214
|
+
- lib/mock_chargebee/models/portal_session.rb
|
211
215
|
- lib/mock_chargebee/models/subscription.rb
|
212
216
|
- lib/mock_chargebee/repositories.rb
|
213
217
|
- lib/mock_chargebee/request.rb
|
214
218
|
- lib/mock_chargebee/request_handlers/base.rb
|
215
219
|
- lib/mock_chargebee/request_handlers/coupons.rb
|
216
220
|
- lib/mock_chargebee/request_handlers/customers.rb
|
221
|
+
- lib/mock_chargebee/request_handlers/plans.rb
|
222
|
+
- lib/mock_chargebee/request_handlers/portal_sessions.rb
|
217
223
|
- lib/mock_chargebee/request_handlers/subscriptions.rb
|
218
224
|
- lib/mock_chargebee/services/apply_coupons.rb
|
219
225
|
- lib/mock_chargebee/util.rb
|
220
226
|
- lib/mock_chargebee/validations/base.rb
|
221
227
|
- lib/mock_chargebee/validations/coupons.rb
|
228
|
+
- lib/mock_chargebee/validations/portal_sessions.rb
|
222
229
|
- lib/mock_chargebee/validations/subscriptions.rb
|
223
230
|
- lib/mock_chargebee/validations/webhooks.rb
|
224
231
|
- lib/mock_chargebee/version.rb
|