workarea-content_search 1.0.8

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.
Files changed (98) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +20 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
  4. data/.github/ISSUE_TEMPLATE/documentation-request.md +17 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  6. data/.gitignore +13 -0
  7. data/CHANGELOG.md +131 -0
  8. data/CODE_OF_CONDUCT.md +3 -0
  9. data/CONTRIBUTING.md +3 -0
  10. data/Gemfile +9 -0
  11. data/LICENSE +52 -0
  12. data/README.md +45 -0
  13. data/Rakefile +31 -0
  14. data/app/controllers/workarea/.keep +0 -0
  15. data/app/controllers/workarea/storefront/searches_controller.decorator +17 -0
  16. data/app/models/workarea/search/storefront/content.rb +55 -0
  17. data/app/models/workarea/search/storefront.decorator +10 -0
  18. data/app/queries/workarea/search/content_search.rb +96 -0
  19. data/app/queries/workarea/search/search_suggestions.decorator +9 -0
  20. data/app/queries/workarea/search/storefront_search/response.decorator +24 -0
  21. data/app/queries/workarea/search/storefront_search/spelling_correction_with_content.rb +20 -0
  22. data/app/queries/workarea/search/storefront_search/template_with_content.rb +28 -0
  23. data/app/view_models/workarea/storefront/content_search_results.rb +21 -0
  24. data/app/view_models/workarea/storefront/content_search_view_model.rb +49 -0
  25. data/app/views/workarea/storefront/searches/_search_type_toggle.html.haml +8 -0
  26. data/app/views/workarea/storefront/searches/content.html.haml +71 -0
  27. data/app/workers/workarea/bulk_index_content.rb +29 -0
  28. data/app/workers/workarea/clean_content.rb +35 -0
  29. data/app/workers/workarea/index_content.rb +46 -0
  30. data/bin/rails +16 -0
  31. data/config/initializers/appends.rb +4 -0
  32. data/config/initializers/configuration.rb +19 -0
  33. data/config/locales/en.yml +7 -0
  34. data/config/routes.rb +9 -0
  35. data/lib/tasks/content_search_tasks.rake +8 -0
  36. data/lib/workarea/content_search/engine.rb +15 -0
  37. data/lib/workarea/content_search/version.rb +5 -0
  38. data/lib/workarea/content_search.rb +11 -0
  39. data/test/dummy/Rakefile +6 -0
  40. data/test/dummy/app/assets/config/manifest.js +4 -0
  41. data/test/dummy/app/assets/images/.keep +0 -0
  42. data/test/dummy/app/assets/javascripts/application.js +13 -0
  43. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  44. data/test/dummy/app/controllers/application_controller.rb +3 -0
  45. data/test/dummy/app/controllers/concerns/.keep +0 -0
  46. data/test/dummy/app/helpers/application_helper.rb +2 -0
  47. data/test/dummy/app/jobs/application_job.rb +2 -0
  48. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  49. data/test/dummy/app/models/concerns/.keep +0 -0
  50. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  51. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  52. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  53. data/test/dummy/bin/bundle +3 -0
  54. data/test/dummy/bin/rails +4 -0
  55. data/test/dummy/bin/rake +4 -0
  56. data/test/dummy/bin/setup +34 -0
  57. data/test/dummy/bin/update +29 -0
  58. data/test/dummy/config/application.rb +18 -0
  59. data/test/dummy/config/boot.rb +5 -0
  60. data/test/dummy/config/cable.yml +9 -0
  61. data/test/dummy/config/environment.rb +5 -0
  62. data/test/dummy/config/environments/development.rb +54 -0
  63. data/test/dummy/config/environments/production.rb +83 -0
  64. data/test/dummy/config/environments/test.rb +43 -0
  65. data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
  66. data/test/dummy/config/initializers/assets.rb +11 -0
  67. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  68. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  69. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  70. data/test/dummy/config/initializers/inflections.rb +16 -0
  71. data/test/dummy/config/initializers/mime_types.rb +4 -0
  72. data/test/dummy/config/initializers/session_store.rb +5 -0
  73. data/test/dummy/config/initializers/workarea.rb +5 -0
  74. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  75. data/test/dummy/config/locales/en.yml +23 -0
  76. data/test/dummy/config/puma.rb +47 -0
  77. data/test/dummy/config/routes.rb +5 -0
  78. data/test/dummy/config/secrets.yml +22 -0
  79. data/test/dummy/config.ru +5 -0
  80. data/test/dummy/lib/assets/.keep +0 -0
  81. data/test/dummy/log/.keep +0 -0
  82. data/test/dummy/public/404.html +67 -0
  83. data/test/dummy/public/422.html +67 -0
  84. data/test/dummy/public/500.html +66 -0
  85. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  86. data/test/dummy/public/apple-touch-icon.png +0 -0
  87. data/test/dummy/public/favicon.ico +1 -0
  88. data/test/models/workarea/search/storefront/content_test.rb +28 -0
  89. data/test/queries/workarea/search/content_search_test.rb +74 -0
  90. data/test/system/workarea/storefront/content_search_system_test.rb +103 -0
  91. data/test/test_helper.rb +10 -0
  92. data/test/view_models/workarea/storefront/content_search_results_test.rb +35 -0
  93. data/test/view_models/workarea/storefront/content_search_view_model_test.rb +63 -0
  94. data/test/workers/workarea/bulk_index_content_test.rb +18 -0
  95. data/test/workers/workarea/clean_content_test.rb +42 -0
  96. data/test/workers/workarea/index_content_test.rb +51 -0
  97. data/workarea-content_search.gemspec +21 -0
  98. metadata +153 -0
@@ -0,0 +1,103 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module Storefront
5
+ class ContentSearchSystemTest < Workarea::SystemTest
6
+ setup :set_products
7
+ setup :index_products
8
+ setup :set_search_settings
9
+
10
+ def set_products
11
+ @products = [
12
+ create_product(
13
+ name: 'Test Product 1',
14
+ details: { 'Material' => 'Cotton' },
15
+ filters: { 'Size' => %w(Large Medium), 'Color' => 'Red', 'Test' => 'true' },
16
+ created_at: Time.now - 1.hour,
17
+ variants: [{ sku: 'SKU1', regular: 10.to_m }]
18
+ ),
19
+ create_product(
20
+ name: 'Test Product 2',
21
+ details: { 'Material' => 'Wool' },
22
+ filters: { 'Size' => %w(Medium Small), 'Color' => 'Red' },
23
+ variants: [
24
+ { sku: 'SKU2', regular: 5.to_m },
25
+ { sku: 'SKU3', regular: 7.to_m }
26
+ ]
27
+ )
28
+ ]
29
+ end
30
+
31
+ def index_products
32
+ @products.each { |p| IndexProduct.perform(p) }
33
+ end
34
+
35
+ def set_search_settings
36
+ update_search_settings
37
+ end
38
+
39
+ def test_searching_content
40
+ create_page(name: 'Content Test')
41
+ create_page(name: 'Content Test 2')
42
+ create_page(name: 'Content Test 3')
43
+
44
+ visit storefront.search_path(q: 'content')
45
+ assert(page.has_content?('3 results'))
46
+ assert(page.has_ordered_text?('Content Test', 'Content Test 2', 'Content Test 3'))
47
+
48
+ select('Newest', from: 'sort_top')
49
+ assert(page.has_ordered_text?('Content Test 3', 'Content Test 2', 'Content Test'))
50
+
51
+ visit storefront.search_path(q: 'test')
52
+ assert(page.has_content?('2 product results'))
53
+ assert(page.has_content?('3 content result'))
54
+ assert(page.has_content?('Content Test'))
55
+
56
+ click_link '2 product results'
57
+ assert(page.has_ordered_text?('Test Product 1', 'Test Product 2'))
58
+
59
+ select('Newest', from: 'sort_top')
60
+ assert(page.has_content?('Test Product'))
61
+ assert(page.has_ordered_text?('Test Product 2', 'Test Product 1'))
62
+ end
63
+
64
+ def test_searching_content_when_a_product_spelling_correction_exists
65
+ create_page(name: 'Content Text')
66
+ visit storefront.search_path(q: 'text')
67
+ assert(page.has_content?('Content Text'))
68
+ end
69
+
70
+ def test_filtering_product_search_below_number_of_content_results
71
+ create_page(name: 'Content Test')
72
+ create_page(name: 'Page Test')
73
+
74
+ visit storefront.search_path(q: 'test')
75
+
76
+ Capybara.match = :first
77
+ click_link 'Large (1)'
78
+
79
+ assert(page.has_content?('Test Product 1'))
80
+ assert(page.has_no_content?('Test Product 2'))
81
+ assert(page.has_no_content?('Content Test'))
82
+ assert(page.has_no_content?('Page Test'))
83
+ end
84
+
85
+ def test_search_custom_content
86
+ create_page(name: 'Content Test')
87
+ create_page(name: 'Content Test 2')
88
+
89
+ customization = create_search_customization(id: 'content')
90
+ content = Content.for(customization)
91
+ content.blocks.build(
92
+ area: :above_results,
93
+ type_id: :html,
94
+ data: { html: '<p>Test Custom Content</p>' }
95
+ )
96
+ content.save!
97
+
98
+ visit storefront.search_path(q: 'content')
99
+ assert(page.has_content?('Test Custom Content'))
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,10 @@
1
+ # Configure Rails Environment
2
+ ENV['RAILS_ENV'] = 'test'
3
+
4
+ require File.expand_path('../../test/dummy/config/environment.rb', __FILE__)
5
+ require 'rails/test_help'
6
+ require 'workarea/test_help'
7
+
8
+ # Filter out Minitest backtrace while allowing backtrace from other libraries
9
+ # to be shown.
10
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module Storefront
5
+ class ContentSearchResultsTest < TestCase
6
+ setup :reset_index
7
+
8
+ def reset_index
9
+ Search::Storefront.reset_indexes!
10
+ end
11
+
12
+ class FooSearchViewModel < ApplicationViewModel
13
+ include ContentSearchResults
14
+ end
15
+
16
+ def test_multiple_result_types
17
+ response = Search::StorefrontSearch::Response.new
18
+ view_model = FooSearchViewModel.new(response)
19
+
20
+ response.expects(:total).returns(0)
21
+ refute(view_model.multiple_result_types?)
22
+
23
+ response.expects(:total).returns(1)
24
+ refute(view_model.multiple_result_types?)
25
+
26
+ response.expects(:total).returns(0)
27
+ refute(view_model.multiple_result_types?)
28
+
29
+ response.expects(:total).returns(1)
30
+ response.expects(:content_total).returns(1)
31
+ assert(view_model.multiple_result_types?)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,63 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module Storefront
5
+ class ContentSearchViewModelTest < TestCase
6
+ include SearchIndexing
7
+ include PaginationViewModelTest
8
+
9
+ def create_search_response(options = {})
10
+ attributes = { params: {} }.merge(options)
11
+
12
+ result = Search::StorefrontSearch::Response.new(attributes)
13
+ result.query = attributes[:query] if attributes[:query]
14
+ result.content_query = attributes[:content_query] if attributes[:content_query]
15
+ result
16
+ end
17
+
18
+ def view_model_class
19
+ ContentSearchViewModel
20
+ end
21
+ alias pagination_view_model_class view_model_class
22
+ alias search_content_view_model_class view_model_class
23
+
24
+ def test_wraps_results_with_a_struct
25
+ page = create_page(name: 'Foo')
26
+ IndexContent.perform(Content.for(page))
27
+
28
+ content_query = Search::ContentSearch.new(q: 'foo')
29
+ response = create_search_response(content_query: content_query)
30
+
31
+ view_model = ContentSearchViewModel.new(response)
32
+
33
+ assert(
34
+ view_model
35
+ .content
36
+ .first
37
+ .instance_of?(ContentSearchViewModel::ContentResult)
38
+ )
39
+
40
+ assert_equal('Foo', view_model.content.first.name)
41
+ assert_equal('page', view_model.content.first.resource_name)
42
+ assert_equal(page.to_param, view_model.content.first.to_param)
43
+ end
44
+
45
+ def test_sorts
46
+ view_model = ContentSearchViewModel.new(create_search_response)
47
+ assert_equal(['Relevance', :relevance], view_model.sorts.first)
48
+ end
49
+
50
+ def test_query_suggestions
51
+ response = create_search_response
52
+
53
+ Recommendation::Searches.expects(:find).returns(%w(one))
54
+
55
+ response.query.expects(:query_suggestions).returns(%w(two))
56
+ response.content_query.expects(:query_suggestions).returns(%w(three))
57
+
58
+ view_model = ContentSearchViewModel.new(response)
59
+ assert_equal(%w(one two three), view_model.query_suggestions)
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ class BulkIndexContentTest < Workarea::TestCase
5
+ def test_peform
6
+ Workarea::Search::Storefront.reset_indexes!
7
+
8
+ Sidekiq::Callbacks.disable(IndexContent) do
9
+ content = Array.new(2) { create_content(contentable: create_page) }
10
+ content << create_content
11
+
12
+ assert_equal(0, Search::Storefront.count)
13
+ BulkIndexContent.new.perform(content.map(&:id))
14
+ assert_equal(2, Search::Storefront.count)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,42 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ class CleanContentTest < TestCase
5
+ include TestCase::SearchIndexing
6
+
7
+ def test_perform
8
+ page = create_page(name: 'Foo')
9
+
10
+ Content.for(page).save
11
+ CleanContent.new.perform(page.id.to_s, page.class.name)
12
+ assert_equal(1, Search::Storefront::Content.count)
13
+
14
+ page.update(active: false)
15
+ CleanContent.new.perform(page.id.to_s, page.class.name)
16
+ assert_equal(0, Search::Storefront::Content.count)
17
+
18
+ page.update(active: true)
19
+ CleanContent.new.perform(page.id.to_s, page.class.name)
20
+ assert_equal(1, Search::Storefront::Content.count)
21
+
22
+ page.destroy
23
+ CleanContent.new.perform(page.id.to_s, page.class.name)
24
+ assert_equal(0, Search::Storefront::Content.count)
25
+ end
26
+
27
+ def test_index_exclusion
28
+ Workarea.with_config do |config|
29
+ config.exclude_from_content_search_index << 'Workarea::Catalog::Product'
30
+ product = create_product
31
+
32
+ Workarea::Content.for(product).tap do |c|
33
+ c.blocks.create!(type: :html, data: { 'html' => '<p>foo</p>' })
34
+ end
35
+
36
+ assert_no_difference -> { Search::Storefront::Content.count } do
37
+ CleanContent.new.perform(product.id.to_s, product.class.name)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,51 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ class IndexContentTest < Workarea::TestCase
5
+ include TestCase::SearchIndexing
6
+
7
+ def test_excluding_content
8
+ Search::Storefront.reset_indexes!
9
+
10
+ content = [
11
+ Content.for(create_page),
12
+ Content.for('home_page'),
13
+ Content.for(create_category),
14
+ Content.for(create_search_customization)
15
+ ]
16
+
17
+ content.each { |c| IndexContent.perform(c) }
18
+
19
+ assert_equal(1, Search::Storefront.count)
20
+
21
+ results = Search::Storefront.search('*')['hits']['hits']
22
+ assert_includes(results.first['_source']['id'], content.first.id.to_s)
23
+ end
24
+
25
+ def test_removing_content
26
+ content = create_content(contentable: create_page)
27
+
28
+ IndexContent.new.perform(content.id)
29
+ assert_equal(Search::Storefront.count, 1)
30
+
31
+ content.destroy!
32
+ IndexContent.new.perform(content.id)
33
+ assert(Search::Storefront.count.zero?)
34
+ end
35
+
36
+ def test_saving_from_block_changes
37
+ content = Content.for(create_page)
38
+
39
+ assert_equal(0, Search::Storefront.count)
40
+
41
+ Sidekiq::Callbacks.enable(IndexContent) do
42
+ content.blocks.create!(
43
+ type: 'html',
44
+ data: { html: '<p>foo bar!</p>' }
45
+ )
46
+ end
47
+
48
+ assert_equal(1, Search::Storefront.count)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,21 @@
1
+ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
2
+
3
+ # Maintain your gem's version:
4
+ require 'workarea/content_search/version'
5
+
6
+ # Describe your gem and declare its dependencies:
7
+ Gem::Specification.new do |s|
8
+ s.name = 'workarea-content_search'
9
+ s.version = Workarea::ContentSearch::VERSION
10
+ s.authors = ['Matt Duffy']
11
+ s.email = ['mduffy@workarea.com']
12
+ s.homepage = 'https://github.com/workarea-commerce/workarea-content-search'
13
+ s.summary = 'Content search plugin for the Workarea Commerce Platform'
14
+ s.description = 'Content search plugin for the Workarea Commerce Platform'
15
+ s.files = `git ls-files`.split("\n")
16
+ s.license = 'Business Software License'
17
+
18
+ s.required_ruby_version = '>= 2.3.0'
19
+
20
+ s.add_dependency 'workarea', '~> 3.x'
21
+ end
metadata ADDED
@@ -0,0 +1,153 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: workarea-content_search
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.8
5
+ platform: ruby
6
+ authors:
7
+ - Matt Duffy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-08-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: workarea
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 3.x
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 3.x
27
+ description: Content search plugin for the Workarea Commerce Platform
28
+ email:
29
+ - mduffy@workarea.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".editorconfig"
35
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
36
+ - ".github/ISSUE_TEMPLATE/documentation-request.md"
37
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
38
+ - ".gitignore"
39
+ - CHANGELOG.md
40
+ - CODE_OF_CONDUCT.md
41
+ - CONTRIBUTING.md
42
+ - Gemfile
43
+ - LICENSE
44
+ - README.md
45
+ - Rakefile
46
+ - app/controllers/workarea/.keep
47
+ - app/controllers/workarea/storefront/searches_controller.decorator
48
+ - app/models/workarea/search/storefront.decorator
49
+ - app/models/workarea/search/storefront/content.rb
50
+ - app/queries/workarea/search/content_search.rb
51
+ - app/queries/workarea/search/search_suggestions.decorator
52
+ - app/queries/workarea/search/storefront_search/response.decorator
53
+ - app/queries/workarea/search/storefront_search/spelling_correction_with_content.rb
54
+ - app/queries/workarea/search/storefront_search/template_with_content.rb
55
+ - app/view_models/workarea/storefront/content_search_results.rb
56
+ - app/view_models/workarea/storefront/content_search_view_model.rb
57
+ - app/views/workarea/storefront/searches/_search_type_toggle.html.haml
58
+ - app/views/workarea/storefront/searches/content.html.haml
59
+ - app/workers/workarea/bulk_index_content.rb
60
+ - app/workers/workarea/clean_content.rb
61
+ - app/workers/workarea/index_content.rb
62
+ - bin/rails
63
+ - config/initializers/appends.rb
64
+ - config/initializers/configuration.rb
65
+ - config/locales/en.yml
66
+ - config/routes.rb
67
+ - lib/tasks/content_search_tasks.rake
68
+ - lib/workarea/content_search.rb
69
+ - lib/workarea/content_search/engine.rb
70
+ - lib/workarea/content_search/version.rb
71
+ - test/dummy/Rakefile
72
+ - test/dummy/app/assets/config/manifest.js
73
+ - test/dummy/app/assets/images/.keep
74
+ - test/dummy/app/assets/javascripts/application.js
75
+ - test/dummy/app/assets/stylesheets/application.css
76
+ - test/dummy/app/controllers/application_controller.rb
77
+ - test/dummy/app/controllers/concerns/.keep
78
+ - test/dummy/app/helpers/application_helper.rb
79
+ - test/dummy/app/jobs/application_job.rb
80
+ - test/dummy/app/mailers/application_mailer.rb
81
+ - test/dummy/app/models/concerns/.keep
82
+ - test/dummy/app/views/layouts/application.html.erb
83
+ - test/dummy/app/views/layouts/mailer.html.erb
84
+ - test/dummy/app/views/layouts/mailer.text.erb
85
+ - test/dummy/bin/bundle
86
+ - test/dummy/bin/rails
87
+ - test/dummy/bin/rake
88
+ - test/dummy/bin/setup
89
+ - test/dummy/bin/update
90
+ - test/dummy/config.ru
91
+ - test/dummy/config/application.rb
92
+ - test/dummy/config/boot.rb
93
+ - test/dummy/config/cable.yml
94
+ - test/dummy/config/environment.rb
95
+ - test/dummy/config/environments/development.rb
96
+ - test/dummy/config/environments/production.rb
97
+ - test/dummy/config/environments/test.rb
98
+ - test/dummy/config/initializers/application_controller_renderer.rb
99
+ - test/dummy/config/initializers/assets.rb
100
+ - test/dummy/config/initializers/backtrace_silencers.rb
101
+ - test/dummy/config/initializers/cookies_serializer.rb
102
+ - test/dummy/config/initializers/filter_parameter_logging.rb
103
+ - test/dummy/config/initializers/inflections.rb
104
+ - test/dummy/config/initializers/mime_types.rb
105
+ - test/dummy/config/initializers/session_store.rb
106
+ - test/dummy/config/initializers/workarea.rb
107
+ - test/dummy/config/initializers/wrap_parameters.rb
108
+ - test/dummy/config/locales/en.yml
109
+ - test/dummy/config/puma.rb
110
+ - test/dummy/config/routes.rb
111
+ - test/dummy/config/secrets.yml
112
+ - test/dummy/lib/assets/.keep
113
+ - test/dummy/log/.keep
114
+ - test/dummy/public/404.html
115
+ - test/dummy/public/422.html
116
+ - test/dummy/public/500.html
117
+ - test/dummy/public/apple-touch-icon-precomposed.png
118
+ - test/dummy/public/apple-touch-icon.png
119
+ - test/dummy/public/favicon.ico
120
+ - test/models/workarea/search/storefront/content_test.rb
121
+ - test/queries/workarea/search/content_search_test.rb
122
+ - test/system/workarea/storefront/content_search_system_test.rb
123
+ - test/test_helper.rb
124
+ - test/view_models/workarea/storefront/content_search_results_test.rb
125
+ - test/view_models/workarea/storefront/content_search_view_model_test.rb
126
+ - test/workers/workarea/bulk_index_content_test.rb
127
+ - test/workers/workarea/clean_content_test.rb
128
+ - test/workers/workarea/index_content_test.rb
129
+ - workarea-content_search.gemspec
130
+ homepage: https://github.com/workarea-commerce/workarea-content-search
131
+ licenses:
132
+ - Business Software License
133
+ metadata: {}
134
+ post_install_message:
135
+ rdoc_options: []
136
+ require_paths:
137
+ - lib
138
+ required_ruby_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 2.3.0
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ requirements: []
149
+ rubygems_version: 3.0.4
150
+ signing_key:
151
+ specification_version: 4
152
+ summary: Content search plugin for the Workarea Commerce Platform
153
+ test_files: []