disco_app 0.8.5 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/disco_app/components/filterable_shop_list.js.jsx +65 -0
  3. data/app/assets/javascripts/disco_app/components/shop_filter_tab.js.jsx +34 -0
  4. data/app/assets/javascripts/disco_app/components/shop_filter_tabs.js.jsx +21 -0
  5. data/app/assets/javascripts/disco_app/components/shop_list.js.jsx +140 -0
  6. data/app/assets/javascripts/disco_app/components/shop_row.js.jsx +27 -0
  7. data/app/controllers/disco_app/admin/app_settings_controller.rb +3 -0
  8. data/app/controllers/disco_app/admin/application_controller.rb +3 -0
  9. data/app/controllers/disco_app/admin/concerns/app_settings_controller.rb +24 -0
  10. data/app/controllers/disco_app/admin/concerns/authenticated_controller.rb +20 -0
  11. data/app/controllers/disco_app/admin/concerns/shops_controller.rb +7 -0
  12. data/app/controllers/disco_app/admin/resources/shops_controller.rb +3 -0
  13. data/app/controllers/disco_app/admin/shops_controller.rb +3 -0
  14. data/app/controllers/disco_app/charges_controller.rb +1 -1
  15. data/app/controllers/disco_app/concerns/app_proxy_controller.rb +40 -0
  16. data/app/controllers/disco_app/concerns/authenticated_controller.rb +42 -0
  17. data/app/controllers/disco_app/concerns/carrier_request_controller.rb +21 -0
  18. data/app/controllers/disco_app/install_controller.rb +1 -1
  19. data/app/models/disco_app/app_settings.rb +3 -0
  20. data/app/models/disco_app/concerns/app_settings.rb +7 -0
  21. data/app/models/disco_app/concerns/shop.rb +5 -0
  22. data/app/models/disco_app/concerns/{synchronises_with_shopify.rb → synchronises.rb} +16 -3
  23. data/app/resources/disco_app/admin/resources/concerns/shop_resource.rb +46 -0
  24. data/app/resources/disco_app/admin/resources/shop_resource.rb +4 -0
  25. data/app/views/disco_app/admin/app_settings/edit.html.erb +5 -0
  26. data/app/views/disco_app/admin/shops/index.html.erb +12 -0
  27. data/app/views/layouts/admin/_navbar.html.erb +24 -0
  28. data/app/views/layouts/admin.html.erb +27 -0
  29. data/config/routes.rb +15 -0
  30. data/db/migrate/20150525000000_create_shops_if_not_existent.rb +1 -1
  31. data/db/migrate/20160112233706_create_disco_app_sessions.rb +2 -2
  32. data/db/migrate/20160223111044_create_disco_app_settings.rb +8 -0
  33. data/lib/disco_app/engine.rb +1 -0
  34. data/lib/disco_app/version.rb +1 -1
  35. data/lib/generators/disco_app/adminify/adminify_generator.rb +35 -0
  36. data/lib/generators/disco_app/disco_app_generator.rb +1 -0
  37. data/lib/generators/disco_app/templates/controllers/home_controller.rb +2 -2
  38. data/test/controllers/disco_app/admin/shops_controller_test.rb +54 -0
  39. data/test/dummy/app/controllers/disco_app/admin/shops_controller.rb +8 -0
  40. data/test/dummy/app/controllers/home_controller.rb +2 -2
  41. data/test/dummy/app/controllers/proxy_controller.rb +1 -1
  42. data/test/dummy/app/jobs/products_create_job.rb +7 -0
  43. data/test/dummy/app/jobs/products_delete_job.rb +7 -0
  44. data/test/dummy/app/jobs/products_update_job.rb +7 -0
  45. data/test/dummy/app/models/product.rb +6 -0
  46. data/test/dummy/config/database.codeship.yml +23 -0
  47. data/test/dummy/config/database.yml +8 -13
  48. data/test/dummy/db/migrate/20160307182229_create_products.rb +11 -0
  49. data/test/dummy/db/schema.rb +27 -10
  50. data/test/fixtures/products.yml +4 -0
  51. data/test/fixtures/webhooks/product_created.json +167 -0
  52. data/test/fixtures/webhooks/product_deleted.json +3 -0
  53. data/test/fixtures/webhooks/product_updated.json +167 -0
  54. data/test/integration/synchronises_test.rb +55 -0
  55. metadata +69 -9
  56. data/app/controllers/disco_app/app_proxy_controller.rb +0 -42
  57. data/app/controllers/disco_app/authenticated_controller.rb +0 -44
  58. data/app/controllers/disco_app/carrier_request_controller.rb +0 -23
  59. data/test/integration/navigation_test.rb +0 -10
@@ -0,0 +1,167 @@
1
+ {
2
+ "id": 632910393,
3
+ "title": "IPod Nano - 8GB",
4
+ "body_html": "<p>It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.<\/p>",
5
+ "vendor": "Apple",
6
+ "product_type": "Cult Products",
7
+ "created_at": "2015-09-02T14:50:32-04:00",
8
+ "handle": "ipod-nano",
9
+ "updated_at": "2015-09-02T14:50:32-04:00",
10
+ "published_at": "2007-12-31T19:00:00-05:00",
11
+ "template_suffix": null,
12
+ "published_scope": "web",
13
+ "tags": "Emotive, Flash Memory, MP3, Music",
14
+ "variants": [
15
+ {
16
+ "id": 808950810,
17
+ "product_id": 632910392,
18
+ "title": "Pink",
19
+ "sku": "IPOD2008PINK",
20
+ "position": 1,
21
+ "grams": 200,
22
+ "inventory_policy": "continue",
23
+ "fulfillment_service": "manual",
24
+ "inventory_management": "shopify",
25
+ "price": "199.00",
26
+ "compare_at_price": null,
27
+ "option1": "Pink",
28
+ "option2": null,
29
+ "option3": null,
30
+ "created_at": "2015-09-02T14:50:32-04:00",
31
+ "updated_at": "2015-09-02T14:50:32-04:00",
32
+ "taxable": true,
33
+ "requires_shipping": true,
34
+ "barcode": "1234_pink",
35
+ "inventory_quantity": 10,
36
+ "old_inventory_quantity": 10,
37
+ "image_id": 562641783,
38
+ "weight": 0.2,
39
+ "weight_unit": "kg"
40
+ },
41
+ {
42
+ "id": 49148385,
43
+ "product_id": 632910392,
44
+ "title": "Red",
45
+ "sku": "IPOD2008RED",
46
+ "position": 2,
47
+ "grams": 200,
48
+ "inventory_policy": "continue",
49
+ "fulfillment_service": "manual",
50
+ "inventory_management": "shopify",
51
+ "price": "199.00",
52
+ "compare_at_price": null,
53
+ "option1": "Red",
54
+ "option2": null,
55
+ "option3": null,
56
+ "created_at": "2015-09-02T14:50:32-04:00",
57
+ "updated_at": "2015-09-02T14:50:32-04:00",
58
+ "taxable": true,
59
+ "requires_shipping": true,
60
+ "barcode": "1234_red",
61
+ "inventory_quantity": 20,
62
+ "old_inventory_quantity": 20,
63
+ "image_id": null,
64
+ "weight": 0.2,
65
+ "weight_unit": "kg"
66
+ },
67
+ {
68
+ "id": 39072856,
69
+ "product_id": 632910392,
70
+ "title": "Green",
71
+ "sku": "IPOD2008GREEN",
72
+ "position": 3,
73
+ "grams": 200,
74
+ "inventory_policy": "continue",
75
+ "fulfillment_service": "manual",
76
+ "inventory_management": "shopify",
77
+ "price": "199.00",
78
+ "compare_at_price": null,
79
+ "option1": "Green",
80
+ "option2": null,
81
+ "option3": null,
82
+ "created_at": "2015-09-02T14:50:32-04:00",
83
+ "updated_at": "2015-09-02T14:50:32-04:00",
84
+ "taxable": true,
85
+ "requires_shipping": true,
86
+ "barcode": "1234_green",
87
+ "inventory_quantity": 30,
88
+ "old_inventory_quantity": 30,
89
+ "image_id": null,
90
+ "weight": 0.2,
91
+ "weight_unit": "kg"
92
+ },
93
+ {
94
+ "id": 457924702,
95
+ "product_id": 632910392,
96
+ "title": "Black",
97
+ "sku": "IPOD2008BLACK",
98
+ "position": 4,
99
+ "grams": 200,
100
+ "inventory_policy": "continue",
101
+ "fulfillment_service": "manual",
102
+ "inventory_management": "shopify",
103
+ "price": "199.00",
104
+ "compare_at_price": null,
105
+ "option1": "Black",
106
+ "option2": null,
107
+ "option3": null,
108
+ "created_at": "2015-09-02T14:50:32-04:00",
109
+ "updated_at": "2015-09-02T14:50:32-04:00",
110
+ "taxable": true,
111
+ "requires_shipping": true,
112
+ "barcode": "1234_black",
113
+ "inventory_quantity": 40,
114
+ "old_inventory_quantity": 40,
115
+ "image_id": null,
116
+ "weight": 0.2,
117
+ "weight_unit": "kg"
118
+ }
119
+ ],
120
+ "options": [
121
+ {
122
+ "id": 594680422,
123
+ "product_id": 632910392,
124
+ "name": "Color",
125
+ "position": 1,
126
+ "values": [
127
+ "Pink",
128
+ "Red",
129
+ "Green",
130
+ "Black"
131
+ ]
132
+ }
133
+ ],
134
+ "images": [
135
+ {
136
+ "id": 850703190,
137
+ "product_id": 632910392,
138
+ "position": 1,
139
+ "created_at": "2015-09-02T14:50:32-04:00",
140
+ "updated_at": "2015-09-02T14:50:32-04:00",
141
+ "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano.png?v=1441219832",
142
+ "variant_ids": [
143
+ ]
144
+ },
145
+ {
146
+ "id": 562641783,
147
+ "product_id": 632910392,
148
+ "position": 2,
149
+ "created_at": "2015-09-02T14:50:32-04:00",
150
+ "updated_at": "2015-09-02T14:50:32-04:00",
151
+ "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano-2.png?v=1441219832",
152
+ "variant_ids": [
153
+ 808950810
154
+ ]
155
+ }
156
+ ],
157
+ "image": {
158
+ "id": 850703190,
159
+ "product_id": 632910392,
160
+ "position": 1,
161
+ "created_at": "2015-09-02T14:50:32-04:00",
162
+ "updated_at": "2015-09-02T14:50:32-04:00",
163
+ "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano.png?v=1441219832",
164
+ "variant_ids": [
165
+ ]
166
+ }
167
+ }
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ class SynchronisesTest < ActionDispatch::IntegrationTest
4
+ fixtures :all
5
+
6
+ def setup
7
+ @shop = disco_app_shops(:widget_store)
8
+ @product = products(:ipod)
9
+ @routes = DiscoApp::Engine.routes
10
+ end
11
+
12
+ def teardown
13
+ @shop = nil
14
+ end
15
+
16
+ test 'new product is created when product created webhook is received' do
17
+ post_webhook('product_created', :'products/create')
18
+
19
+ # Assert the product was created locally, with the correct attributes.
20
+ product = Product.find(632910392)
21
+ assert_equal 'IPod Nano - 8GB', product.data['title']
22
+ end
23
+
24
+ test 'existing product is updated when product updated webhook is received' do
25
+ assert_equal({}, @product.data)
26
+
27
+ post_webhook('product_updated', :'products/update')
28
+
29
+ # Assert the product was updated locally, with the correct attributes.
30
+ @product.reload
31
+ assert_equal 632910393, @product.id
32
+ assert_equal 'IPod Nano - 8GB', @product.data['title']
33
+ end
34
+
35
+ test 'existing product is deleted when product deleted webhook is receieved' do
36
+ post_webhook('product_deleted', :'products/delete')
37
+ assert_equal 0, Product.count
38
+ end
39
+
40
+ private
41
+
42
+ def webhooks_url
43
+ DiscoApp::Engine.routes.url_helpers.webhooks_url
44
+ end
45
+
46
+ def post_webhook(fixture_name, webhook_topic)
47
+ body = webhook_fixture(fixture_name)
48
+ post(webhooks_url, body, {
49
+ HTTP_X_SHOPIFY_TOPIC: webhook_topic,
50
+ HTTP_X_SHOPIFY_SHOP_DOMAIN: @shop.shopify_domain,
51
+ HTTP_X_SHOPIFY_HMAC_SHA256: DiscoApp::WebhookService.calculated_hmac(body, ShopifyApp.configuration.secret)
52
+ })
53
+ end
54
+
55
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: disco_app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.5
4
+ version: 0.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Ballard
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 4.2.5.1
19
+ version: 4.2.5.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 4.2.5.1
26
+ version: 4.2.5.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: shopify_app
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - '='
179
179
  - !ruby/object:Gem::Version
180
180
  version: 1.1.11
181
+ - !ruby/object:Gem::Dependency
182
+ name: jsonapi-resources
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 0.7.0
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 0.7.0
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: sqlite3
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -272,6 +286,11 @@ files:
272
286
  - Rakefile
273
287
  - app/assets/images/disco_app/icon.svg
274
288
  - app/assets/javascripts/disco_app/components.js
289
+ - app/assets/javascripts/disco_app/components/filterable_shop_list.js.jsx
290
+ - app/assets/javascripts/disco_app/components/shop_filter_tab.js.jsx
291
+ - app/assets/javascripts/disco_app/components/shop_filter_tabs.js.jsx
292
+ - app/assets/javascripts/disco_app/components/shop_list.js.jsx
293
+ - app/assets/javascripts/disco_app/components/shop_row.js.jsx
275
294
  - app/assets/javascripts/disco_app/components/shopify_admin_link.js.jsx
276
295
  - app/assets/javascripts/disco_app/disco_app.js
277
296
  - app/assets/javascripts/disco_app/frame.js
@@ -293,10 +312,17 @@ files:
293
312
  - app/assets/stylesheets/disco_app/frame/_forms.scss
294
313
  - app/assets/stylesheets/disco_app/frame/_layout.scss
295
314
  - app/assets/stylesheets/disco_app/frame/_type.scss
296
- - app/controllers/disco_app/app_proxy_controller.rb
297
- - app/controllers/disco_app/authenticated_controller.rb
298
- - app/controllers/disco_app/carrier_request_controller.rb
315
+ - app/controllers/disco_app/admin/app_settings_controller.rb
316
+ - app/controllers/disco_app/admin/application_controller.rb
317
+ - app/controllers/disco_app/admin/concerns/app_settings_controller.rb
318
+ - app/controllers/disco_app/admin/concerns/authenticated_controller.rb
319
+ - app/controllers/disco_app/admin/concerns/shops_controller.rb
320
+ - app/controllers/disco_app/admin/resources/shops_controller.rb
321
+ - app/controllers/disco_app/admin/shops_controller.rb
299
322
  - app/controllers/disco_app/charges_controller.rb
323
+ - app/controllers/disco_app/concerns/app_proxy_controller.rb
324
+ - app/controllers/disco_app/concerns/authenticated_controller.rb
325
+ - app/controllers/disco_app/concerns/carrier_request_controller.rb
300
326
  - app/controllers/disco_app/frame_controller.rb
301
327
  - app/controllers/disco_app/install_controller.rb
302
328
  - app/controllers/disco_app/webhooks_controller.rb
@@ -312,19 +338,25 @@ files:
312
338
  - app/jobs/disco_app/shop_update_job.rb
313
339
  - app/jobs/disco_app/synchronise_carrier_service_job.rb
314
340
  - app/jobs/disco_app/synchronise_webhooks_job.rb
341
+ - app/models/disco_app/app_settings.rb
342
+ - app/models/disco_app/concerns/app_settings.rb
315
343
  - app/models/disco_app/concerns/plan.rb
316
344
  - app/models/disco_app/concerns/shop.rb
317
345
  - app/models/disco_app/concerns/subscription.rb
318
- - app/models/disco_app/concerns/synchronises_with_shopify.rb
346
+ - app/models/disco_app/concerns/synchronises.rb
319
347
  - app/models/disco_app/plan.rb
320
348
  - app/models/disco_app/session_storage.rb
321
349
  - app/models/disco_app/shop.rb
322
350
  - app/models/disco_app/subscription.rb
351
+ - app/resources/disco_app/admin/resources/concerns/shop_resource.rb
352
+ - app/resources/disco_app/admin/resources/shop_resource.rb
323
353
  - app/services/disco_app/carrier_request_service.rb
324
354
  - app/services/disco_app/charges_service.rb
325
355
  - app/services/disco_app/proxy_service.rb
326
356
  - app/services/disco_app/subscription_service.rb
327
357
  - app/services/disco_app/webhook_service.rb
358
+ - app/views/disco_app/admin/app_settings/edit.html.erb
359
+ - app/views/disco_app/admin/shops/index.html.erb
328
360
  - app/views/disco_app/charges/activate.html.erb
329
361
  - app/views/disco_app/charges/create.html.erb
330
362
  - app/views/disco_app/charges/new.html.erb
@@ -334,6 +366,8 @@ files:
334
366
  - app/views/disco_app/proxy_errors/404.html.erb
335
367
  - app/views/disco_app/shared/_card.html.erb
336
368
  - app/views/disco_app/shared/_section.html.erb
369
+ - app/views/layouts/admin.html.erb
370
+ - app/views/layouts/admin/_navbar.html.erb
337
371
  - app/views/layouts/application.html.erb
338
372
  - app/views/layouts/embedded_app.html.erb
339
373
  - app/views/layouts/embedded_app_modal.html.erb
@@ -349,6 +383,7 @@ files:
349
383
  - db/migrate/20151017234409_move_shop_to_disco_app_engine.rb
350
384
  - db/migrate/20160112233706_create_disco_app_sessions.rb
351
385
  - db/migrate/20160113194418_add_shop_id_to_disco_app_sessions.rb
386
+ - db/migrate/20160223111044_create_disco_app_settings.rb
352
387
  - lib/disco_app.rb
353
388
  - lib/disco_app/configuration.rb
354
389
  - lib/disco_app/engine.rb
@@ -357,6 +392,7 @@ files:
357
392
  - lib/disco_app/test_help.rb
358
393
  - lib/disco_app/version.rb
359
394
  - lib/generators/disco_app/USAGE
395
+ - lib/generators/disco_app/adminify/adminify_generator.rb
360
396
  - lib/generators/disco_app/disco_app_generator.rb
361
397
  - lib/generators/disco_app/mailify/mailify_generator.rb
362
398
  - lib/generators/disco_app/monitorify/monitorify_generator.rb
@@ -377,6 +413,7 @@ files:
377
413
  - lib/tasks/sessions.rake
378
414
  - lib/tasks/start.rake
379
415
  - lib/tasks/webhooks.rake
416
+ - test/controllers/disco_app/admin/shops_controller_test.rb
380
417
  - test/controllers/disco_app/install_controller_test.rb
381
418
  - test/controllers/disco_app/webhooks_controller_test.rb
382
419
  - test/controllers/home_controller_test.rb
@@ -386,11 +423,16 @@ files:
386
423
  - test/dummy/app/assets/javascripts/application.js
387
424
  - test/dummy/app/assets/stylesheets/application.scss
388
425
  - test/dummy/app/controllers/application_controller.rb
426
+ - test/dummy/app/controllers/disco_app/admin/shops_controller.rb
389
427
  - test/dummy/app/controllers/home_controller.rb
390
428
  - test/dummy/app/controllers/proxy_controller.rb
391
429
  - test/dummy/app/helpers/application_helper.rb
392
430
  - test/dummy/app/jobs/disco_app/app_uninstalled_job.rb
431
+ - test/dummy/app/jobs/products_create_job.rb
432
+ - test/dummy/app/jobs/products_delete_job.rb
433
+ - test/dummy/app/jobs/products_update_job.rb
393
434
  - test/dummy/app/models/disco_app/shop.rb
435
+ - test/dummy/app/models/product.rb
394
436
  - test/dummy/app/views/home/index.html.erb
395
437
  - test/dummy/bin/bundle
396
438
  - test/dummy/bin/rails
@@ -399,6 +441,7 @@ files:
399
441
  - test/dummy/config.ru
400
442
  - test/dummy/config/application.rb
401
443
  - test/dummy/config/boot.rb
444
+ - test/dummy/config/database.codeship.yml
402
445
  - test/dummy/config/database.yml
403
446
  - test/dummy/config/environment.rb
404
447
  - test/dummy/config/environments/development.rb
@@ -419,6 +462,7 @@ files:
419
462
  - test/dummy/config/locales/en.yml
420
463
  - test/dummy/config/routes.rb
421
464
  - test/dummy/config/secrets.yml
465
+ - test/dummy/db/migrate/20160307182229_create_products.rb
422
466
  - test/dummy/db/schema.rb
423
467
  - test/dummy/public/404.html
424
468
  - test/dummy/public/422.html
@@ -429,8 +473,12 @@ files:
429
473
  - test/fixtures/disco_app/plans.yml
430
474
  - test/fixtures/disco_app/shops.yml
431
475
  - test/fixtures/disco_app/subscriptions.yml
476
+ - test/fixtures/products.yml
432
477
  - test/fixtures/webhooks/app_uninstalled.json
433
- - test/integration/navigation_test.rb
478
+ - test/fixtures/webhooks/product_created.json
479
+ - test/fixtures/webhooks/product_deleted.json
480
+ - test/fixtures/webhooks/product_updated.json
481
+ - test/integration/synchronises_test.rb
434
482
  - test/jobs/disco_app/app_installed_job_test.rb
435
483
  - test/jobs/disco_app/app_uninstalled_job_test.rb
436
484
  - test/models/disco_app/plan_test.rb
@@ -477,13 +525,19 @@ test_files:
477
525
  - test/dummy/config.ru
478
526
  - test/dummy/app/assets/stylesheets/application.scss
479
527
  - test/dummy/app/assets/javascripts/application.js
528
+ - test/dummy/app/jobs/products_create_job.rb
529
+ - test/dummy/app/jobs/products_update_job.rb
480
530
  - test/dummy/app/jobs/disco_app/app_uninstalled_job.rb
531
+ - test/dummy/app/jobs/products_delete_job.rb
481
532
  - test/dummy/app/controllers/home_controller.rb
533
+ - test/dummy/app/controllers/disco_app/admin/shops_controller.rb
482
534
  - test/dummy/app/controllers/proxy_controller.rb
483
535
  - test/dummy/app/controllers/application_controller.rb
484
536
  - test/dummy/app/helpers/application_helper.rb
485
537
  - test/dummy/app/models/disco_app/shop.rb
538
+ - test/dummy/app/models/product.rb
486
539
  - test/dummy/app/views/home/index.html.erb
540
+ - test/dummy/db/migrate/20160307182229_create_products.rb
487
541
  - test/dummy/db/schema.rb
488
542
  - test/dummy/config/locales/en.yml
489
543
  - test/dummy/config/initializers/filter_parameter_logging.rb
@@ -500,6 +554,7 @@ test_files:
500
554
  - test/dummy/config/initializers/cookies_serializer.rb
501
555
  - test/dummy/config/secrets.yml
502
556
  - test/dummy/config/routes.rb
557
+ - test/dummy/config/database.codeship.yml
503
558
  - test/dummy/config/environments/production.rb
504
559
  - test/dummy/config/environments/test.rb
505
560
  - test/dummy/config/environments/development.rb
@@ -513,6 +568,10 @@ test_files:
513
568
  - test/fixtures/disco_app/subscriptions.yml
514
569
  - test/fixtures/disco_app/plans.yml
515
570
  - test/fixtures/webhooks/app_uninstalled.json
571
+ - test/fixtures/webhooks/product_updated.json
572
+ - test/fixtures/webhooks/product_created.json
573
+ - test/fixtures/webhooks/product_deleted.json
574
+ - test/fixtures/products.yml
516
575
  - test/support/test_file_fixtures.rb
517
576
  - test/test_helper.rb
518
577
  - test/disco_app_test.rb
@@ -520,9 +579,10 @@ test_files:
520
579
  - test/jobs/disco_app/app_installed_job_test.rb
521
580
  - test/controllers/disco_app/install_controller_test.rb
522
581
  - test/controllers/disco_app/webhooks_controller_test.rb
582
+ - test/controllers/disco_app/admin/shops_controller_test.rb
523
583
  - test/controllers/proxy_controller_test.rb
524
584
  - test/controllers/home_controller_test.rb
525
- - test/integration/navigation_test.rb
585
+ - test/integration/synchronises_test.rb
526
586
  - test/models/disco_app/plan_test.rb
527
587
  - test/models/disco_app/shop_test.rb
528
588
  - test/models/disco_app/session_test.rb
@@ -1,42 +0,0 @@
1
- module DiscoApp
2
- module AppProxyController
3
- extend ActiveSupport::Concern
4
-
5
- included do
6
- before_action :verify_proxy_signature
7
- before_action :shopify_shop
8
- after_action :add_liquid_header
9
-
10
- rescue_from ActiveRecord::RecordNotFound do |exception|
11
- render_error 404
12
- end
13
- end
14
-
15
- private
16
-
17
- def verify_proxy_signature
18
- unless proxy_signature_is_valid?
19
- head :unauthorized
20
- end
21
- end
22
-
23
- def proxy_signature_is_valid?
24
- return true if DiscoApp.configuration.skip_proxy_verification?
25
- DiscoApp::ProxyService.proxy_signature_is_valid?(request.query_string, ShopifyApp.configuration.secret)
26
- end
27
-
28
- def shopify_shop
29
- @shop = Shop.find_by_shopify_domain!(params[:shop])
30
- end
31
-
32
- def add_liquid_header
33
- response.headers['Content-Type'] = 'application/liquid'
34
- end
35
-
36
- def render_error(status)
37
- add_liquid_header
38
- render "disco_app/proxy_errors/#{status}", status: status
39
- end
40
-
41
- end
42
- end
@@ -1,44 +0,0 @@
1
- module DiscoApp
2
- module AuthenticatedController
3
- extend ActiveSupport::Concern
4
-
5
- included do
6
- before_action :login_again_if_different_shop
7
- before_action :shopify_shop
8
- before_action :verify_status
9
- around_filter :shopify_session
10
- layout 'embedded_app'
11
- end
12
-
13
- private
14
-
15
- def shopify_shop
16
- if shop_session
17
- @shop = Shop.find_by!(shopify_domain: @shop_session.url)
18
- else
19
- redirect_to_login
20
- end
21
- end
22
-
23
- def verify_status
24
- if not (@shop.charge_active? or @shop.charge_waived?)
25
- redirect_if_not_current_path(disco_app.new_charge_path)
26
- elsif @shop.charge_accepted?
27
- redirect_if_not_current_path(disco_app.activate_charge_path)
28
- elsif @shop.never_installed? or @shop.uninstalled?
29
- redirect_if_not_current_path(disco_app.install_path)
30
- elsif @shop.awaiting_install? or @shop.installing?
31
- redirect_if_not_current_path(disco_app.installing_path)
32
- elsif @shop.awaiting_uninstall? or @shop.uninstalling?
33
- redirect_if_not_current_path(disco_app.uninstalling_path)
34
- end
35
- end
36
-
37
- def redirect_if_not_current_path(target)
38
- if request.path != target
39
- redirect_to target
40
- end
41
- end
42
-
43
- end
44
- end
@@ -1,23 +0,0 @@
1
- module DiscoApp
2
- module CarrierRequestController
3
- extend ActiveSupport::Concern
4
-
5
- included do
6
- before_action :verify_carrier_request
7
- end
8
-
9
- private
10
-
11
- def verify_carrier_request
12
- unless carrier_request_signature_is_valid?
13
- head :unauthorized
14
- end
15
- end
16
-
17
- def carrier_request_signature_is_valid?
18
- return true if DiscoApp.configuration.skip_carrier_request_verification?
19
- DiscoApp::CarrierRequestService.is_valid_hmac?(request.body.read.to_s, ShopifyApp.configuration.secret, request.headers['HTTP_X_SHOPIFY_HMAC_SHA256'])
20
- end
21
-
22
- end
23
- end
@@ -1,10 +0,0 @@
1
- require 'test_helper'
2
-
3
- class NavigationTest < ActionDispatch::IntegrationTest
4
- fixtures :all
5
-
6
- # test "the truth" do
7
- # assert true
8
- # end
9
- end
10
-