stripe_model_callbacks 0.1.3 → 0.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11a762bf963e197d38e74291fc7efe1c3d13d718a9905db6fb7ea502d7b84e9e
4
- data.tar.gz: c0ffe2a2e5425471556f2987ce77877bda02452d2af2d0bed2fe266e340af849
3
+ metadata.gz: 2a2074ea120eeaea0b8f7abbbc91136afb646a7fe48a1854c604499977208835
4
+ data.tar.gz: b02d2706c5d4946a6fb2ab0ca1c26f8258d09cd2a344ade286b317333f1a77b4
5
5
  SHA512:
6
- metadata.gz: c689a4d577b5d9a97ed070a25d4716a56553449ab1ea6c4859cd3d188c57c634d150b8c0beb70500093cce05660ed53f8073e440d70cb9886f8371c2b17161d5
7
- data.tar.gz: f8b8705e2568a73469eab5c27c06d2d1c8ba271495dcfe89e3fff508af1537b6064c4e4756c3e40661e837d8f15538cc57a0cb8c5f7d50ac7f34a625a57d307f
6
+ metadata.gz: 5d4af6fb585fb6015a7ef483974edfe76175b166f82cd506e576bdfc8e956f1795dc6746130041a2c64a78de22c992d331d5df3ce70ed417ddc05d93f021f52f
7
+ data.tar.gz: 5a9cbca86509ed5bf45111a4aef2124005f6ca986c8a134312bf9fed0a4e49a038b7e824732f372e2fdc9069ecaea3f6aa62403e372ee6ceee7cfdcb429c7044
data/README.md CHANGED
@@ -67,6 +67,16 @@ log and more automatically using the ActiveRecord models.
67
67
 
68
68
  You can use a service like Ultrahook to set up a proxy for your local development machine to test against.
69
69
 
70
+ ### Report errors
71
+
72
+ ```ruby
73
+ StripeModelCallbacks.configure do |config|
74
+ config.on_error do |args:, error:|
75
+ PeakFlowUtils::Notifier.notify(error: error)
76
+ end
77
+ end
78
+ ```
79
+
70
80
  ## Usage
71
81
 
72
82
  ### Queries with ActiveRecord
@@ -133,7 +143,7 @@ https://github.com/kaspernj/stripe_model_callbacks/tree/master/spec/factories
133
143
 
134
144
  You can mock Stripe events by using the helper method `mock_stripe_event` by including this helper:
135
145
 
136
- ```
146
+ ```ruby
137
147
  RSpec.configure do |config|
138
148
  config.include StripeModelCallbacks::EventMocker
139
149
  end
@@ -154,9 +164,6 @@ mock_stripe_event("invoice.created", data: {object: {discount: {"customer": "cus
154
164
  ## Contributing
155
165
  Contribution directions go here.
156
166
 
157
- # capybara-webkit installation issue
158
- Instruction how to solve the issue: https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit#macOS-catalina-1015
159
-
160
167
  # Database schema changes
161
168
  1. Add migration to `/db/migrate`: ```rails g migration AddStripeIdUniqToStripeInvoices```
162
169
  2. Go to directory: `spec/dummy`
@@ -1,7 +1,7 @@
1
1
  class StripeModelCallbacks::BaseService < ServicePattern::Service
2
- def self.reported_execute!(*args, &blk)
2
+ def self.reported_execute!(*args, **opts, &blk)
3
3
  with_exception_notifications do
4
- response = execute(*args, &blk)
4
+ response = execute(*args, **opts, &blk)
5
5
  raise response.errors.join(". ") unless response.success?
6
6
 
7
7
  response
@@ -24,13 +24,13 @@ class StripeModelCallbacks::BaseService < ServicePattern::Service
24
24
  raise e
25
25
  end
26
26
 
27
- def self.execute_with_advisory_lock!(*args, &blk)
27
+ def self.execute_with_advisory_lock!(*args, **opts, &blk)
28
28
  # The difference between the stripe events is about a few milliseconds - with advisory_lock
29
29
  # we will prevent from creating duplicated objects due to race condition.
30
30
  # https://stripe.com/docs/webhooks/best-practices#event-ordering
31
31
  with_exception_notifications do
32
- StripeModelCallbacks::ApplicationRecord.with_advisory_lock(advisory_lock_name(*args)) do
33
- response = execute(*args, &blk)
32
+ StripeModelCallbacks::ApplicationRecord.with_advisory_lock(advisory_lock_name(*args, **opts)) do
33
+ response = execute(*args, **opts, &blk)
34
34
  raise response.errors.join(". ") unless response.success?
35
35
 
36
36
  response
@@ -38,8 +38,8 @@ class StripeModelCallbacks::BaseService < ServicePattern::Service
38
38
  end
39
39
  end
40
40
 
41
- def self.advisory_lock_name(*args)
42
- stripe_event_data = args.first[:event].data.object
41
+ def self.advisory_lock_name(event:)
42
+ stripe_event_data = event.data.object
43
43
 
44
44
  ["stripe", stripe_event_data.object, "id", advisory_lock_id(stripe_event_data)].join("-")
45
45
  end
@@ -0,0 +1,5 @@
1
+ class ChangeInvoiceBillingToNullable < ActiveRecord::Migration[6.1]
2
+ def change
3
+ change_column_null :stripe_invoices, :billing, true
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class RenameInvoicesBillingToDeprecatedBilling < ActiveRecord::Migration[6.1]
2
+ def change
3
+ rename_column :stripe_invoices, :billing, :billing_deprecated
4
+ end
5
+ end
@@ -4,8 +4,8 @@ FactoryBot.define do
4
4
  amount_due_cents { 0 }
5
5
  amount_due_currency { "USD" }
6
6
  attempted { false }
7
- billing { "charge_automatically" }
8
7
  closed { false }
8
+ collection_method { "charge_automatically" }
9
9
  created { 2.days.ago }
10
10
  currency { "usd" }
11
11
  forgiven { false }
@@ -11,6 +11,9 @@
11
11
  "object": {
12
12
  "id": "in_00000000000000",
13
13
  "object": "invoice",
14
+ "account_country": "DK",
15
+ "account_name": "KNJ IT-solutions",
16
+ "account_tax_ids": null,
14
17
  "amount_due": 3500,
15
18
  "amount_paid": 3500,
16
19
  "amount_remaining": 0,
@@ -18,12 +21,44 @@
18
21
  "attempt_count": 1,
19
22
  "attempted": false,
20
23
  "auto_advance": false,
21
- "billing": "charge_automatically",
24
+ "automatic_tax": {
25
+ "enabled": false,
26
+ "status": null
27
+ },
22
28
  "billing_reason": "subscription_create",
23
29
  "charge": "ch_00000000000000",
24
30
  "collection_method": "charge_automatically",
31
+ "created": 1637488924,
25
32
  "currency": "dkk",
26
33
  "customer": "cus_00000000000000",
34
+ "customer_address": null,
35
+ "customer_email": "customer@example.com",
36
+ "customer_name": null,
37
+ "customer_phone": null,
38
+ "customer_shipping": null,
39
+ "customer_tax_exempt": "none",
40
+ "customer_tax_ids": [],
41
+ "default_payment_method": null,
42
+ "default_source": null,
43
+ "default_tax_rates": [
44
+ {
45
+ "id": "txr_1CLElKJHvNqCXRbQESFuQiCC",
46
+ "object": "tax_rate",
47
+ "active": true,
48
+ "country": null,
49
+ "created": 1524767050,
50
+ "description": null,
51
+ "display_name": "Tax",
52
+ "inclusive": false,
53
+ "jurisdiction": null,
54
+ "livemode": true,
55
+ "metadata": {
56
+ },
57
+ "percentage": 25,
58
+ "state": null,
59
+ "tax_type": null
60
+ }
61
+ ],
27
62
  "date": 1517763745,
28
63
  "description": null,
29
64
  "discount": null,
@@ -44,7 +44,7 @@ class StripeInvoice < StripeModelCallbacks::ApplicationRecord
44
44
  StripeModelCallbacks::AttributesAssignerService.execute!(
45
45
  model: self, stripe_model: object,
46
46
  attributes: %w[
47
- attempted attempt_count auto_advance billing billing_reason
47
+ attempted attempt_count auto_advance billing_reason
48
48
  collection_method currency description ending_balance hosted_invoice_url
49
49
  id invoice_pdf livemode next_payment_attempt number
50
50
  paid receipt_number starting_balance statement_descriptor
@@ -1,3 +1,3 @@
1
1
  module StripeModelCallbacks
2
- VERSION = "0.1.3".freeze
2
+ VERSION = "0.1.4".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe_model_callbacks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - kaspernj
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-04 00:00:00.000000000 Z
11
+ date: 2021-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 1.0.0
75
+ version: 1.0.5
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 1.0.0
82
+ version: 1.0.5
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: stripe
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,20 +108,6 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.0.4
111
- - !ruby/object:Gem::Dependency
112
- name: stripe-ruby-mock
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: 3.0.1
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: 3.0.1
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: with_advisory_lock
127
113
  requirement: !ruby/object:Gem::Requirement
@@ -247,6 +233,8 @@ files:
247
233
  - db/migrate/20201224120534_create_stripe_subscription_default_tax_rates.rb
248
234
  - db/migrate/20201224122058_create_stripe_prices.rb
249
235
  - db/migrate/20201224123838_add_stripe_price_to_stripe_subscription_items.rb
236
+ - db/migrate/20211121155313_change_invoice_billing_to_nullable.rb
237
+ - db/migrate/20211121155732_rename_invoices_billing_to_deprecated_billing.rb
250
238
  - lib/stripe_model_callbacks.rb
251
239
  - lib/stripe_model_callbacks/autoload_models.rb
252
240
  - lib/stripe_model_callbacks/configuration.rb
@@ -406,7 +394,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
406
394
  - !ruby/object:Gem::Version
407
395
  version: '0'
408
396
  requirements: []
409
- rubygems_version: 3.1.6
397
+ rubygems_version: 3.2.32
410
398
  signing_key:
411
399
  specification_version: 4
412
400
  summary: Framework for getting Stripe webhook callbacks directly to your models