From 41703ce26047105c6c27a5a567c2d99e0acca815 Mon Sep 17 00:00:00 2001 From: Ivan Novosad Date: Tue, 3 Dec 2024 08:47:20 +0100 Subject: [PATCH] fix(customer): Fix update customer webhook --- Gemfile.lock | 1 + app/services/customers/create_service.rb | 8 +++++++- spec/services/customers/create_service_spec.rb | 8 ++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 362f27b92b6..5798331f3f7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -908,6 +908,7 @@ PLATFORMS aarch64-linux-musl arm64-darwin-22 arm64-darwin-23 + arm64-darwin-24 x86_64-darwin-21 x86_64-darwin-22 x86_64-darwin-23 diff --git a/app/services/customers/create_service.rb b/app/services/customers/create_service.rb index 3bfe6266a77..e33620a7401 100644 --- a/app/services/customers/create_service.rb +++ b/app/services/customers/create_service.rb @@ -100,6 +100,12 @@ def create_from_api(organization:, params:) new_customer: ) + if new_customer + SendWebhookJob.perform_later('customer.created', customer) + else + SendWebhookJob.perform_later('customer.updated', customer) + end + track_customer_created(customer) result rescue BaseService::ServiceFailure => e @@ -196,6 +202,7 @@ def create(**args) new_customer: true ) + SendWebhookJob.perform_later('customer.created', customer) track_customer_created(customer) result rescue ActiveRecord::RecordInvalid => e @@ -335,7 +342,6 @@ def track_customer_created(customer) organization_id: customer.organization_id } ) - SendWebhookJob.perform_later("customer.created", customer) end def should_create_billing_configuration?(billing, customer) diff --git a/spec/services/customers/create_service_spec.rb b/spec/services/customers/create_service_spec.rb index 42f99aae546..5092dd06e08 100644 --- a/spec/services/customers/create_service_spec.rb +++ b/spec/services/customers/create_service_spec.rb @@ -374,6 +374,14 @@ end end + it 'calls SendWebhookJob with customer.updated' do + customers_service.create_from_api( + organization:, + params: create_args + ) + expect(SendWebhookJob).to have_received(:perform_later).with('customer.updated', customer) + end + context 'with provider customer' do let(:payment_provider) { create(:stripe_provider, organization:) } let(:stripe_customer) { create(:stripe_customer, customer:, payment_provider:) }