workarea-content_search 1.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|