workarea-core 3.4.30 → 3.4.31

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: 2a0f1a32a380e8018ce48fa9c609e9cb820ccc1292c053101b4954caca8ae458
4
- data.tar.gz: e6f464bf2b5c443ba95403493f520e09fb8fda6457526486cf1084eabf2d6c7e
3
+ metadata.gz: 299de23bea1f758a6c81b220df516b433a75b8d68feed5317ed1bc83a2a4bac9
4
+ data.tar.gz: 826455dd3ea5fe721feb372936ac4a6b169ae7c3256ce98cee94f1b3c1fd19ff
5
5
  SHA512:
6
- metadata.gz: 7959dc6060731296d8234a2d056955443f035f89b0d22ee61484bcba7751ec1198c0c040d4f30ab6f5359620f8b91e31523605a3ab0e7b13e12d48d5cbe32408
7
- data.tar.gz: 9cd1dea7985c3c5893deea11f9d913b2457837d0f609ca3ae4d94db0af39840ea214625bf2b1f9747e60336f09fd4e0dc8960e5eee7dddaf544e2bd0adeb7339
6
+ metadata.gz: b612026e5219dbefac87be6a897a43cff75b2fa045d62af44ef9bac1d27ef658e5c8c38cc25526bb52898841ee3b71d43caf89450e641d1c60ef68b1c7d65fe5
7
+ data.tar.gz: 336720cc69f36b67ee3706d424df574e04459a55221aa6e04dec7c09b920d6763f5983d5aef7bfeb778535c8c5b288a4ea48e8c18eeeaff39017245e1ba9e5d5
@@ -13,7 +13,7 @@ module Workarea
13
13
  if category.product_rules.present?
14
14
  document = {
15
15
  id: category.id,
16
- query: Categorization.new(rules: category.product_rules).query
16
+ query: Workarea::Search::Categorization.new(rules: category.product_rules).query
17
17
  }
18
18
 
19
19
  Storefront.current_index.save(document, type: 'category')
@@ -4,7 +4,7 @@ module Workarea
4
4
  include ApplicationDocument
5
5
  include UrlToken
6
6
 
7
- belongs_to :user, class_name: 'Workarea::User'
7
+ belongs_to :user, class_name: 'Workarea::User', index: true
8
8
 
9
9
  index(
10
10
  { created_at: 1 },
@@ -14,6 +14,8 @@ module Workarea
14
14
  def self.setup!(email)
15
15
  user = User.find_by_email(email)
16
16
  return nil unless user
17
+
18
+ where(user_id: user.id).destroy_all
17
19
  create!(user: user)
18
20
  end
19
21
 
@@ -13,7 +13,7 @@ module Workarea
13
13
 
14
14
  def perform_by_models(models)
15
15
  return if models.empty?
16
- Workarea::Search::Admin.bulk(documents_for(models))
16
+ Workarea::Search::Admin.bulk { documents_for(models) }
17
17
  end
18
18
 
19
19
  private
@@ -14,9 +14,10 @@ module Workarea
14
14
  def perform_by_models(products)
15
15
  return if products.blank?
16
16
 
17
- documents = Search::ProductEntries.new(products).map(&:as_bulk_document)
17
+ Search::Storefront.bulk do
18
+ Search::ProductEntries.new(products).map(&:as_bulk_document)
19
+ end
18
20
 
19
- Search::Storefront.bulk(documents)
20
21
  products.each { |p| p.set(last_indexed_at: Time.current) }
21
22
  end
22
23
  end
@@ -18,11 +18,11 @@ module Workarea
18
18
  end
19
19
 
20
20
  def perform_by_models(searches)
21
- documents = searches.map do |model|
22
- Search::Storefront::Search.new(model).as_bulk_document
21
+ Search::Storefront.bulk do
22
+ searches.map do |model|
23
+ Search::Storefront::Search.new(model).as_bulk_document
24
+ end
23
25
  end
24
-
25
- Search::Storefront.bulk(documents)
26
26
  end
27
27
  end
28
28
 
@@ -126,6 +126,7 @@ require 'workarea/ext/freedom_patches/country'
126
126
  require 'workarea/ext/freedom_patches/net_http_ssl_connection'
127
127
  require 'workarea/ext/freedom_patches/dragonfly_job_fetch_url'
128
128
  require 'workarea/ext/freedom_patches/dragonfly_callable_url_host'
129
+ require 'workarea/ext/freedom_patches/mongoid_localized_defaults'
129
130
  require 'workarea/ext/mongoid/list_field'
130
131
  require 'workarea/ext/mongoid/each_by'
131
132
  require 'workarea/ext/mongoid/except'
@@ -44,22 +44,27 @@ module Workarea
44
44
 
45
45
  def save(document, options = {})
46
46
  options = options.merge(type: type)
47
- I18n.for_each_locale { current_index.save(document, options) }
47
+ current_index.save(document, options)
48
48
  end
49
49
 
50
- def bulk(documents, options = {})
50
+ def bulk(documents = [], options = {})
51
51
  options = options.merge(type: type)
52
- I18n.for_each_locale { current_index.bulk(documents, options) }
52
+
53
+ if block_given?
54
+ I18n.for_each_locale { current_index.bulk(Array.wrap(yield), options) }
55
+ else
56
+ current_index.bulk(documents, options)
57
+ end
53
58
  end
54
59
 
55
60
  def update(document, options = {})
56
61
  options = options.merge(type: type)
57
- I18n.for_each_locale { current_index.update(document, options) }
62
+ current_index.update(document, options)
58
63
  end
59
64
 
60
65
  def delete(id, options = {})
61
66
  options = options.merge(type: type)
62
- I18n.for_each_locale { current_index.delete(id, options) }
67
+ current_index.delete(id, options)
63
68
  end
64
69
 
65
70
  def count(query = nil, options = {})
@@ -97,12 +102,14 @@ module Workarea
97
102
  end
98
103
 
99
104
  def save(options = {})
100
- document = as_document.merge(Serializer.serialize(model))
101
- self.class.save(document, options)
105
+ I18n.for_each_locale do
106
+ document = as_document.merge(Serializer.serialize(model))
107
+ self.class.save(document, options)
108
+ end
102
109
  end
103
110
 
104
111
  def destroy(options = {})
105
- self.class.delete(id, options)
112
+ I18n.for_each_locale { self.class.delete(id, options) }
106
113
  end
107
114
  end
108
115
  end
@@ -0,0 +1,25 @@
1
+ module Mongoid
2
+ module Fields
3
+ module LocalizedDefaults
4
+ def create_accessors(name, meth, options = {})
5
+ super
6
+
7
+ if options[:localize]
8
+ field = fields[name]
9
+
10
+ define_method meth do |*args|
11
+ result = super(*args)
12
+ return result unless result.nil?
13
+
14
+ default_name = field.send(:default_name)
15
+ return send(default_name) if respond_to?(default_name)
16
+
17
+ field.default_val
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ ClassMethods.prepend(LocalizedDefaults)
24
+ end
25
+ end
@@ -2,7 +2,7 @@ module Workarea
2
2
  module VERSION
3
3
  MAJOR = 3
4
4
  MINOR = 4
5
- PATCH = 30
5
+ PATCH = 31
6
6
  PRE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
@@ -67,6 +67,26 @@ module Workarea
67
67
  assert_equal({ 'id' => '1' }, results.first['_source'])
68
68
  end
69
69
 
70
+ def test_bulk_with_block
71
+ set_locales(available: [:en, :es], default: :en, current: :en)
72
+ Foo.bulk { { id: I18n.locale.to_s, bulk_action: 'index' } }
73
+
74
+ find_results = -> do
75
+ Foo
76
+ .current_index
77
+ .search({ query: { match_all: {} } }, type: 'foo')
78
+ .dig('hits', 'hits')
79
+ end
80
+
81
+ I18n.locale = :en
82
+ assert(1, Foo.count)
83
+ assert_equal({ 'id' => 'en' }, find_results.call.first['_source'])
84
+
85
+ I18n.locale = :es
86
+ assert(1, Foo.count)
87
+ assert_equal({ 'id' => 'es' }, find_results.call.first['_source'])
88
+ end
89
+
70
90
  def test_update
71
91
  Foo.save(id: '1')
72
92
  Foo.update(id: '1', foo: 'bar')
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ class MongoidLocalizedDefaultsTest < TestCase
5
+ class Foo
6
+ include Mongoid::Document
7
+
8
+ field :name, type: String, default: -> { 'foo' }, localize: true
9
+ field :config, type: Hash, default: { foo: 'bar' }, localize: true
10
+ end
11
+
12
+ def test_localized_defaults
13
+ set_locales(available: [:en, :es], default: :en, current: :en)
14
+
15
+ instance = Foo.new
16
+ assert_equal('foo', instance.name)
17
+ assert_equal({ foo: 'bar' }, instance.config)
18
+
19
+ I18n.locale = :es
20
+
21
+ assert_equal('foo', instance.name)
22
+ assert_equal({ foo: 'bar' }, instance.config)
23
+ end
24
+ end
25
+ end
@@ -4,14 +4,22 @@ module Workarea
4
4
  class User
5
5
  class PasswordResetTest < TestCase
6
6
  def user
7
- @user ||= create_user
7
+ @user ||= create_user(email: 'one@workarea.com')
8
8
  end
9
9
 
10
10
  def test_setup!
11
- PasswordReset.setup!(user.email)
11
+ 2.times do
12
+ PasswordReset.setup!(user.email)
12
13
 
13
- assert_equal(1, PasswordReset.count)
14
- assert_equal(user.id, PasswordReset.first.user_id)
14
+ assert_equal(1, PasswordReset.count)
15
+ assert_equal(user.id, PasswordReset.first.user_id)
16
+ end
17
+
18
+ two = create_user(email: 'two@workarea.com')
19
+ PasswordReset.setup!('two@workarea.com')
20
+
21
+ assert_equal(2, PasswordReset.count)
22
+ assert_equal(two.id, PasswordReset.last.user_id)
15
23
  end
16
24
 
17
25
  def test_complete
@@ -408,6 +408,19 @@ module Workarea
408
408
  assert(result[:raw].present?)
409
409
  assert_kind_of(Float, result[:raw]['_score'])
410
410
  end
411
+
412
+ def test_locale
413
+ set_locales(available: [:en, :es], default: :en, current: :en)
414
+ Search::Storefront.reset_indexes!
415
+
416
+ product = create_product(active_translations: { 'en' => true, 'es' => false })
417
+
418
+ I18n.locale = :es
419
+ assert_equal([], ProductSearch.new(q: '*').results.pluck(:model))
420
+
421
+ I18n.locale = :en
422
+ assert_equal([product], ProductSearch.new(q: '*').results.pluck(:model))
423
+ end
411
424
  end
412
425
  end
413
426
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workarea-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.30
4
+ version: 3.4.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Crouse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-31 00:00:00.000000000 Z
11
+ date: 2020-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -1856,6 +1856,7 @@ files:
1856
1856
  - lib/workarea/ext/freedom_patches/float.rb
1857
1857
  - lib/workarea/ext/freedom_patches/global_id.rb
1858
1858
  - lib/workarea/ext/freedom_patches/money.rb
1859
+ - lib/workarea/ext/freedom_patches/mongoid_localized_defaults.rb
1859
1860
  - lib/workarea/ext/freedom_patches/mongoid_simple_tags.rb
1860
1861
  - lib/workarea/ext/freedom_patches/net_http_ssl_connection.rb
1861
1862
  - lib/workarea/ext/freedom_patches/routes_reloader.rb
@@ -2006,6 +2007,7 @@ files:
2006
2007
  - test/lib/workarea/ext/freedom_patches/country_test.rb
2007
2008
  - test/lib/workarea/ext/freedom_patches/dragonfly_callable_url_host_test.rb
2008
2009
  - test/lib/workarea/ext/freedom_patches/global_id_test.rb
2010
+ - test/lib/workarea/ext/freedom_patches/mongoid_localized_defaults_test.rb
2009
2011
  - test/lib/workarea/ext/freedom_patches/mongoid_simple_tags_test.rb
2010
2012
  - test/lib/workarea/ext/mongoid/audit_log_entry_test.rb
2011
2013
  - test/lib/workarea/ext/mongoid/each_by_test.rb