disco_app 0.13.4 → 0.13.5
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 +4 -4
- data/app/jobs/disco_app/shop_job.rb +10 -3
- data/app/models/disco_app/concerns/shop.rb +8 -3
- data/app/models/disco_app/concerns/synchronises.rb +9 -0
- data/app/models/disco_app/concerns/taggable.rb +7 -3
- data/app/models/disco_app/concerns/user.rb +3 -1
- data/app/resources/disco_app/admin/resources/concerns/shop_resource.rb +4 -4
- data/db/migrate/20170606160751_fix_disco_app_users_index.rb +6 -0
- data/lib/disco_app/version.rb +1 -1
- data/lib/generators/disco_app/templates/config/database.yml.tt +1 -0
- data/test/dummy/app/models/cart.rb +3 -3
- data/test/dummy/app/models/disco_app/shop.rb +1 -1
- data/test/dummy/config/database.yml +1 -0
- data/test/dummy/db/schema.rb +2 -2
- data/test/integration/synchronises_test.rb +3 -3
- data/test/jobs/disco_app/app_installed_job_test.rb +1 -1
- data/test/jobs/disco_app/app_uninstalled_job_test.rb +1 -1
- metadata +2 -3
- data/test/dummy/config/database.gitlab-ci.yml +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cbe53474f9532175efcd1c15e0cea3a5673bead56896a9686e89dfc0678523c
|
4
|
+
data.tar.gz: fd20dc03f5c76e649505c2daf34005492a3a46929cd73f411139c004e178bfb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d2f69daede5c2304456a14d92cffaec906474b70095dd47e516f405cf58d206b4e04a36d5a336946a062c7d191f29b6667331429a955dfe9eeeeefbcaff44a7
|
7
|
+
data.tar.gz: 48ee3ac8fc12dfe21528562ff86fe2094037a3ca582a505927033b52e90a634057cf869621e535a92bb2667d4d6fb99e255cdb1e3be07e6cfc5ff63faafbfc05
|
@@ -2,6 +2,9 @@
|
|
2
2
|
# particular Shop's API session. The first argument to any job inheriting from
|
3
3
|
# this class must be the domain of the relevant store, so that the appropriate
|
4
4
|
# Shop model can be fetched and the temporary API session created.
|
5
|
+
|
6
|
+
require 'rollbar'
|
7
|
+
|
5
8
|
class DiscoApp::ShopJob < ActiveJob::Base
|
6
9
|
|
7
10
|
queue_as :default
|
@@ -19,9 +22,13 @@ class DiscoApp::ShopJob < ActiveJob::Base
|
|
19
22
|
end
|
20
23
|
|
21
24
|
def shop_context(job, block)
|
22
|
-
|
23
|
-
block.call(job.arguments)
|
24
|
-
|
25
|
+
Rollbar.scoped(rollbar_scope) do
|
26
|
+
@shop.with_api_context { block.call(job.arguments) }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def rollbar_scope
|
31
|
+
{ person: { id: @shop.id, username: @shop.shopify_domain } }
|
25
32
|
end
|
26
33
|
|
27
34
|
end
|
@@ -66,7 +66,7 @@ module DiscoApp::Concerns::Shop
|
|
66
66
|
|
67
67
|
# Convenience method to get the email of the shop's admin, to display in Rollbar.
|
68
68
|
def email
|
69
|
-
|
69
|
+
data[:email]
|
70
70
|
end
|
71
71
|
|
72
72
|
def installed_duration
|
@@ -77,7 +77,7 @@ module DiscoApp::Concerns::Shop
|
|
77
77
|
# shop's "data" hash, return the default Rails zone (which should be UTC).
|
78
78
|
def time_zone
|
79
79
|
@time_zone ||= begin
|
80
|
-
Time.find_zone!(data[
|
80
|
+
Time.find_zone!(data[:timezone].to_s.gsub(/^\(.+\)\s/, ''))
|
81
81
|
rescue ArgumentError
|
82
82
|
Time.zone
|
83
83
|
end
|
@@ -86,7 +86,7 @@ module DiscoApp::Concerns::Shop
|
|
86
86
|
# Return the shop's configured locale as a symbol. If none exists for some
|
87
87
|
# reason, 'en' is returned.
|
88
88
|
def locale
|
89
|
-
(data[
|
89
|
+
(data[:primary_locale] || 'en').to_sym
|
90
90
|
end
|
91
91
|
|
92
92
|
# Return an instance of the Disco API client.
|
@@ -94,6 +94,11 @@ module DiscoApp::Concerns::Shop
|
|
94
94
|
@api_client ||= DiscoApp::ApiClient.new(self, ENV['DISCO_API_URL'])
|
95
95
|
end
|
96
96
|
|
97
|
+
# Override the "read" data attribute to allow indifferent access.
|
98
|
+
def data
|
99
|
+
read_attribute(:data).with_indifferent_access
|
100
|
+
end
|
101
|
+
|
97
102
|
end
|
98
103
|
|
99
104
|
end
|
@@ -2,15 +2,19 @@ module DiscoApp::Concerns::Taggable
|
|
2
2
|
extend ActiveSupport::Concern
|
3
3
|
|
4
4
|
def tags
|
5
|
-
data[
|
5
|
+
data[:tags].split(',').map(&:strip)
|
6
6
|
end
|
7
7
|
|
8
8
|
def add_tag(tag)
|
9
|
-
data[
|
9
|
+
data[:tags] = (tags + [tag]).uniq.join(',')
|
10
10
|
end
|
11
11
|
|
12
12
|
def remove_tag(tag)
|
13
|
-
data[
|
13
|
+
data[:tags] = (tags - [tag]).uniq.join(',')
|
14
|
+
end
|
15
|
+
|
16
|
+
def has_tag?(tag_to_check)
|
17
|
+
tags.any? { |tag| tag.casecmp(tag_to_check) }
|
14
18
|
end
|
15
19
|
|
16
20
|
end
|
@@ -5,13 +5,15 @@ module DiscoApp::Concerns::User
|
|
5
5
|
belongs_to :shop
|
6
6
|
|
7
7
|
def self.create_from_auth(shopify_user, shop)
|
8
|
-
user = self.find_or_create_by(id: shopify_user.id, shop: shop)
|
8
|
+
user = self.find_or_create_by!(id: shopify_user.id, shop: shop)
|
9
9
|
user.update(
|
10
10
|
first_name: shopify_user.first_name || '',
|
11
11
|
last_name: shopify_user.last_name || '',
|
12
12
|
email: shopify_user.email
|
13
13
|
)
|
14
14
|
user
|
15
|
+
rescue ActiveRecord::RecordNotUnique, PG::UniqueViolation
|
16
|
+
retry
|
15
17
|
end
|
16
18
|
|
17
19
|
end
|
@@ -46,19 +46,19 @@ module DiscoApp::Admin::Resources::Concerns::ShopResource
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def email
|
49
|
-
@model.data[
|
49
|
+
@model.data[:email]
|
50
50
|
end
|
51
51
|
|
52
52
|
def country_name
|
53
|
-
@model.data[
|
53
|
+
@model.data[:country_name]
|
54
54
|
end
|
55
55
|
|
56
56
|
def currency
|
57
|
-
@model.data[
|
57
|
+
@model.data[:currency]
|
58
58
|
end
|
59
59
|
|
60
60
|
def plan_display_name
|
61
|
-
@model.data[
|
61
|
+
@model.data[:plan_display_name]
|
62
62
|
end
|
63
63
|
|
64
64
|
def current_subscription_id
|
data/lib/disco_app/version.rb
CHANGED
@@ -8,17 +8,17 @@ class Cart < ActiveRecord::Base
|
|
8
8
|
before_save :set_token
|
9
9
|
|
10
10
|
def self.synchronise_by(shop, data)
|
11
|
-
{ token: data[
|
11
|
+
{ token: data[:token] }
|
12
12
|
end
|
13
13
|
|
14
14
|
def total_price
|
15
|
-
data[
|
15
|
+
data[:line_items].map { |line_item| line_item[:line_price].to_f }.sum
|
16
16
|
end
|
17
17
|
|
18
18
|
private
|
19
19
|
|
20
20
|
def set_token
|
21
|
-
self.token = data[
|
21
|
+
self.token = data[:token]
|
22
22
|
end
|
23
23
|
|
24
24
|
end
|
@@ -11,7 +11,7 @@ class DiscoApp::Shop < ActiveRecord::Base
|
|
11
11
|
# Extend the Shop model to return the Shop's country as an ActiveUtils country.
|
12
12
|
def country
|
13
13
|
begin
|
14
|
-
ActiveUtils::Country.find(data[
|
14
|
+
ActiveUtils::Country.find(data[:country_name])
|
15
15
|
rescue ActiveUtils::InvalidCountryCodeError
|
16
16
|
nil
|
17
17
|
end
|
data/test/dummy/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
14
|
+
ActiveRecord::Schema.define(version: 20170606160751) do
|
15
15
|
|
16
16
|
# These are extensions that must be enabled in order to support this database
|
17
17
|
enable_extension "plpgsql"
|
@@ -136,7 +136,7 @@ ActiveRecord::Schema.define(version: 20170327214540) do
|
|
136
136
|
t.datetime "updated_at", null: false
|
137
137
|
end
|
138
138
|
|
139
|
-
add_index "disco_app_users", ["shop_id"], name: "
|
139
|
+
add_index "disco_app_users", ["id", "shop_id"], name: "index_disco_app_users_on_id_and_shop_id", unique: true, using: :btree
|
140
140
|
|
141
141
|
create_table "js_configurations", force: :cascade do |t|
|
142
142
|
t.integer "shop_id", limit: 8
|
@@ -18,7 +18,7 @@ class SynchronisesTest < ActionDispatch::IntegrationTest
|
|
18
18
|
|
19
19
|
# Assert the product was created locally, with the correct attributes.
|
20
20
|
product = Product.find(632910392)
|
21
|
-
assert_equal 'IPod Nano - 8GB', product.data[
|
21
|
+
assert_equal 'IPod Nano - 8GB', product.data[:title]
|
22
22
|
end
|
23
23
|
|
24
24
|
test 'existing product is updated when product updated webhook is received' do
|
@@ -29,7 +29,7 @@ class SynchronisesTest < ActionDispatch::IntegrationTest
|
|
29
29
|
# Assert the product was updated locally, with the correct attributes.
|
30
30
|
@product.reload
|
31
31
|
assert_equal 632910393, @product.id
|
32
|
-
assert_equal 'IPod Nano - 8GB', @product.data[
|
32
|
+
assert_equal 'IPod Nano - 8GB', @product.data[:title]
|
33
33
|
end
|
34
34
|
|
35
35
|
test 'existing product is deleted when product deleted webhook is received' do
|
@@ -53,7 +53,7 @@ class SynchronisesTest < ActionDispatch::IntegrationTest
|
|
53
53
|
# Assert the product was updated locally, with the correct attributes.
|
54
54
|
@product.reload
|
55
55
|
assert_equal 632910393, @product.id
|
56
|
-
assert_equal 'IPod Nano - 8GB', @product.data[
|
56
|
+
assert_equal 'IPod Nano - 8GB', @product.data[:title]
|
57
57
|
end
|
58
58
|
|
59
59
|
private
|
@@ -27,7 +27,7 @@ class DiscoApp::AppInstalledJobTest < ActionController::TestCase
|
|
27
27
|
|
28
28
|
# Assert the update shop job was performed.
|
29
29
|
@shop.reload
|
30
|
-
assert_equal 'United States', @shop.data[
|
30
|
+
assert_equal 'United States', @shop.data[:country_name]
|
31
31
|
end
|
32
32
|
|
33
33
|
test 'app installed job automatically subscribes stores to the correct default plan' do
|
@@ -25,6 +25,6 @@ class DiscoApp::AppUninstalledJobTest < ActionController::TestCase
|
|
25
25
|
test 'app uninstalled job can be extended using concerns' do
|
26
26
|
assert_performed_jobs 2
|
27
27
|
@shop.reload
|
28
|
-
assert_equal 'Nowhere', @shop.data[
|
28
|
+
assert_equal 'Nowhere', @shop.data[:country_name] # Assert extended method called.
|
29
29
|
end
|
30
30
|
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.13.
|
4
|
+
version: 0.13.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Ballard
|
@@ -642,6 +642,7 @@ files:
|
|
642
642
|
- db/migrate/20170315062548_create_disco_app_sources.rb
|
643
643
|
- db/migrate/20170315062629_add_sources_to_shop_subscriptions.rb
|
644
644
|
- db/migrate/20170327214540_create_disco_app_users.rb
|
645
|
+
- db/migrate/20170606160751_fix_disco_app_users_index.rb
|
645
646
|
- lib/disco_app.rb
|
646
647
|
- lib/disco_app/configuration.rb
|
647
648
|
- lib/disco_app/constants.rb
|
@@ -717,7 +718,6 @@ files:
|
|
717
718
|
- test/dummy/config/application.rb
|
718
719
|
- test/dummy/config/boot.rb
|
719
720
|
- test/dummy/config/database.codeship.yml
|
720
|
-
- test/dummy/config/database.gitlab-ci.yml
|
721
721
|
- test/dummy/config/database.yml
|
722
722
|
- test/dummy/config/environment.rb
|
723
723
|
- test/dummy/config/environments/development.rb
|
@@ -912,7 +912,6 @@ test_files:
|
|
912
912
|
- test/dummy/config/environment.rb
|
913
913
|
- test/dummy/config/boot.rb
|
914
914
|
- test/dummy/config/database.yml
|
915
|
-
- test/dummy/config/database.gitlab-ci.yml
|
916
915
|
- test/dummy/config/application.rb
|
917
916
|
- test/fixtures/liquid/model.liquid
|
918
917
|
- test/fixtures/api/subscriptions/valid_request.json
|
@@ -1,24 +0,0 @@
|
|
1
|
-
development:
|
2
|
-
adapter: postgresql
|
3
|
-
host: postgres
|
4
|
-
encoding: unicode
|
5
|
-
pool: 10
|
6
|
-
username: disco_pguser
|
7
|
-
template: template1
|
8
|
-
password: disco_pgpassword
|
9
|
-
database: disco_app
|
10
|
-
port: 5432
|
11
|
-
sslmode: disable
|
12
|
-
|
13
|
-
test:
|
14
|
-
adapter: postgresql
|
15
|
-
host: postgres
|
16
|
-
encoding: unicode
|
17
|
-
pool: 10
|
18
|
-
username: disco_pguser
|
19
|
-
template: template1
|
20
|
-
password: disco_pgpassword
|
21
|
-
database: disco_app
|
22
|
-
port: 5432
|
23
|
-
sslmode: disable
|
24
|
-
|