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.
- checksums.yaml +7 -0
- data/.editorconfig +20 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- data/.github/ISSUE_TEMPLATE/documentation-request.md +17 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.gitignore +13 -0
- data/CHANGELOG.md +131 -0
- data/CODE_OF_CONDUCT.md +3 -0
- data/CONTRIBUTING.md +3 -0
- data/Gemfile +9 -0
- data/LICENSE +52 -0
- data/README.md +45 -0
- data/Rakefile +31 -0
- data/app/controllers/workarea/.keep +0 -0
- data/app/controllers/workarea/storefront/searches_controller.decorator +17 -0
- data/app/models/workarea/search/storefront/content.rb +55 -0
- data/app/models/workarea/search/storefront.decorator +10 -0
- data/app/queries/workarea/search/content_search.rb +96 -0
- data/app/queries/workarea/search/search_suggestions.decorator +9 -0
- data/app/queries/workarea/search/storefront_search/response.decorator +24 -0
- data/app/queries/workarea/search/storefront_search/spelling_correction_with_content.rb +20 -0
- data/app/queries/workarea/search/storefront_search/template_with_content.rb +28 -0
- data/app/view_models/workarea/storefront/content_search_results.rb +21 -0
- data/app/view_models/workarea/storefront/content_search_view_model.rb +49 -0
- data/app/views/workarea/storefront/searches/_search_type_toggle.html.haml +8 -0
- data/app/views/workarea/storefront/searches/content.html.haml +71 -0
- data/app/workers/workarea/bulk_index_content.rb +29 -0
- data/app/workers/workarea/clean_content.rb +35 -0
- data/app/workers/workarea/index_content.rb +46 -0
- data/bin/rails +16 -0
- data/config/initializers/appends.rb +4 -0
- data/config/initializers/configuration.rb +19 -0
- data/config/locales/en.yml +7 -0
- data/config/routes.rb +9 -0
- data/lib/tasks/content_search_tasks.rake +8 -0
- data/lib/workarea/content_search/engine.rb +15 -0
- data/lib/workarea/content_search/version.rb +5 -0
- data/lib/workarea/content_search.rb +11 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/config/manifest.js +4 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/jobs/application_job.rb +2 -0
- data/test/dummy/app/mailers/application_mailer.rb +4 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +34 -0
- data/test/dummy/bin/update +29 -0
- data/test/dummy/config/application.rb +18 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/cable.yml +9 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +54 -0
- data/test/dummy/config/environments/production.rb +83 -0
- data/test/dummy/config/environments/test.rb +43 -0
- data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +5 -0
- data/test/dummy/config/initializers/workarea.rb +5 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/puma.rb +47 -0
- data/test/dummy/config/routes.rb +5 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config.ru +5 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
- data/test/dummy/public/apple-touch-icon.png +0 -0
- data/test/dummy/public/favicon.ico +1 -0
- data/test/models/workarea/search/storefront/content_test.rb +28 -0
- data/test/queries/workarea/search/content_search_test.rb +74 -0
- data/test/system/workarea/storefront/content_search_system_test.rb +103 -0
- data/test/test_helper.rb +10 -0
- data/test/view_models/workarea/storefront/content_search_results_test.rb +35 -0
- data/test/view_models/workarea/storefront/content_search_view_model_test.rb +63 -0
- data/test/workers/workarea/bulk_index_content_test.rb +18 -0
- data/test/workers/workarea/clean_content_test.rb +42 -0
- data/test/workers/workarea/index_content_test.rb +51 -0
- data/workarea-content_search.gemspec +21 -0
- 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
|
data/test/test_helper.rb
ADDED
|
@@ -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: []
|