disco_app 0.14.4 → 0.15.0

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: 201255aa9e92f2967fb8583ad43e2d13b4aea475d0222337d8956bf14df70841
4
- data.tar.gz: ab97fc9e8f149f70baaaa35addb08ea96f3dea8f203789fd04bd585b0f4f8557
3
+ metadata.gz: 5c891183749c2628841d04af2b7ba9aea55105e298c455007f0fe27e443267ec
4
+ data.tar.gz: b525b930e8e3e3282c297b9c2ac8754a0cd5629deb51584d5823aef0f3ec0008
5
5
  SHA512:
6
- metadata.gz: 6d7ccecfce96e4bac63df8153c9ef0931c34a8d6387fa77bc3a734669a44639ef76634527f0d74d8f0ae2ffd516aeb7b6a84e59fdf98c14eaaae1a86145baaa8
7
- data.tar.gz: 98a2e1d47d2fc19bb798a5579eac1f98b75ecdfcf645039dafe8cc5bb3dd39ee1845b780215fca0855d66fc9dbf429dede6f87ad962d3006c293941f3fec3562
6
+ metadata.gz: be4061a4dc377bdd9b9b2271899e5cca283d8503f31281a8741ce14387d1064ee251f1bf11d3c68c20a776ab9339114a50369ccb35f61b5b933f569fa1263979
7
+ data.tar.gz: 894629b3f1747cbe6cb2417ebf369e83e6a8817d352328d3513423d8aae9fa283b0a0a3a4995cc40647da482a96c6ce7da40f0515ae3f91858b05e3522822e5d
@@ -0,0 +1,18 @@
1
+ Forecast: [C-XXX](https://app.forecast.it/project/P-X/workflow/C-XXX)
2
+
3
+ ### Description
4
+ A brief overview of the work done. Be sure to provide some context to the issue/feature, so that the reviewer can jump right on in and review your sweet, sweet code.
5
+
6
+ Highlight any interesting design decisions that you may have taken.
7
+
8
+ ### Notes
9
+ * A bulleted list of any secondary information that you feel would be useful to the reviewer.
10
+ * Gotchas, new dependencies, unusual data migrations, etc., would all live here.
11
+
12
+ ### Checklist
13
+
14
+ - [ ] Updated README and any other relevant documentation.
15
+ - [ ] Tested changes locally.
16
+ - [ ] Updated test suite and made sure that it all passes.
17
+ - [ ] Ensured that Rubocop and friends are happy.
18
+ - [ ] Checked that this PR is referencing the correct base.
@@ -0,0 +1,48 @@
1
+ module DiscoApp::Concerns::WebhooksController
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ before_action :verify_webhook
6
+ protect_from_forgery with: :null_session
7
+ end
8
+
9
+ def process_webhook
10
+ # Get the topic and domain for this webhook.
11
+ topic = request.headers['HTTP_X_SHOPIFY_TOPIC']
12
+ shopify_domain = request.headers['HTTP_X_SHOPIFY_SHOP_DOMAIN']
13
+
14
+ # Ensure a domain was provided in the headers.
15
+ unless shopify_domain
16
+ head :bad_request
17
+ end
18
+
19
+ # Try to find a matching background job task for the given topic using class name.
20
+ job_class = DiscoApp::WebhookService.find_job_class(topic)
21
+
22
+ # Return bad request if we couldn't match a job class.
23
+ unless job_class.present?
24
+ head :bad_request
25
+ end
26
+
27
+ # Decode the body data and enqueue the appropriate job.
28
+ data = ActiveSupport::JSON::decode(request.body.read).with_indifferent_access
29
+ job_class.perform_later(shopify_domain, data)
30
+
31
+ render body: nil
32
+ end
33
+
34
+ private
35
+
36
+ def verify_webhook
37
+ unless webhook_is_valid?
38
+ head :unauthorized
39
+ end
40
+ request.body.rewind
41
+ end
42
+
43
+ def webhook_is_valid?
44
+ return true if Rails.env.development? and DiscoApp.configuration.skip_webhook_verification?
45
+ DiscoApp::WebhookService.is_valid_hmac?(request.body.read.to_s, ShopifyApp.configuration.secret, request.headers['HTTP_X_SHOPIFY_HMAC_SHA256'])
46
+ end
47
+
48
+ end
@@ -1,47 +1,3 @@
1
- module DiscoApp
2
- class WebhooksController < ActionController::Base
3
-
4
- before_action :verify_webhook
5
- protect_from_forgery with: :null_session
6
-
7
- def process_webhook
8
- # Get the topic and domain for this webhook.
9
- topic = request.headers['HTTP_X_SHOPIFY_TOPIC']
10
- shopify_domain = request.headers['HTTP_X_SHOPIFY_SHOP_DOMAIN']
11
-
12
- # Ensure a domain was provided in the headers.
13
- unless shopify_domain
14
- head :bad_request
15
- end
16
-
17
- # Try to find a matching background job task for the given topic using class name.
18
- job_class = DiscoApp::WebhookService.find_job_class(topic)
19
-
20
- # Return bad request if we couldn't match a job class.
21
- unless job_class.present?
22
- head :bad_request
23
- end
24
-
25
- # Decode the body data and enqueue the appropriate job.
26
- data = ActiveSupport::JSON::decode(request.body.read).with_indifferent_access
27
- job_class.perform_later(shopify_domain, data)
28
-
29
- render body: nil
30
- end
31
-
32
- private
33
-
34
- def verify_webhook
35
- unless webhook_is_valid?
36
- head :unauthorized
37
- end
38
- request.body.rewind
39
- end
40
-
41
- def webhook_is_valid?
42
- return true if Rails.env.development? and DiscoApp.configuration.skip_webhook_verification?
43
- DiscoApp::WebhookService.is_valid_hmac?(request.body.read.to_s, ShopifyApp.configuration.secret, request.headers['HTTP_X_SHOPIFY_HMAC_SHA256'])
44
- end
45
-
46
- end
1
+ class DiscoApp::WebhooksController < ActionController::Base
2
+ include DiscoApp::Concerns::WebhooksController
47
3
  end
@@ -1,3 +1,3 @@
1
1
  module DiscoApp
2
- VERSION = '0.14.4'
2
+ VERSION = '0.15.0'
3
3
  end
@@ -19,7 +19,9 @@ pickle-email-*.html
19
19
  ## Environment normalisation:
20
20
  /.bundle
21
21
  /vendor/bundle
22
+ /vendor/ruby
22
23
  /.env.local
24
+ .envrc
23
25
 
24
26
  # these should all be checked in to normalise the environment:
25
27
  # Gemfile.lock, .ruby-version, .ruby-gemset
@@ -37,3 +39,5 @@ bower.json
37
39
 
38
40
  # Editors
39
41
  .idea
42
+ .vscode
43
+ TAGS
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: disco_app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.4
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Ballard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-23 00:00:00.000000000 Z
11
+ date: 2018-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -485,6 +485,7 @@ executables: []
485
485
  extensions: []
486
486
  extra_rdoc_files: []
487
487
  files:
488
+ - ".github/PULL_REQUEST_TEMPLATE.md"
488
489
  - Rakefile
489
490
  - app/assets/components/disco_app/buttons/model-destroy-button.es6.jsx
490
491
  - app/assets/components/disco_app/forms/model-form.es6.jsx
@@ -584,6 +585,7 @@ files:
584
585
  - app/controllers/disco_app/concerns/authenticated_controller.rb
585
586
  - app/controllers/disco_app/concerns/carrier_request_controller.rb
586
587
  - app/controllers/disco_app/concerns/user_authenticated_controller.rb
588
+ - app/controllers/disco_app/concerns/webhooks_controller.rb
587
589
  - app/controllers/disco_app/frame_controller.rb
588
590
  - app/controllers/disco_app/install_controller.rb
589
591
  - app/controllers/disco_app/subscriptions_controller.rb
@@ -899,164 +901,164 @@ required_rubygems_version: !ruby/object:Gem::Requirement
899
901
  version: '0'
900
902
  requirements: []
901
903
  rubyforge_project:
902
- rubygems_version: 2.7.3
904
+ rubygems_version: 2.7.7
903
905
  signing_key:
904
906
  specification_version: 4
905
907
  summary: Rails engine for Shopify applications.
906
908
  test_files:
907
- - test/clients/disco_app/api_client_test.rb
908
- - test/dummy/app/models/disco_app/shop.rb
909
- - test/dummy/app/models/product.rb
910
- - test/dummy/app/models/js_configuration.rb
911
- - test/dummy/app/models/widget_configuration.rb
912
- - test/dummy/app/models/application_record.rb
913
- - test/dummy/app/models/cart.rb
909
+ - test/dummy/public/500.html
910
+ - test/dummy/public/favicon.ico
911
+ - test/dummy/public/422.html
912
+ - test/dummy/public/404.html
913
+ - test/dummy/bin/rake
914
+ - test/dummy/bin/rails
915
+ - test/dummy/bin/setup
916
+ - test/dummy/bin/bundle
917
+ - test/dummy/Rakefile
918
+ - test/dummy/config.ru
919
+ - test/dummy/app/assets/stylesheets/application.scss
920
+ - test/dummy/app/assets/javascripts/application.js
921
+ - test/dummy/app/jobs/products_create_job.rb
922
+ - test/dummy/app/jobs/products_update_job.rb
914
923
  - test/dummy/app/jobs/disco_app/app_installed_job.rb
915
924
  - test/dummy/app/jobs/disco_app/app_uninstalled_job.rb
925
+ - test/dummy/app/jobs/application_job.rb
916
926
  - test/dummy/app/jobs/products_delete_job.rb
917
- - test/dummy/app/jobs/products_update_job.rb
918
- - test/dummy/app/jobs/products_create_job.rb
919
927
  - test/dummy/app/jobs/carts_update_job.rb
920
- - test/dummy/app/jobs/application_job.rb
921
- - test/dummy/app/controllers/application_controller.rb
922
- - test/dummy/app/controllers/carrier_request_controller.rb
928
+ - test/dummy/app/controllers/home_controller.rb
923
929
  - test/dummy/app/controllers/disco_app/admin/shops_controller.rb
930
+ - test/dummy/app/controllers/carrier_request_controller.rb
924
931
  - test/dummy/app/controllers/proxy_controller.rb
925
- - test/dummy/app/controllers/home_controller.rb
926
- - test/dummy/app/views/snippets/widget.liquid.erb
927
- - test/dummy/app/views/home/index.html.erb
932
+ - test/dummy/app/controllers/application_controller.rb
933
+ - test/dummy/app/helpers/application_helper.rb
934
+ - test/dummy/app/models/disco_app/shop.rb
935
+ - test/dummy/app/models/product.rb
936
+ - test/dummy/app/models/widget_configuration.rb
937
+ - test/dummy/app/models/js_configuration.rb
938
+ - test/dummy/app/models/application_record.rb
939
+ - test/dummy/app/models/cart.rb
940
+ - test/dummy/app/views/assets/script_tag.js.erb
928
941
  - test/dummy/app/views/assets/widget.scss.erb
929
- - test/dummy/app/views/assets/widget.js.erb
930
942
  - test/dummy/app/views/assets/test.js.erb
931
- - test/dummy/app/views/assets/script_tag.js.erb
932
- - test/dummy/app/assets/javascripts/application.js
933
- - test/dummy/app/assets/stylesheets/application.scss
934
- - test/dummy/app/helpers/application_helper.rb
935
- - test/dummy/bin/rake
936
- - test/dummy/bin/setup
937
- - test/dummy/bin/bundle
938
- - test/dummy/bin/rails
939
- - test/dummy/config/secrets.yml
940
- - test/dummy/config/routes.rb
943
+ - test/dummy/app/views/assets/widget.js.erb
944
+ - test/dummy/app/views/snippets/widget.liquid.erb
945
+ - test/dummy/app/views/home/index.html.erb
946
+ - test/dummy/db/migrate/20161105054746_create_carts.rb
947
+ - test/dummy/db/migrate/20160530160739_create_asset_models.rb
948
+ - test/dummy/db/migrate/20160307182229_create_products.rb
949
+ - test/dummy/db/schema.rb
941
950
  - test/dummy/config/locales/en.yml
942
- - test/dummy/config/environments/production.rb
943
- - test/dummy/config/environments/development.rb
944
- - test/dummy/config/environments/test.rb
945
- - test/dummy/config/environment.rb
946
- - test/dummy/config/application.rb
947
- - test/dummy/config/database.yml
948
- - test/dummy/config/database.codeship.yml
949
- - test/dummy/config/boot.rb
950
- - test/dummy/config/initializers/shopify_app.rb
951
- - test/dummy/config/initializers/backtrace_silencers.rb
952
- - test/dummy/config/initializers/mime_types.rb
953
951
  - test/dummy/config/initializers/filter_parameter_logging.rb
954
- - test/dummy/config/initializers/shopify_session_repository.rb
952
+ - test/dummy/config/initializers/assets.rb
955
953
  - test/dummy/config/initializers/session_store.rb
954
+ - test/dummy/config/initializers/inflections.rb
955
+ - test/dummy/config/initializers/mime_types.rb
956
956
  - test/dummy/config/initializers/wrap_parameters.rb
957
- - test/dummy/config/initializers/assets.rb
958
- - test/dummy/config/initializers/cookies_serializer.rb
959
957
  - test/dummy/config/initializers/disco_app.rb
958
+ - test/dummy/config/initializers/shopify_app.rb
959
+ - test/dummy/config/initializers/shopify_session_repository.rb
960
+ - test/dummy/config/initializers/backtrace_silencers.rb
960
961
  - test/dummy/config/initializers/omniauth.rb
961
- - test/dummy/config/initializers/inflections.rb
962
- - test/dummy/config.ru
963
- - test/dummy/Rakefile
964
- - test/dummy/public/favicon.ico
965
- - test/dummy/public/422.html
966
- - test/dummy/public/500.html
967
- - test/dummy/public/404.html
968
- - test/dummy/db/schema.rb
969
- - test/dummy/db/migrate/20161105054746_create_carts.rb
970
- - test/dummy/db/migrate/20160530160739_create_asset_models.rb
971
- - test/dummy/db/migrate/20160307182229_create_products.rb
972
- - test/integration/synchronises_test.rb
973
- - test/models/disco_app/session_test.rb
974
- - test/models/disco_app/renders_assets_test.rb
975
- - test/models/disco_app/has_metafields_test.rb
976
- - test/models/disco_app/plan_test.rb
977
- - test/models/disco_app/shop_test.rb
978
- - test/models/disco_app/can_be_liquified_test.rb
979
- - test/models/disco_app/subscription_test.rb
980
- - test/disco_app_test.rb
981
- - test/vcr/webhook_failure.yml
982
- - test/support/test_shopify_api.rb
983
- - test/support/test_file_fixtures.rb
984
- - test/fixtures/products.yml
985
- - test/fixtures/disco_app/application_charges.yml
986
- - test/fixtures/disco_app/shops.yml
987
- - test/fixtures/disco_app/plan_codes.yml
988
- - test/fixtures/disco_app/subscriptions.yml
989
- - test/fixtures/disco_app/sources.yml
990
- - test/fixtures/disco_app/recurring_application_charges.yml
991
- - test/fixtures/disco_app/plans.yml
992
- - test/fixtures/widget_configurations.yml
962
+ - test/dummy/config/initializers/cookies_serializer.rb
963
+ - test/dummy/config/secrets.yml
964
+ - test/dummy/config/routes.rb
965
+ - test/dummy/config/database.codeship.yml
966
+ - test/dummy/config/environments/production.rb
967
+ - test/dummy/config/environments/test.rb
968
+ - test/dummy/config/environments/development.rb
969
+ - test/dummy/config/environment.rb
970
+ - test/dummy/config/boot.rb
971
+ - test/dummy/config/database.yml
972
+ - test/dummy/config/application.rb
993
973
  - test/fixtures/liquid/model.liquid
974
+ - test/fixtures/api/subscriptions/valid_request.json
975
+ - test/fixtures/api/widget_store/users.json
994
976
  - test/fixtures/api/widget_store/carrier_services.json
995
- - test/fixtures/api/widget_store/webhooks.json
977
+ - test/fixtures/api/widget_store/assets/create_test_js_response.json
978
+ - test/fixtures/api/widget_store/assets/create_widget_js_response.json
979
+ - test/fixtures/api/widget_store/assets/create_test_js_request.json
980
+ - test/fixtures/api/widget_store/assets/update_script_tag_request.json
981
+ - test/fixtures/api/widget_store/assets/create_script_tag_response.json
982
+ - test/fixtures/api/widget_store/assets/create_script_tag_js_response.json
983
+ - test/fixtures/api/widget_store/assets/create_widget_scss_request.json
984
+ - test/fixtures/api/widget_store/assets/update_script_tag_response.json
985
+ - test/fixtures/api/widget_store/assets/create_widget_liquid_request.json
986
+ - test/fixtures/api/widget_store/assets/create_script_tag_js_request.json
987
+ - test/fixtures/api/widget_store/assets/create_script_tag_request.json
988
+ - test/fixtures/api/widget_store/assets/get_script_tags_preexisting_response.json
989
+ - test/fixtures/api/widget_store/assets/create_widget_scss_response.json
990
+ - test/fixtures/api/widget_store/assets/create_widget_liquid_response.json
991
+ - test/fixtures/api/widget_store/assets/get_script_tags_preexisting_request.json
992
+ - test/fixtures/api/widget_store/assets/get_script_tags_empty_response.json
993
+ - test/fixtures/api/widget_store/assets/get_script_tags_empty_request.json
994
+ - test/fixtures/api/widget_store/assets/create_widget_js_request.json
996
995
  - test/fixtures/api/widget_store/products/write_metafields_single_namespace_response.json
996
+ - test/fixtures/api/widget_store/products/write_metafields_multiple_namespaces_request.json
997
997
  - test/fixtures/api/widget_store/products/write_metafields_multiple_namespaces_response.json
998
998
  - test/fixtures/api/widget_store/products/write_metafields_single_namespace_request.json
999
- - test/fixtures/api/widget_store/products/write_metafields_multiple_namespaces_request.json
1000
- - test/fixtures/api/widget_store/charges/activate_recurring_application_charge_request.json
1001
- - test/fixtures/api/widget_store/charges/activate_application_charge_request.json
1002
- - test/fixtures/api/widget_store/charges/get_pending_application_charge_response.json
1003
- - test/fixtures/api/widget_store/charges/activate_recurring_application_charge_response.json
1004
- - test/fixtures/api/widget_store/charges/create_application_charge_request.json
999
+ - test/fixtures/api/widget_store/webhooks.json
1005
1000
  - test/fixtures/api/widget_store/charges/create_application_charge_response.json
1001
+ - test/fixtures/api/widget_store/charges/create_second_recurring_application_charge_response.json
1006
1002
  - test/fixtures/api/widget_store/charges/activate_application_charge_response.json
1007
- - test/fixtures/api/widget_store/charges/create_recurring_application_charge_request.json
1008
- - test/fixtures/api/widget_store/charges/get_declined_application_charge_response.json
1009
- - test/fixtures/api/widget_store/charges/get_declined_recurring_application_charge_response.json
1003
+ - test/fixtures/api/widget_store/charges/create_application_charge_request.json
1004
+ - test/fixtures/api/widget_store/charges/create_recurring_application_charge_response.json
1010
1005
  - test/fixtures/api/widget_store/charges/get_pending_recurring_application_charge_response.json
1006
+ - test/fixtures/api/widget_store/charges/get_declined_recurring_application_charge_response.json
1007
+ - test/fixtures/api/widget_store/charges/get_pending_application_charge_response.json
1008
+ - test/fixtures/api/widget_store/charges/activate_recurring_application_charge_response.json
1011
1009
  - test/fixtures/api/widget_store/charges/get_accepted_recurring_application_charge_response.json
1012
- - test/fixtures/api/widget_store/charges/create_second_recurring_application_charge_request.json
1013
- - test/fixtures/api/widget_store/charges/create_second_recurring_application_charge_response.json
1010
+ - test/fixtures/api/widget_store/charges/activate_recurring_application_charge_request.json
1014
1011
  - test/fixtures/api/widget_store/charges/get_accepted_application_charge_response.json
1015
- - test/fixtures/api/widget_store/charges/create_recurring_application_charge_response.json
1016
- - test/fixtures/api/widget_store/users.json
1017
- - test/fixtures/api/widget_store/shop.json
1012
+ - test/fixtures/api/widget_store/charges/create_recurring_application_charge_request.json
1013
+ - test/fixtures/api/widget_store/charges/get_declined_application_charge_response.json
1014
+ - test/fixtures/api/widget_store/charges/create_second_recurring_application_charge_request.json
1015
+ - test/fixtures/api/widget_store/charges/activate_application_charge_request.json
1018
1016
  - test/fixtures/api/widget_store/carrier_services_create.json
1019
- - test/fixtures/api/widget_store/assets/create_widget_liquid_request.json
1020
- - test/fixtures/api/widget_store/assets/create_test_js_response.json
1021
- - test/fixtures/api/widget_store/assets/create_widget_js_request.json
1022
- - test/fixtures/api/widget_store/assets/update_script_tag_response.json
1023
- - test/fixtures/api/widget_store/assets/create_script_tag_js_response.json
1024
- - test/fixtures/api/widget_store/assets/create_script_tag_response.json
1025
- - test/fixtures/api/widget_store/assets/create_widget_scss_request.json
1026
- - test/fixtures/api/widget_store/assets/get_script_tags_preexisting_response.json
1027
- - test/fixtures/api/widget_store/assets/create_widget_liquid_response.json
1028
- - test/fixtures/api/widget_store/assets/get_script_tags_preexisting_request.json
1029
- - test/fixtures/api/widget_store/assets/create_widget_scss_response.json
1030
- - test/fixtures/api/widget_store/assets/create_script_tag_request.json
1031
- - test/fixtures/api/widget_store/assets/create_widget_js_response.json
1032
- - test/fixtures/api/widget_store/assets/get_script_tags_empty_request.json
1033
- - test/fixtures/api/widget_store/assets/update_script_tag_request.json
1034
- - test/fixtures/api/widget_store/assets/create_script_tag_js_request.json
1035
- - test/fixtures/api/widget_store/assets/create_test_js_request.json
1036
- - test/fixtures/api/widget_store/assets/get_script_tags_empty_response.json
1037
- - test/fixtures/api/subscriptions/valid_request.json
1038
- - test/fixtures/webhooks/product_deleted.json
1039
- - test/fixtures/webhooks/cart_updated.json
1040
- - test/fixtures/webhooks/product_updated.json
1041
- - test/fixtures/webhooks/product_created.json
1042
- - test/fixtures/webhooks/app_uninstalled.json
1017
+ - test/fixtures/api/widget_store/shop.json
1043
1018
  - test/fixtures/assets/test.js
1044
1019
  - test/fixtures/assets/test.min.js
1045
- - test/fixtures/carts.yml
1020
+ - test/fixtures/widget_configurations.yml
1046
1021
  - test/fixtures/js_configurations.yml
1022
+ - test/fixtures/disco_app/sources.yml
1023
+ - test/fixtures/disco_app/plan_codes.yml
1024
+ - test/fixtures/disco_app/shops.yml
1025
+ - test/fixtures/disco_app/application_charges.yml
1026
+ - test/fixtures/disco_app/subscriptions.yml
1027
+ - test/fixtures/disco_app/plans.yml
1028
+ - test/fixtures/disco_app/recurring_application_charges.yml
1029
+ - test/fixtures/carts.yml
1030
+ - test/fixtures/webhooks/cart_updated.json
1031
+ - test/fixtures/webhooks/app_uninstalled.json
1032
+ - test/fixtures/webhooks/product_updated.json
1033
+ - test/fixtures/webhooks/product_created.json
1034
+ - test/fixtures/webhooks/product_deleted.json
1035
+ - test/fixtures/products.yml
1036
+ - test/support/test_file_fixtures.rb
1037
+ - test/support/test_shopify_api.rb
1047
1038
  - test/test_helper.rb
1048
- - test/jobs/disco_app/synchronise_users_job_test.rb
1049
- - test/jobs/disco_app/synchronise_webhooks_job_test.rb
1039
+ - test/disco_app_test.rb
1050
1040
  - test/jobs/disco_app/app_uninstalled_job_test.rb
1051
1041
  - test/jobs/disco_app/synchronise_carrier_service_job_test.rb
1042
+ - test/jobs/disco_app/synchronise_users_job_test.rb
1052
1043
  - test/jobs/disco_app/send_subscription_job_test.rb
1044
+ - test/jobs/disco_app/synchronise_webhooks_job_test.rb
1053
1045
  - test/jobs/disco_app/app_installed_job_test.rb
1054
- - test/controllers/proxy_controller_test.rb
1046
+ - test/vcr/webhook_failure.yml
1055
1047
  - test/controllers/disco_app/install_controller_test.rb
1056
- - test/controllers/disco_app/charges_controller_test.rb
1048
+ - test/controllers/disco_app/webhooks_controller_test.rb
1057
1049
  - test/controllers/disco_app/admin/shops_controller_test.rb
1058
1050
  - test/controllers/disco_app/subscriptions_controller_test.rb
1059
- - test/controllers/disco_app/webhooks_controller_test.rb
1051
+ - test/controllers/disco_app/charges_controller_test.rb
1052
+ - test/controllers/proxy_controller_test.rb
1060
1053
  - test/controllers/home_controller_test.rb
1061
- - test/services/disco_app/subscription_service_test.rb
1054
+ - test/integration/synchronises_test.rb
1055
+ - test/clients/disco_app/api_client_test.rb
1056
+ - test/models/disco_app/plan_test.rb
1057
+ - test/models/disco_app/has_metafields_test.rb
1058
+ - test/models/disco_app/shop_test.rb
1059
+ - test/models/disco_app/session_test.rb
1060
+ - test/models/disco_app/subscription_test.rb
1061
+ - test/models/disco_app/can_be_liquified_test.rb
1062
+ - test/models/disco_app/renders_assets_test.rb
1062
1063
  - test/services/disco_app/charges_service_test.rb
1064
+ - test/services/disco_app/subscription_service_test.rb