diff --git a/Gemfile.lock b/Gemfile.lock index aed2928b..416046f9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,6 +11,7 @@ PATH remote: . specs: pay (8.0.0) + ostruct rails (>= 6.0.0) GEM diff --git a/app/models/pay/braintree/subscription.rb b/app/models/pay/braintree/subscription.rb index c08841cd..59dc5ec0 100644 --- a/app/models/pay/braintree/subscription.rb +++ b/app/models/pay/braintree/subscription.rb @@ -1,3 +1,5 @@ +require "ostruct" + module Pay module Braintree class Subscription < Pay::Subscription diff --git a/app/models/pay/webhook.rb b/app/models/pay/webhook.rb index f1a32669..348a05f6 100644 --- a/app/models/pay/webhook.rb +++ b/app/models/pay/webhook.rb @@ -1,3 +1,5 @@ +require "ostruct" + module Pay class Webhook < Pay::ApplicationRecord validates :processor, presence: true diff --git a/gemfiles/rails_6_1.gemfile b/gemfiles/rails_6_1.gemfile index 7a9a8851..7ab4ff68 100644 --- a/gemfiles/rails_6_1.gemfile +++ b/gemfiles/rails_6_1.gemfile @@ -26,5 +26,6 @@ gem "net-imap", require: false gem "net-pop", require: false gem "net-smtp", require: false gem "rails", "~> 6.1.0" +gem "ostruct" gemspec path: "../" diff --git a/gemfiles/rails_6_1.gemfile.lock b/gemfiles/rails_6_1.gemfile.lock index c1acdf6f..4af0de85 100644 --- a/gemfiles/rails_6_1.gemfile.lock +++ b/gemfiles/rails_6_1.gemfile.lock @@ -11,6 +11,7 @@ PATH remote: .. specs: pay (8.0.0) + ostruct rails (>= 6.0.0) GEM @@ -146,6 +147,7 @@ GEM racc (~> 1.4) nokogiri (1.16.7-x86_64-linux) racc (~> 1.4) + ostruct (0.6.0) paddle (2.5.1) faraday (~> 2.0) parallel (1.26.3) @@ -293,6 +295,7 @@ DEPENDENCIES net-imap net-pop net-smtp + ostruct paddle (~> 2.4) pay! pg diff --git a/gemfiles/rails_7.gemfile b/gemfiles/rails_7.gemfile index d96eb3e8..400bd9ab 100644 --- a/gemfiles/rails_7.gemfile +++ b/gemfiles/rails_7.gemfile @@ -26,5 +26,6 @@ gem "net-imap", require: false gem "net-pop", require: false gem "net-smtp", require: false gem "rails", "~> 7.0.0" +gem "ostruct" gemspec path: "../" diff --git a/gemfiles/rails_7.gemfile.lock b/gemfiles/rails_7.gemfile.lock index b913b9fc..55395f81 100644 --- a/gemfiles/rails_7.gemfile.lock +++ b/gemfiles/rails_7.gemfile.lock @@ -11,6 +11,7 @@ PATH remote: .. specs: pay (8.0.0) + ostruct rails (>= 6.0.0) GEM @@ -152,6 +153,7 @@ GEM racc (~> 1.4) nokogiri (1.16.7-x86_64-linux) racc (~> 1.4) + ostruct (0.6.0) paddle (2.5.1) faraday (~> 2.0) parallel (1.26.3) @@ -299,6 +301,7 @@ DEPENDENCIES net-imap net-pop net-smtp + ostruct paddle (~> 2.4) pay! pg diff --git a/gemfiles/rails_7_1.gemfile b/gemfiles/rails_7_1.gemfile index 4ffc2ff4..9cad023f 100644 --- a/gemfiles/rails_7_1.gemfile +++ b/gemfiles/rails_7_1.gemfile @@ -26,5 +26,6 @@ gem "net-imap", require: false gem "net-pop", require: false gem "net-smtp", require: false gem "rails", "~> 7.1.0" +gem "ostruct" gemspec path: "../" diff --git a/gemfiles/rails_7_1.gemfile.lock b/gemfiles/rails_7_1.gemfile.lock index 31db494a..406e1030 100644 --- a/gemfiles/rails_7_1.gemfile.lock +++ b/gemfiles/rails_7_1.gemfile.lock @@ -11,6 +11,7 @@ PATH remote: .. specs: pay (8.0.0) + ostruct rails (>= 6.0.0) GEM @@ -167,6 +168,7 @@ GEM racc (~> 1.4) nokogiri (1.16.7-x86_64-linux) racc (~> 1.4) + ostruct (0.6.0) paddle (2.5.1) faraday (~> 2.0) parallel (1.26.3) @@ -325,6 +327,7 @@ DEPENDENCIES net-imap net-pop net-smtp + ostruct paddle (~> 2.4) pay! pg diff --git a/gemfiles/rails_7_2.gemfile b/gemfiles/rails_7_2.gemfile index 851a39d8..e7f612e8 100644 --- a/gemfiles/rails_7_2.gemfile +++ b/gemfiles/rails_7_2.gemfile @@ -26,5 +26,6 @@ gem "net-imap", require: false gem "net-pop", require: false gem "net-smtp", require: false gem "rails", "~> 7.2.0.rc1" +gem "ostruct" gemspec path: "../" diff --git a/gemfiles/rails_7_2.gemfile.lock b/gemfiles/rails_7_2.gemfile.lock index 8e6ee849..104412b2 100644 --- a/gemfiles/rails_7_2.gemfile.lock +++ b/gemfiles/rails_7_2.gemfile.lock @@ -11,6 +11,7 @@ PATH remote: .. specs: pay (8.0.0) + ostruct rails (>= 6.0.0) GEM @@ -162,6 +163,7 @@ GEM racc (~> 1.4) nokogiri (1.16.7-x86_64-linux) racc (~> 1.4) + ostruct (0.6.0) paddle (2.5.1) faraday (~> 2.0) parallel (1.26.3) @@ -325,6 +327,7 @@ DEPENDENCIES net-imap net-pop net-smtp + ostruct paddle (~> 2.4) pay! pg diff --git a/gemfiles/rails_main.gemfile b/gemfiles/rails_main.gemfile index 6eb0e1e9..9c6c5c17 100644 --- a/gemfiles/rails_main.gemfile +++ b/gemfiles/rails_main.gemfile @@ -26,5 +26,6 @@ gem "net-imap", require: false gem "net-pop", require: false gem "net-smtp", require: false gem "rails", branch: "main", git: "https://github.com/rails/rails.git" +gem "ostruct" gemspec path: "../" diff --git a/gemfiles/rails_main.gemfile.lock b/gemfiles/rails_main.gemfile.lock index c6f25158..f11e808a 100644 --- a/gemfiles/rails_main.gemfile.lock +++ b/gemfiles/rails_main.gemfile.lock @@ -109,6 +109,7 @@ PATH remote: .. specs: pay (8.0.0) + ostruct rails (>= 6.0.0) GEM @@ -190,6 +191,7 @@ GEM racc (~> 1.4) nokogiri (1.16.7-x86_64-linux) racc (~> 1.4) + ostruct (0.6.0) paddle (2.5.1) faraday (~> 2.0) parallel (1.26.3) @@ -331,6 +333,7 @@ DEPENDENCIES net-imap net-pop net-smtp + ostruct paddle (~> 2.4) pay! pg diff --git a/pay.gemspec b/pay.gemspec index 49b2205d..3ad5fb8c 100644 --- a/pay.gemspec +++ b/pay.gemspec @@ -22,4 +22,5 @@ Gem::Specification.new do |s| ] s.add_dependency "rails", ">= 6.0.0" + s.add_dependency "ostruct" end diff --git a/test/models/pay/webhook_test.rb b/test/models/pay/webhook_test.rb index a750d857..97ce878f 100644 --- a/test/models/pay/webhook_test.rb +++ b/test/models/pay/webhook_test.rb @@ -8,6 +8,13 @@ class Pay::Webhook::Test < ActiveSupport::TestCase assert_equal "visa", event.payment_method.card_type end + test "rehydrates a Paddle Billing event" do + pay_webhook = Pay::Webhook.create processor: :paddle_billing, event_type: :example, event: json_fixture("paddle_billing/subscription.created") + event = pay_webhook.rehydrated_event + assert_equal OpenStruct, event.class + assert_equal "month", event.billing_cycle.interval + end + test "rehydrates a Stripe event" do pay_webhook = Pay::Webhook.create processor: :stripe, event_type: :example, event: json_fixture("stripe/customer.updated") event = pay_webhook.rehydrated_event