From af0b2a9c1296359304015e3f0175b98133cad8c7 Mon Sep 17 00:00:00 2001 From: Bill Klenotiz Date: Wed, 30 Nov 2022 12:53:54 -0500 Subject: [PATCH 01/11] add uninstall job to generator --- .../add_app_uninstall_job_generator.rb | 15 +++++++++++++ .../templates/app_uninstall_job.rb.tt | 21 +++++++++++++++++++ .../shopify_app/shopify_app_generator.rb | 1 + 3 files changed, 37 insertions(+) create mode 100644 lib/generators/shopify_app/add_app_uninstall_job/add_app_uninstall_job_generator.rb create mode 100644 lib/generators/shopify_app/add_app_uninstall_job/templates/app_uninstall_job.rb.tt diff --git a/lib/generators/shopify_app/add_app_uninstall_job/add_app_uninstall_job_generator.rb b/lib/generators/shopify_app/add_app_uninstall_job/add_app_uninstall_job_generator.rb new file mode 100644 index 000000000..c7dbfd217 --- /dev/null +++ b/lib/generators/shopify_app/add_app_uninstall_job/add_app_uninstall_job_generator.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require "rails/generators/base" + +module ShopifyApp + module Generators + class AddAppUninstallJobGenerator < Rails::Generators::Base + source_root File.expand_path("../templates", __FILE__) + + def create_job + template("app_uninstall_job.rb", "app/jobs/app_uninstall_job.rb") + end + end + end +end diff --git a/lib/generators/shopify_app/add_app_uninstall_job/templates/app_uninstall_job.rb.tt b/lib/generators/shopify_app/add_app_uninstall_job/templates/app_uninstall_job.rb.tt new file mode 100644 index 000000000..1b3384da0 --- /dev/null +++ b/lib/generators/shopify_app/add_app_uninstall_job/templates/app_uninstall_job.rb.tt @@ -0,0 +1,21 @@ +class AppUninstalledJob < ActiveJob::Base + extend ShopifyAPI::Webhooks::Handler + + class << self + def handle(topic:, shop:, body:) + perform_later(topic: topic, shop_domain: shop, webhook: body) + end + end + + def perform(topic:, shop_domain:, webhook:) + shop = Shop.find_by(shopify_domain: shop_domain) + + if shop.nil? + logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") + return + end + + logger.info("#{self.class} started for shop '#{shop_domain}'") + shop.destroy + end +end \ No newline at end of file diff --git a/lib/generators/shopify_app/shopify_app_generator.rb b/lib/generators/shopify_app/shopify_app_generator.rb index c1495dd6c..c6a9cd88c 100644 --- a/lib/generators/shopify_app/shopify_app_generator.rb +++ b/lib/generators/shopify_app/shopify_app_generator.rb @@ -13,6 +13,7 @@ def run_all_generators generate("shopify_app:shop_model #{@opts.join(" ")}") generate("shopify_app:authenticated_controller") generate("shopify_app:home_controller #{@opts.join(" ")}") + generate("shopify_app:add_app_uninstall_job") end end end From c772229354b59b4a5e65d80c8f6df5412d9715b9 Mon Sep 17 00:00:00 2001 From: Bill Klenotiz Date: Wed, 30 Nov 2022 16:43:13 -0500 Subject: [PATCH 02/11] uninstalled webhook added to config --- lib/generators/shopify_app/install/templates/shopify_app.rb.tt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/generators/shopify_app/install/templates/shopify_app.rb.tt b/lib/generators/shopify_app/install/templates/shopify_app.rb.tt index e47fbe729..bdf952f31 100644 --- a/lib/generators/shopify_app/install/templates/shopify_app.rb.tt +++ b/lib/generators/shopify_app/install/templates/shopify_app.rb.tt @@ -9,6 +9,9 @@ ShopifyApp.configure do |config| config.shop_session_repository = 'Shop' config.log_level = :info config.reauth_on_access_scope_changes = true + config.webhooks = [ + { topic: "app/uninstalled", path: "webhooks/uninstall"} + ] config.api_key = ENV.fetch('SHOPIFY_API_KEY', '').presence config.secret = ENV.fetch('SHOPIFY_API_SECRET', '').presence From 04a9be8b5fe361ef2da92767eddbd6616752238c Mon Sep 17 00:00:00 2001 From: Bill Klenotiz Date: Wed, 30 Nov 2022 20:40:21 -0500 Subject: [PATCH 03/11] update uninstalled webhook and add gdpr jobs --- .../add_app_uninstalled_job_generator.rb} | 4 ++-- .../templates/app_uninstalled_job.rb.tt} | 0 .../add_gdpr_jobs/add_gdpr_jobs_generator.rb | 23 +++++++++++++++++++ .../templates/customer_data_request_job.rb.tt | 22 ++++++++++++++++++ .../templates/customer_redact_job.rb.tt | 21 +++++++++++++++++ .../templates/shop_redact_job.rb.tt | 21 +++++++++++++++++ .../install/templates/shopify_app.rb.tt | 2 +- .../shopify_app/shopify_app_generator.rb | 3 ++- 8 files changed, 92 insertions(+), 4 deletions(-) rename lib/generators/shopify_app/{add_app_uninstall_job/add_app_uninstall_job_generator.rb => add_app_uninstalled_job/add_app_uninstalled_job_generator.rb} (59%) rename lib/generators/shopify_app/{add_app_uninstall_job/templates/app_uninstall_job.rb.tt => add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt} (100%) create mode 100644 lib/generators/shopify_app/add_gdpr_jobs/add_gdpr_jobs_generator.rb create mode 100644 lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt create mode 100644 lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt create mode 100644 lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt diff --git a/lib/generators/shopify_app/add_app_uninstall_job/add_app_uninstall_job_generator.rb b/lib/generators/shopify_app/add_app_uninstalled_job/add_app_uninstalled_job_generator.rb similarity index 59% rename from lib/generators/shopify_app/add_app_uninstall_job/add_app_uninstall_job_generator.rb rename to lib/generators/shopify_app/add_app_uninstalled_job/add_app_uninstalled_job_generator.rb index c7dbfd217..e57eb15cd 100644 --- a/lib/generators/shopify_app/add_app_uninstall_job/add_app_uninstall_job_generator.rb +++ b/lib/generators/shopify_app/add_app_uninstalled_job/add_app_uninstalled_job_generator.rb @@ -4,11 +4,11 @@ module ShopifyApp module Generators - class AddAppUninstallJobGenerator < Rails::Generators::Base + class AddAppUninstalledJobGenerator < Rails::Generators::Base source_root File.expand_path("../templates", __FILE__) def create_job - template("app_uninstall_job.rb", "app/jobs/app_uninstall_job.rb") + template("app_uninstalled_job.rb", "app/jobs/app_uninstalled_job.rb") end end end diff --git a/lib/generators/shopify_app/add_app_uninstall_job/templates/app_uninstall_job.rb.tt b/lib/generators/shopify_app/add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt similarity index 100% rename from lib/generators/shopify_app/add_app_uninstall_job/templates/app_uninstall_job.rb.tt rename to lib/generators/shopify_app/add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt diff --git a/lib/generators/shopify_app/add_gdpr_jobs/add_gdpr_jobs_generator.rb b/lib/generators/shopify_app/add_gdpr_jobs/add_gdpr_jobs_generator.rb new file mode 100644 index 000000000..798e7f532 --- /dev/null +++ b/lib/generators/shopify_app/add_gdpr_jobs/add_gdpr_jobs_generator.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require "rails/generators/base" + +module ShopifyApp + module Generators + class AddGdprJobsGenerator < Rails::Generators::Base + source_root File.expand_path("../templates", __FILE__) + + def add_customer_data_request_job + template("customer_data_request_job.rb", "app/jobs/customer_data_request_job.rb") + end + + def add_shop_redact_job + template("shop_redact_job.rb", "app/jobs/shop_redact_job.rb") + end + + def add_customer_redact_job + template("customer_redact_job.rb", "app/jobs/customer_redact_job.rb") + end + end + end +end diff --git a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt new file mode 100644 index 000000000..cc8300925 --- /dev/null +++ b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt @@ -0,0 +1,22 @@ +class CustomersDataRequestJob < ActiveJob::Base + extend ShopifyAPI::Webhooks::Handler + + class << self + def handle(topic:, shop:, body:) + perform_later(topic: topic, shop_domain: shop, webhook: body) + end + end + + def perform(topic:, shop_domain:, webhook:) + shop = Shop.find_by(shopify_domain: shop_domain) + + if shop.nil? + logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") + return + end + + shop.with_shopify_session do + logger.info("#{self.class} started for shop '#{shop_domain}'") + end + end +end \ No newline at end of file diff --git a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt new file mode 100644 index 000000000..447959481 --- /dev/null +++ b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt @@ -0,0 +1,21 @@ +class CustomersRedactJob < ActiveJob::Base + extend ShopifyAPI::Webhooks::Handler + + class << self + def handle(topic:, shop:, body:) + perform_later(topic: topic, shop_domain: shop, webhook: body) + end + end + + def perform(topic:, shop_domain:, webhook:) + shop = Shop.find_by(shopify_domain: shop_domain) + + if shop.nil? + logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") + return + end + + shop.with_shopify_session do + end + end +end \ No newline at end of file diff --git a/lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt b/lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt new file mode 100644 index 000000000..cc0b6bad9 --- /dev/null +++ b/lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt @@ -0,0 +1,21 @@ +class ShopRedactJob < ActiveJob::Base + extend ShopifyAPI::Webhooks::Handler + + class << self + def handle(topic:, shop:, body:) + perform_later(topic: topic, shop_domain: shop, webhook: body) + end + end + + def perform(topic:, shop_domain:, webhook:) + shop = Shop.find_by(shopify_domain: shop_domain) + + if shop.nil? + logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") + return + end + + shop.with_shopify_session do + end + end +end \ No newline at end of file diff --git a/lib/generators/shopify_app/install/templates/shopify_app.rb.tt b/lib/generators/shopify_app/install/templates/shopify_app.rb.tt index bdf952f31..1e13dff5e 100644 --- a/lib/generators/shopify_app/install/templates/shopify_app.rb.tt +++ b/lib/generators/shopify_app/install/templates/shopify_app.rb.tt @@ -10,7 +10,7 @@ ShopifyApp.configure do |config| config.log_level = :info config.reauth_on_access_scope_changes = true config.webhooks = [ - { topic: "app/uninstalled", path: "webhooks/uninstall"} + { topic: "app/uninstalled", address: "webhooks/app_uninstalled"} ] config.api_key = ENV.fetch('SHOPIFY_API_KEY', '').presence diff --git a/lib/generators/shopify_app/shopify_app_generator.rb b/lib/generators/shopify_app/shopify_app_generator.rb index c6a9cd88c..baee3b0fe 100644 --- a/lib/generators/shopify_app/shopify_app_generator.rb +++ b/lib/generators/shopify_app/shopify_app_generator.rb @@ -9,11 +9,12 @@ def initialize(args, *options) end def run_all_generators + generate("shopify_app:add_app_uninstalled_job") + generate("shopify_app:add_gdpr_jobs") generate("shopify_app:install #{@opts.join(" ")}") generate("shopify_app:shop_model #{@opts.join(" ")}") generate("shopify_app:authenticated_controller") generate("shopify_app:home_controller #{@opts.join(" ")}") - generate("shopify_app:add_app_uninstall_job") end end end From aa750d6f925cd85c719e9f9395b6887172adfe18 Mon Sep 17 00:00:00 2001 From: Bill Klenotiz Date: Wed, 30 Nov 2022 21:58:39 -0500 Subject: [PATCH 04/11] docs about gdpr webhooks --- docs/shopify_app/webhooks.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/shopify_app/webhooks.md b/docs/shopify_app/webhooks.md index d3c989bd6..ae5723bcd 100644 --- a/docs/shopify_app/webhooks.md +++ b/docs/shopify_app/webhooks.md @@ -3,6 +3,7 @@ #### Table of contents [Manage webhooks using `ShopifyApp::WebhooksManager`](#manage-webhooks-using-shopifyappwebhooksmanager) +[Mandatory GDPR Webhooks](#mandatory-gdpr-webhooks) ## Manage webhooks using `ShopifyApp::WebhooksManager` @@ -70,3 +71,15 @@ rails g shopify_app:add_webhook --topic carts/update --path webhooks/carts_updat ``` Where `--topic` is the topic and `--path` is the path the webhook should be sent to. + +## Mandatory GDPR Webhooks + +We have three mandatory GDPR webhooks + +1. `customers/data_request` +2. `customer/redact` +3. `shop/redact` + +The `generate shopify_app` command generated three job templates corresponding to all three of these webhooks. +To pass our approval process you will need to set these webhooks in your partner dashboard. +You can read more about that [here](https://shopify.dev/apps/webhooks/configuration/mandatory-webhooks). \ No newline at end of file From 0da864d6530d4957537416f65a130c763190691f Mon Sep 17 00:00:00 2001 From: Bill Klenotiz Date: Wed, 30 Nov 2022 23:22:31 -0500 Subject: [PATCH 05/11] add tests --- .../add_app_uninstalled_job_generator_test.rb | 26 +++++++++++++++++ .../add_gdpr_jobs_generator_job_test.rb | 28 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 test/generators/add_app_uninstalled_job_generator_test.rb create mode 100644 test/generators/add_gdpr_jobs_generator_job_test.rb diff --git a/test/generators/add_app_uninstalled_job_generator_test.rb b/test/generators/add_app_uninstalled_job_generator_test.rb new file mode 100644 index 000000000..292c7f82d --- /dev/null +++ b/test/generators/add_app_uninstalled_job_generator_test.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require "test_helper" +require "generators/shopify_app/add_app_uninstalled_job/add_app_uninstalled_job_generator" + +class AddAppUninstalledJobGeneratorTest < Rails::Generators::TestCase + tests ShopifyApp::Generators::AddAppUninstalledJobGenerator + destination File.expand_path("../tmp", File.dirname(__FILE__)) + + setup do + ShopifyApp.configure do |config| + config.embedded_app = true + end + + prepare_destination + provide_existing_application_file + provide_existing_routes_file + provide_existing_application_controller + end + + test "creates app uninstalled job file" do + run_generator + + assert_file "app/jobs/app_uninstalled_job.rb" + end +end diff --git a/test/generators/add_gdpr_jobs_generator_job_test.rb b/test/generators/add_gdpr_jobs_generator_job_test.rb new file mode 100644 index 000000000..fd7812c5b --- /dev/null +++ b/test/generators/add_gdpr_jobs_generator_job_test.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +require "test_helper" +require "generators/shopify_app/add_gdpr_jobs/add_gdpr_jobs_generator" + +class AddGdprJobsGeneratorJobTest < Rails::Generators::TestCase + tests ShopifyApp::Generators::AddGdprJobsGenerator + destination File.expand_path("../tmp", File.dirname(__FILE__)) + + setup do + ShopifyApp.configure do |config| + config.embedded_app = true + end + + prepare_destination + provide_existing_application_file + provide_existing_routes_file + provide_existing_application_controller + end + + test "creates app uninstalled job file" do + run_generator + + assert_file "app/jobs/customer_data_request_job.rb" + assert_file "app/jobs/shop_redact_job.rb" + assert_file "app/jobs/customer_redact_job.rb" + end +end From 62fb6c31253352cfbe67feee823c9aa5df8276de Mon Sep 17 00:00:00 2001 From: Bill Klenotiz Date: Thu, 1 Dec 2022 09:14:58 -0500 Subject: [PATCH 06/11] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f03fae144..b89531aa9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Unreleased * Emit a deprecation notice for wrongly-rescued exceptions [#1530](https://github.com/Shopify/shopify_app/pull/1530) * Log a deprecation warning for the use of incompatible controller concerns [#1560](https://github.com/Shopify/shopify_app/pull/1560) * Fixes bug with expired sessions for embedded apps returning a 500 instead of 401 [#1580](https://github.com/Shopify/shopify_app/pull/1580) +* Generator properly handles uninstall [#1597](https://github.com/Shopify/shopify_app/pull/1597) 21.2.0 (Oct 25, 2022) ---------- From 2458306aede12bfc72df3c94b966f6ecd0425591 Mon Sep 17 00:00:00 2001 From: Bill Klenotiz Date: Thu, 1 Dec 2022 14:01:54 -0500 Subject: [PATCH 07/11] raise error on shop not being found --- .../templates/app_uninstalled_job.rb.tt | 3 ++- .../add_gdpr_jobs/templates/customer_data_request_job.rb.tt | 4 ++-- .../add_gdpr_jobs/templates/customer_redact_job.rb.tt | 3 ++- .../shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt | 3 ++- .../shopify_app/add_webhook/templates/webhook_job.rb.tt | 3 ++- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/generators/shopify_app/add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt b/lib/generators/shopify_app/add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt index 1b3384da0..30be3e83a 100644 --- a/lib/generators/shopify_app/add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt +++ b/lib/generators/shopify_app/add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt @@ -12,7 +12,8 @@ class AppUninstalledJob < ActiveJob::Base if shop.nil? logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") - return + + raise StandardError, "Shop Not Found" end logger.info("#{self.class} started for shop '#{shop_domain}'") diff --git a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt index cc8300925..389127210 100644 --- a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt +++ b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt @@ -12,11 +12,11 @@ class CustomersDataRequestJob < ActiveJob::Base if shop.nil? logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") - return + + raise StandardError, "Shop Not Found" end shop.with_shopify_session do - logger.info("#{self.class} started for shop '#{shop_domain}'") end end end \ No newline at end of file diff --git a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt index 447959481..bc90be147 100644 --- a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt +++ b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt @@ -12,7 +12,8 @@ class CustomersRedactJob < ActiveJob::Base if shop.nil? logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") - return + + raise StandardError, "Shop Not Found" end shop.with_shopify_session do diff --git a/lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt b/lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt index cc0b6bad9..003240ca3 100644 --- a/lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt +++ b/lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt @@ -12,7 +12,8 @@ class ShopRedactJob < ActiveJob::Base if shop.nil? logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") - return + + raise StandardError, "Shop Not Found" end shop.with_shopify_session do diff --git a/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt b/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt index 6c05fce46..6bb727a63 100644 --- a/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt +++ b/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt @@ -12,7 +12,8 @@ class <%= @job_class_name %> < ActiveJob::Base if shop.nil? logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") - return + + raise StandardError, "Shop Not Found" end shop.with_shopify_session do From f8196b538fc4d234513d1ac474aacecfe71074ee Mon Sep 17 00:00:00 2001 From: Bill Klenotiz Date: Thu, 1 Dec 2022 14:20:23 -0500 Subject: [PATCH 08/11] add gdpr webhook registrations --- .../shopify_app/install/templates/shopify_app.rb.tt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/generators/shopify_app/install/templates/shopify_app.rb.tt b/lib/generators/shopify_app/install/templates/shopify_app.rb.tt index 1e13dff5e..3c2ed8f07 100644 --- a/lib/generators/shopify_app/install/templates/shopify_app.rb.tt +++ b/lib/generators/shopify_app/install/templates/shopify_app.rb.tt @@ -10,7 +10,10 @@ ShopifyApp.configure do |config| config.log_level = :info config.reauth_on_access_scope_changes = true config.webhooks = [ - { topic: "app/uninstalled", address: "webhooks/app_uninstalled"} + { topic: "app/uninstalled", address: "webhooks/app_uninstalled"}, + { topic: "customers/data_request", address: "webhooks/customers_data_request" }, + { topic: "customer/redact", address: "webhooks/customers_redact"}, + { topic: "shop/redact", address: "webhooks/shop_redact"} ] config.api_key = ENV.fetch('SHOPIFY_API_KEY', '').presence From 683b9f4585ff87ddfd2bda9b26476da9eca43fab Mon Sep 17 00:00:00 2001 From: Bill Klenotiz Date: Thu, 1 Dec 2022 14:41:31 -0500 Subject: [PATCH 09/11] use record not found error --- .../add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt | 2 +- .../add_gdpr_jobs/templates/customer_data_request_job.rb.tt | 2 +- .../add_gdpr_jobs/templates/customer_redact_job.rb.tt | 2 +- .../shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt | 2 +- .../shopify_app/add_webhook/templates/webhook_job.rb.tt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/generators/shopify_app/add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt b/lib/generators/shopify_app/add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt index 30be3e83a..e0271cc6e 100644 --- a/lib/generators/shopify_app/add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt +++ b/lib/generators/shopify_app/add_app_uninstalled_job/templates/app_uninstalled_job.rb.tt @@ -13,7 +13,7 @@ class AppUninstalledJob < ActiveJob::Base if shop.nil? logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") - raise StandardError, "Shop Not Found" + raise ActiveRecord::RecordNotFound, "Shop Not Found" end logger.info("#{self.class} started for shop '#{shop_domain}'") diff --git a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt index 389127210..a199b76df 100644 --- a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt +++ b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt @@ -13,7 +13,7 @@ class CustomersDataRequestJob < ActiveJob::Base if shop.nil? logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") - raise StandardError, "Shop Not Found" + raise ActiveRecord::RecordNotFound, "Shop Not Found" end shop.with_shopify_session do diff --git a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt index bc90be147..bfaff91cc 100644 --- a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt +++ b/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt @@ -13,7 +13,7 @@ class CustomersRedactJob < ActiveJob::Base if shop.nil? logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") - raise StandardError, "Shop Not Found" + raise ActiveRecord::RecordNotFound, "Shop Not Found" end shop.with_shopify_session do diff --git a/lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt b/lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt index 003240ca3..fe5b26a21 100644 --- a/lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt +++ b/lib/generators/shopify_app/add_gdpr_jobs/templates/shop_redact_job.rb.tt @@ -13,7 +13,7 @@ class ShopRedactJob < ActiveJob::Base if shop.nil? logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") - raise StandardError, "Shop Not Found" + raise ActiveRecord::RecordNotFound, "Shop Not Found" end shop.with_shopify_session do diff --git a/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt b/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt index 6bb727a63..2c7021355 100644 --- a/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt +++ b/lib/generators/shopify_app/add_webhook/templates/webhook_job.rb.tt @@ -13,7 +13,7 @@ class <%= @job_class_name %> < ActiveJob::Base if shop.nil? logger.error("#{self.class} failed: cannot find shop with domain '#{shop_domain}'") - raise StandardError, "Shop Not Found" + raise ActiveRecord::RecordNotFound, "Shop Not Found" end shop.with_shopify_session do From 1a293c3175f6c935b6a5a6af013d0d35cdc437fb Mon Sep 17 00:00:00 2001 From: Bill Klenotiz Date: Thu, 1 Dec 2022 15:05:47 -0500 Subject: [PATCH 10/11] fix gdpr names --- .../shopify_app/add_gdpr_jobs/add_gdpr_jobs_generator.rb | 4 ++-- ...ata_request_job.rb.tt => customers_data_request_job.rb.tt} | 0 .../{customer_redact_job.rb.tt => customers_redact_job.rb.tt} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename lib/generators/shopify_app/add_gdpr_jobs/templates/{customer_data_request_job.rb.tt => customers_data_request_job.rb.tt} (100%) rename lib/generators/shopify_app/add_gdpr_jobs/templates/{customer_redact_job.rb.tt => customers_redact_job.rb.tt} (100%) diff --git a/lib/generators/shopify_app/add_gdpr_jobs/add_gdpr_jobs_generator.rb b/lib/generators/shopify_app/add_gdpr_jobs/add_gdpr_jobs_generator.rb index 798e7f532..3e5434b6c 100644 --- a/lib/generators/shopify_app/add_gdpr_jobs/add_gdpr_jobs_generator.rb +++ b/lib/generators/shopify_app/add_gdpr_jobs/add_gdpr_jobs_generator.rb @@ -8,7 +8,7 @@ class AddGdprJobsGenerator < Rails::Generators::Base source_root File.expand_path("../templates", __FILE__) def add_customer_data_request_job - template("customer_data_request_job.rb", "app/jobs/customer_data_request_job.rb") + template("customers_data_request_job.rb", "app/jobs/customers_data_request_job.rb") end def add_shop_redact_job @@ -16,7 +16,7 @@ def add_shop_redact_job end def add_customer_redact_job - template("customer_redact_job.rb", "app/jobs/customer_redact_job.rb") + template("customers_redact_job.rb", "app/jobs/customers_redact_job.rb") end end end diff --git a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt b/lib/generators/shopify_app/add_gdpr_jobs/templates/customers_data_request_job.rb.tt similarity index 100% rename from lib/generators/shopify_app/add_gdpr_jobs/templates/customer_data_request_job.rb.tt rename to lib/generators/shopify_app/add_gdpr_jobs/templates/customers_data_request_job.rb.tt diff --git a/lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt b/lib/generators/shopify_app/add_gdpr_jobs/templates/customers_redact_job.rb.tt similarity index 100% rename from lib/generators/shopify_app/add_gdpr_jobs/templates/customer_redact_job.rb.tt rename to lib/generators/shopify_app/add_gdpr_jobs/templates/customers_redact_job.rb.tt From 67de85154f82af151871ef7bf493040157edcf6d Mon Sep 17 00:00:00 2001 From: Bill Klenotiz Date: Thu, 1 Dec 2022 15:11:03 -0500 Subject: [PATCH 11/11] fix tests --- test/generators/add_gdpr_jobs_generator_job_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/generators/add_gdpr_jobs_generator_job_test.rb b/test/generators/add_gdpr_jobs_generator_job_test.rb index fd7812c5b..2927b1b6e 100644 --- a/test/generators/add_gdpr_jobs_generator_job_test.rb +++ b/test/generators/add_gdpr_jobs_generator_job_test.rb @@ -21,8 +21,8 @@ class AddGdprJobsGeneratorJobTest < Rails::Generators::TestCase test "creates app uninstalled job file" do run_generator - assert_file "app/jobs/customer_data_request_job.rb" + assert_file "app/jobs/customers_data_request_job.rb" assert_file "app/jobs/shop_redact_job.rb" - assert_file "app/jobs/customer_redact_job.rb" + assert_file "app/jobs/customers_redact_job.rb" end end