picky 1.4.1 → 1.4.2
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.
- data/lib/picky/{alias_instances.rb → aliases.rb} +1 -3
- data/lib/picky/application.rb +18 -19
- data/lib/picky/cores.rb +1 -1
- data/lib/picky/generators/aliases.rb +3 -0
- data/lib/picky/index/base.rb +179 -0
- data/lib/picky/index/memory.rb +28 -0
- data/lib/picky/index/redis.rb +28 -0
- data/lib/picky/{indexes_api.rb → index_bundle.rb} +16 -16
- data/lib/picky/indexed/indexes.rb +11 -7
- data/lib/picky/indexing/indexes.rb +14 -8
- data/lib/picky/internals/adapters/rack/base.rb +27 -0
- data/lib/picky/internals/adapters/rack/live_parameters.rb +37 -0
- data/lib/picky/internals/adapters/rack/query.rb +63 -0
- data/lib/picky/internals/adapters/rack.rb +34 -0
- data/lib/picky/{calculations → internals/calculations}/location.rb +0 -0
- data/lib/picky/{cli.rb → internals/cli.rb} +0 -0
- data/lib/picky/{configuration → internals/configuration}/index.rb +8 -2
- data/lib/picky/{ext → internals/ext}/maybe_compile.rb +0 -0
- data/lib/picky/{ext → internals/ext}/ruby19/extconf.rb +0 -0
- data/lib/picky/{ext → internals/ext}/ruby19/performant.c +0 -0
- data/lib/picky/{extensions → internals/extensions}/array.rb +0 -0
- data/lib/picky/{extensions → internals/extensions}/hash.rb +0 -0
- data/lib/picky/{extensions → internals/extensions}/module.rb +0 -0
- data/lib/picky/{extensions → internals/extensions}/object.rb +0 -0
- data/lib/picky/{extensions → internals/extensions}/symbol.rb +0 -0
- data/lib/picky/internals/frontend_adapters/rack.rb +154 -0
- data/lib/picky/internals/generators/base.rb +19 -0
- data/lib/picky/internals/generators/partial/default.rb +7 -0
- data/lib/picky/internals/generators/partial/none.rb +35 -0
- data/lib/picky/internals/generators/partial/strategy.rb +29 -0
- data/lib/picky/internals/generators/partial/substring.rb +122 -0
- data/lib/picky/internals/generators/partial_generator.rb +19 -0
- data/lib/picky/internals/generators/similarity/default.rb +9 -0
- data/lib/picky/internals/generators/similarity/double_levenshtone.rb +81 -0
- data/lib/picky/internals/generators/similarity/none.rb +35 -0
- data/lib/picky/internals/generators/similarity/strategy.rb +11 -0
- data/lib/picky/internals/generators/similarity_generator.rb +19 -0
- data/lib/picky/internals/generators/strategy.rb +18 -0
- data/lib/picky/internals/generators/weights/default.rb +9 -0
- data/lib/picky/internals/generators/weights/logarithmic.rb +43 -0
- data/lib/picky/internals/generators/weights/strategy.rb +11 -0
- data/lib/picky/internals/generators/weights_generator.rb +19 -0
- data/lib/picky/{helpers → internals/helpers}/measuring.rb +0 -0
- data/lib/picky/internals/index/backend.rb +113 -0
- data/lib/picky/internals/index/file/basic.rb +101 -0
- data/lib/picky/internals/index/file/json.rb +38 -0
- data/lib/picky/internals/index/file/marshal.rb +38 -0
- data/lib/picky/internals/index/file/text.rb +60 -0
- data/lib/picky/internals/index/files.rb +24 -0
- data/lib/picky/internals/index/redis/basic.rb +77 -0
- data/lib/picky/internals/index/redis/list_hash.rb +46 -0
- data/lib/picky/internals/index/redis/string_hash.rb +35 -0
- data/lib/picky/internals/index/redis.rb +44 -0
- data/lib/picky/internals/indexed/bundle/base.rb +72 -0
- data/lib/picky/internals/indexed/bundle/memory.rb +69 -0
- data/lib/picky/internals/indexed/bundle/redis.rb +70 -0
- data/lib/picky/internals/indexed/categories.rb +135 -0
- data/lib/picky/internals/indexed/category.rb +90 -0
- data/lib/picky/internals/indexed/index.rb +57 -0
- data/lib/picky/{indexed → internals/indexed}/wrappers/bundle/calculation.rb +0 -0
- data/lib/picky/{indexed → internals/indexed}/wrappers/bundle/location.rb +4 -2
- data/lib/picky/{indexed → internals/indexed}/wrappers/bundle/wrapper.rb +1 -1
- data/lib/picky/internals/indexed/wrappers/exact_first.rb +65 -0
- data/lib/picky/{indexers → internals/indexers}/no_source_specified_error.rb +0 -0
- data/lib/picky/{indexers → internals/indexers}/serial.rb +2 -2
- data/lib/picky/{indexers → internals/indexers}/solr.rb +0 -0
- data/lib/picky/internals/indexing/bundle/base.rb +219 -0
- data/lib/picky/internals/indexing/bundle/memory.rb +25 -0
- data/lib/picky/internals/indexing/bundle/redis.rb +28 -0
- data/lib/picky/internals/indexing/bundle/super_base.rb +65 -0
- data/lib/picky/internals/indexing/categories.rb +42 -0
- data/lib/picky/internals/indexing/category.rb +120 -0
- data/lib/picky/internals/indexing/index.rb +67 -0
- data/lib/picky/{performant.rb → internals/performant.rb} +0 -0
- data/lib/picky/internals/query/allocation.rb +88 -0
- data/lib/picky/internals/query/allocations.rb +137 -0
- data/lib/picky/internals/query/combination.rb +80 -0
- data/lib/picky/internals/query/combinations/base.rb +84 -0
- data/lib/picky/internals/query/combinations/memory.rb +58 -0
- data/lib/picky/internals/query/combinations/redis.rb +59 -0
- data/lib/picky/internals/query/indexes.rb +180 -0
- data/lib/picky/internals/query/qualifiers.rb +81 -0
- data/lib/picky/internals/query/token.rb +215 -0
- data/lib/picky/internals/query/tokens.rb +89 -0
- data/lib/picky/{query → internals/query}/weights.rb +0 -0
- data/lib/picky/internals/results/base.rb +106 -0
- data/lib/picky/internals/results/full.rb +17 -0
- data/lib/picky/internals/results/live.rb +17 -0
- data/lib/picky/{solr → internals/solr}/schema_generator.rb +0 -0
- data/lib/picky/internals/tokenizers/base.rb +166 -0
- data/lib/picky/internals/tokenizers/index.rb +63 -0
- data/lib/picky/internals/tokenizers/query.rb +79 -0
- data/lib/picky/loader.rb +148 -112
- data/lib/picky/query/base.rb +57 -26
- data/lib/picky/query/full.rb +1 -1
- data/lib/picky/query/live.rb +1 -1
- data/lib/picky/sources/db.rb +27 -6
- data/lib/tasks/index.rake +3 -3
- data/lib/tasks/try.rake +2 -2
- data/spec/lib/aliases_spec.rb +9 -0
- data/spec/lib/application_spec.rb +3 -3
- data/spec/lib/generators/aliases_spec.rb +1 -0
- data/spec/lib/{index_api_spec.rb → index/base_spec.rb} +7 -7
- data/spec/lib/index_bundle_spec.rb +71 -0
- data/spec/lib/indexed/indexes_spec.rb +61 -0
- data/spec/lib/indexing/indexes_spec.rb +94 -24
- data/spec/lib/{adapters → internals/adapters}/rack/base_spec.rb +2 -2
- data/spec/lib/{adapters → internals/adapters}/rack/live_parameters_spec.rb +2 -2
- data/spec/lib/{adapters → internals/adapters}/rack/query_spec.rb +2 -2
- data/spec/lib/{calculations → internals/calculations}/location_spec.rb +0 -0
- data/spec/lib/{cli_spec.rb → internals/cli_spec.rb} +4 -1
- data/spec/lib/{configuration → internals/configuration}/index_spec.rb +1 -1
- data/spec/lib/{cores_spec.rb → internals/cores_spec.rb} +0 -0
- data/spec/lib/{extensions → internals/extensions}/array_spec.rb +0 -0
- data/spec/lib/{extensions → internals/extensions}/hash_spec.rb +0 -0
- data/spec/lib/{extensions → internals/extensions}/module_spec.rb +0 -0
- data/spec/lib/{extensions → internals/extensions}/object_spec.rb +0 -0
- data/spec/lib/{extensions → internals/extensions}/symbol_spec.rb +0 -0
- data/spec/lib/{frontend_adapters → internals/frontend_adapters}/rack_spec.rb +11 -11
- data/spec/lib/{cacher → internals/generators}/cacher_strategy_spec.rb +2 -2
- data/spec/lib/internals/generators/partial/default_spec.rb +17 -0
- data/spec/lib/internals/generators/partial/none_spec.rb +17 -0
- data/spec/lib/{cacher → internals/generators}/partial/substring_spec.rb +26 -27
- data/spec/lib/{cacher → internals/generators}/partial_generator_spec.rb +5 -5
- data/spec/lib/{cacher → internals/generators}/similarity/double_levenshtone_spec.rb +4 -4
- data/spec/lib/{cacher → internals/generators}/similarity/none_spec.rb +2 -2
- data/spec/lib/{cacher → internals/generators}/similarity_generator_spec.rb +4 -4
- data/spec/lib/{cacher → internals/generators}/weights/logarithmic_spec.rb +2 -2
- data/spec/lib/internals/generators/weights_generator_spec.rb +21 -0
- data/spec/lib/{helpers → internals/helpers}/measuring_spec.rb +0 -0
- data/spec/lib/{index → internals/index}/file/basic_spec.rb +2 -2
- data/spec/lib/{index → internals/index}/file/json_spec.rb +2 -2
- data/spec/lib/{index → internals/index}/file/marshal_spec.rb +2 -2
- data/spec/lib/{index → internals/index}/file/text_spec.rb +2 -2
- data/spec/lib/{index → internals/index}/files_spec.rb +2 -2
- data/spec/lib/{indexed/bundle_spec.rb → internals/indexed/bundle/memory_spec.rb} +4 -5
- data/spec/lib/{indexed → internals/indexed}/categories_spec.rb +13 -13
- data/spec/lib/{indexed → internals/indexed}/category_spec.rb +59 -32
- data/spec/lib/{indexed → internals/indexed}/index_spec.rb +5 -5
- data/spec/lib/{indexed → internals/indexed}/wrappers/bundle/calculation_spec.rb +0 -0
- data/spec/lib/{indexed → internals/indexed}/wrappers/bundle/wrapper_spec.rb +0 -0
- data/spec/lib/{indexed → internals/indexed}/wrappers/exact_first_spec.rb +5 -5
- data/spec/lib/{indexers → internals/indexers}/serial_spec.rb +0 -0
- data/spec/lib/{indexing/bundle_partial_generation_speed_spec.rb → internals/indexing/bundle/memory_partial_generation_speed_spec.rb} +3 -3
- data/spec/lib/{indexing/bundle_spec.rb → internals/indexing/bundle/memory_spec.rb} +3 -3
- data/spec/lib/{index/bundle_spec.rb → internals/indexing/bundle/super_base_spec.rb} +9 -3
- data/spec/lib/{indexing → internals/indexing}/category_spec.rb +3 -3
- data/spec/lib/{indexing → internals/indexing}/index_spec.rb +3 -3
- data/spec/lib/internals/indexing/indexes_spec.rb +36 -0
- data/spec/lib/{interfaces → internals/interfaces}/live_parameters_spec.rb +0 -0
- data/spec/lib/internals/results/base_spec.rb +105 -0
- data/spec/lib/internals/results/full_spec.rb +78 -0
- data/spec/lib/internals/results/live_spec.rb +88 -0
- data/spec/lib/{solr → internals/solr}/schema_generator_spec.rb +0 -0
- data/spec/lib/{tokenizers → internals/tokenizers}/base_spec.rb +3 -3
- data/spec/lib/{tokenizers → internals/tokenizers}/index_spec.rb +9 -9
- data/spec/lib/{tokenizers → internals/tokenizers}/query_spec.rb +11 -11
- data/spec/lib/query/allocation_spec.rb +12 -12
- data/spec/lib/query/allocations_spec.rb +19 -19
- data/spec/lib/query/base_spec.rb +28 -4
- data/spec/lib/query/combination_spec.rb +8 -9
- data/spec/lib/query/combinations/base_spec.rb +116 -0
- data/spec/lib/query/{combinations_spec.rb → combinations/memory_spec.rb} +14 -14
- data/spec/lib/query/combinations/redis_spec.rb +132 -0
- data/spec/lib/query/full_spec.rb +2 -2
- data/spec/lib/query/indexes_spec.rb +81 -0
- data/spec/lib/query/live_spec.rb +3 -3
- data/spec/lib/query/qualifiers_spec.rb +6 -6
- data/spec/lib/query/token_spec.rb +38 -38
- data/spec/lib/query/tokens_spec.rb +35 -35
- data/spec/lib/sources/db_spec.rb +23 -18
- metadata +212 -181
- data/lib/picky/adapters/rack/base.rb +0 -23
- data/lib/picky/adapters/rack/live_parameters.rb +0 -33
- data/lib/picky/adapters/rack/query.rb +0 -59
- data/lib/picky/adapters/rack.rb +0 -28
- data/lib/picky/cacher/convenience.rb +0 -3
- data/lib/picky/cacher/generator.rb +0 -15
- data/lib/picky/cacher/partial/default.rb +0 -5
- data/lib/picky/cacher/partial/none.rb +0 -31
- data/lib/picky/cacher/partial/strategy.rb +0 -21
- data/lib/picky/cacher/partial/substring.rb +0 -118
- data/lib/picky/cacher/partial_generator.rb +0 -15
- data/lib/picky/cacher/similarity/default.rb +0 -7
- data/lib/picky/cacher/similarity/double_levenshtone.rb +0 -77
- data/lib/picky/cacher/similarity/none.rb +0 -31
- data/lib/picky/cacher/similarity/strategy.rb +0 -9
- data/lib/picky/cacher/similarity_generator.rb +0 -15
- data/lib/picky/cacher/strategy.rb +0 -12
- data/lib/picky/cacher/weights/default.rb +0 -7
- data/lib/picky/cacher/weights/logarithmic.rb +0 -39
- data/lib/picky/cacher/weights/strategy.rb +0 -9
- data/lib/picky/cacher/weights_generator.rb +0 -15
- data/lib/picky/frontend_adapters/rack.rb +0 -150
- data/lib/picky/index/bundle.rb +0 -54
- data/lib/picky/index/file/basic.rb +0 -97
- data/lib/picky/index/file/json.rb +0 -34
- data/lib/picky/index/file/marshal.rb +0 -34
- data/lib/picky/index/file/text.rb +0 -56
- data/lib/picky/index/files.rb +0 -118
- data/lib/picky/index_api.rb +0 -175
- data/lib/picky/indexed/bundle.rb +0 -54
- data/lib/picky/indexed/categories.rb +0 -131
- data/lib/picky/indexed/category.rb +0 -85
- data/lib/picky/indexed/index.rb +0 -39
- data/lib/picky/indexed/wrappers/exact_first.rb +0 -61
- data/lib/picky/indexing/bundle.rb +0 -213
- data/lib/picky/indexing/categories.rb +0 -38
- data/lib/picky/indexing/category.rb +0 -117
- data/lib/picky/indexing/index.rb +0 -55
- data/lib/picky/query/allocation.rb +0 -82
- data/lib/picky/query/allocations.rb +0 -130
- data/lib/picky/query/combination.rb +0 -74
- data/lib/picky/query/combinations.rb +0 -105
- data/lib/picky/query/qualifiers.rb +0 -77
- data/lib/picky/query/token.rb +0 -202
- data/lib/picky/query/tokens.rb +0 -86
- data/lib/picky/query/weigher.rb +0 -165
- data/lib/picky/results/base.rb +0 -102
- data/lib/picky/results/full.rb +0 -13
- data/lib/picky/results/live.rb +0 -13
- data/lib/picky/tokenizers/base.rb +0 -161
- data/lib/picky/tokenizers/index.rb +0 -58
- data/lib/picky/tokenizers/query.rb +0 -74
- data/spec/lib/cacher/partial/default_spec.rb +0 -15
- data/spec/lib/cacher/partial/none_spec.rb +0 -17
- data/spec/lib/cacher/weights_generator_spec.rb +0 -21
- data/spec/lib/results/base_spec.rb +0 -257
- data/spec/lib/results/live_spec.rb +0 -15
data/lib/tasks/index.rake
CHANGED
|
@@ -16,11 +16,11 @@ namespace :index do
|
|
|
16
16
|
Indexes.take_snapshot
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
desc "Generates a specific index from index snapshots."
|
|
19
|
+
desc "Generates a specific index from index snapshots (category optional)."
|
|
20
20
|
task :specific, [:index, :category] => :application do |_, options|
|
|
21
21
|
index, category = options.index, options.category
|
|
22
|
-
Indexes.generate_index_only index.to_sym, category.to_sym
|
|
23
|
-
Indexes.generate_cache_only index.to_sym, category.to_sym
|
|
22
|
+
Indexes.generate_index_only index.to_sym, category && category.to_sym
|
|
23
|
+
Indexes.generate_cache_only index.to_sym, category && category.to_sym
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
desc 'Checks the index files for files that are suspiciously small or missing.'
|
data/lib/tasks/try.rake
CHANGED
|
@@ -6,7 +6,7 @@ namespace :try do
|
|
|
6
6
|
task :index, [:text, :index_and_category] => :application do |_, options|
|
|
7
7
|
text, index_and_category = options.text, options.index_and_category
|
|
8
8
|
|
|
9
|
-
tokenizer = index_and_category ? Indexes.find(*index_and_category.split(':')).tokenizer : Tokenizers::Index.default
|
|
9
|
+
tokenizer = index_and_category ? Indexes.find(*index_and_category.split(':')).tokenizer : Internals::Tokenizers::Index.default
|
|
10
10
|
|
|
11
11
|
puts "\"#{text}\" is saved in the index as #{tokenizer.tokenize(text.dup).to_a}"
|
|
12
12
|
end
|
|
@@ -15,7 +15,7 @@ namespace :try do
|
|
|
15
15
|
task :query, [:text] => :application do |_, options|
|
|
16
16
|
text = options.text
|
|
17
17
|
|
|
18
|
-
puts "\"#{text}\" as a query will be preprocessed into #{Tokenizers::Query.default.tokenize(text.dup).to_a.map(&:to_s).map(&:to_sym)}"
|
|
18
|
+
puts "\"#{text}\" as a query will be preprocessed into #{Internals::Tokenizers::Query.default.tokenize(text.dup).to_a.map(&:to_s).map(&:to_sym)}"
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
# desc "Try the given text with both the index and the query (type:category optional)."
|
|
@@ -19,8 +19,8 @@ describe Application do
|
|
|
19
19
|
route %r{^/books/full} => full
|
|
20
20
|
route %r{^/books/live} => live
|
|
21
21
|
end
|
|
22
|
-
Tokenizers::Index.default.tokenize 'some text'
|
|
23
|
-
Tokenizers::Query.default.tokenize 'some text'
|
|
22
|
+
Internals::Tokenizers::Index.default.tokenize 'some text'
|
|
23
|
+
Internals::Tokenizers::Query.default.tokenize 'some text'
|
|
24
24
|
}.should_not raise_error
|
|
25
25
|
end
|
|
26
26
|
it "should run ok" do
|
|
@@ -97,7 +97,7 @@ describe Application do
|
|
|
97
97
|
lambda { Application.rack_adapter }.should_not raise_error
|
|
98
98
|
end
|
|
99
99
|
it "should return a new FrontendAdapters::Rack instance" do
|
|
100
|
-
Application.rack_adapter.should be_kind_of(FrontendAdapters::Rack)
|
|
100
|
+
Application.rack_adapter.should be_kind_of(Internals::FrontendAdapters::Rack)
|
|
101
101
|
end
|
|
102
102
|
it "should cache the instance" do
|
|
103
103
|
Application.rack_adapter.should == Application.rack_adapter
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# TODO aliases spec.
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
#
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
|
-
describe
|
|
5
|
+
describe Index::Base do
|
|
6
6
|
|
|
7
7
|
context 'initializer' do
|
|
8
8
|
it 'works' do
|
|
9
|
-
lambda {
|
|
9
|
+
lambda { described_class.new :some_index_name, :some_source }.should_not raise_error
|
|
10
10
|
end
|
|
11
11
|
it 'registers with the indexes' do
|
|
12
|
-
@api =
|
|
12
|
+
@api = described_class.allocate
|
|
13
13
|
|
|
14
|
-
Indexes.should_receive(:register).once.with @api
|
|
14
|
+
::Indexes.should_receive(:register).once.with @api
|
|
15
15
|
|
|
16
16
|
@api.send :initialize, :some_index_name, :some_source
|
|
17
17
|
end
|
|
@@ -19,7 +19,7 @@ describe IndexAPI do
|
|
|
19
19
|
|
|
20
20
|
context 'unit' do
|
|
21
21
|
before(:each) do
|
|
22
|
-
@api =
|
|
22
|
+
@api = described_class.new :some_index_name, :some_source
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
describe 'define_category' do
|
|
@@ -32,8 +32,8 @@ describe IndexAPI do
|
|
|
32
32
|
end
|
|
33
33
|
it 'yields both the indexing category and the indexed category' do
|
|
34
34
|
@api.define_category(:some_name) do |indexing, indexed|
|
|
35
|
-
indexing.should be_kind_of(Indexing::Category)
|
|
36
|
-
indexed.should be_kind_of(Indexed::Category)
|
|
35
|
+
indexing.should be_kind_of(Internals::Indexing::Category)
|
|
36
|
+
indexed.should be_kind_of(Internals::Indexed::Category)
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
it 'yields the indexing category which has the given name' do
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
#
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe IndexBundle do
|
|
6
|
+
|
|
7
|
+
let(:some_index) { stub :index, :name => :some_index, :indexed => :indexed_index, :indexing => :indexing_index }
|
|
8
|
+
let(:indexes) { described_class.new }
|
|
9
|
+
let(:indexed) { stub :indexed, :register => nil }
|
|
10
|
+
let(:indexing) { stub :indexing, :register => nil }
|
|
11
|
+
|
|
12
|
+
before(:each) do
|
|
13
|
+
indexes.stub! :indexing => indexing
|
|
14
|
+
indexes.stub! :indexed => indexed
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.it_delegates method, receiver
|
|
18
|
+
it "delegates #{method} to #{receiver}" do
|
|
19
|
+
indexes.send(receiver).should_receive(method.to_sym).once
|
|
20
|
+
|
|
21
|
+
indexes.send method
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe 'delegation' do
|
|
26
|
+
it_delegates :reload, :indexed
|
|
27
|
+
it_delegates :load_from_cache, :indexed
|
|
28
|
+
|
|
29
|
+
it_delegates :check_caches, :indexing
|
|
30
|
+
it_delegates :find, :indexing
|
|
31
|
+
it_delegates :generate_cache_only, :indexing
|
|
32
|
+
it_delegates :generate_index_only, :indexing
|
|
33
|
+
it_delegates :index, :indexing
|
|
34
|
+
it_delegates :index_for_tests, :indexing
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe '[]' do
|
|
38
|
+
before(:each) do
|
|
39
|
+
indexes.register some_index
|
|
40
|
+
end
|
|
41
|
+
it 'takes strings' do
|
|
42
|
+
indexes['some_index'].should == some_index
|
|
43
|
+
end
|
|
44
|
+
it 'takes symbols' do
|
|
45
|
+
indexes[:some_index].should == some_index
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe 'register' do
|
|
50
|
+
it 'registers with the indexes' do
|
|
51
|
+
indexes.register some_index
|
|
52
|
+
|
|
53
|
+
indexes.indexes.should == [some_index]
|
|
54
|
+
end
|
|
55
|
+
it 'registers with the index map' do
|
|
56
|
+
indexes.register some_index
|
|
57
|
+
|
|
58
|
+
indexes[some_index.name].should == some_index
|
|
59
|
+
end
|
|
60
|
+
it 'registers with the indexing' do
|
|
61
|
+
indexing.should_receive(:register).once.with :indexing_index
|
|
62
|
+
|
|
63
|
+
indexes.register some_index
|
|
64
|
+
end
|
|
65
|
+
it 'registers with the indexed' do
|
|
66
|
+
indexed.should_receive(:register).once.with :indexed_index
|
|
67
|
+
|
|
68
|
+
indexes.register some_index
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Indexed::Indexes do
|
|
4
|
+
|
|
5
|
+
context 'after initialize' do
|
|
6
|
+
let(:indexes) { described_class.new }
|
|
7
|
+
it 'has an empty mapping' do
|
|
8
|
+
indexes.index_mapping.should == {}
|
|
9
|
+
end
|
|
10
|
+
it 'has no indexes' do
|
|
11
|
+
indexes.indexes.should == []
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe 'methods' do
|
|
16
|
+
let(:indexes) { described_class.new }
|
|
17
|
+
before(:each) do
|
|
18
|
+
@index1 = stub :index1, :name => :index1
|
|
19
|
+
@index2 = stub :index2, :name => :index2
|
|
20
|
+
indexes.register @index1
|
|
21
|
+
indexes.register @index2
|
|
22
|
+
end
|
|
23
|
+
describe '[]' do
|
|
24
|
+
it 'should use the mapping' do
|
|
25
|
+
indexes[:index2].should == @index2
|
|
26
|
+
end
|
|
27
|
+
it 'should allow strings' do
|
|
28
|
+
indexes['index1'].should == @index1
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
describe 'register' do
|
|
32
|
+
it 'should have indexes' do
|
|
33
|
+
indexes.indexes.should == [@index1, @index2]
|
|
34
|
+
end
|
|
35
|
+
it 'should have a mapping' do
|
|
36
|
+
indexes.index_mapping.should == { :index1 => @index1, :index2 => @index2 }
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
describe 'clear' do
|
|
40
|
+
it 'clears the indexes' do
|
|
41
|
+
indexes.clear
|
|
42
|
+
|
|
43
|
+
indexes.indexes.should == []
|
|
44
|
+
end
|
|
45
|
+
it 'clears the mapping' do
|
|
46
|
+
indexes.clear
|
|
47
|
+
|
|
48
|
+
indexes.index_mapping.should == {}
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
describe 'reload' do
|
|
52
|
+
it 'calls load_from_cache on each in order' do
|
|
53
|
+
@index1.should_receive(:load_from_cache).once.with.ordered
|
|
54
|
+
@index2.should_receive(:load_from_cache).once.with.ordered
|
|
55
|
+
|
|
56
|
+
indexes.reload
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
|
@@ -1,36 +1,106 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Indexing::Indexes do
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
|
|
5
|
+
context 'after initialize' do
|
|
6
|
+
let(:indexes) { described_class.new }
|
|
7
|
+
it 'has no indexes' do
|
|
8
|
+
indexes.indexes.should == []
|
|
9
|
+
end
|
|
7
10
|
end
|
|
8
11
|
|
|
9
|
-
describe '
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
describe 'methods' do
|
|
13
|
+
let(:indexes) { described_class.new }
|
|
14
|
+
before(:each) do
|
|
15
|
+
@index1 = stub :index1, :name => :index1
|
|
16
|
+
@index2 = stub :index2, :name => :index2
|
|
17
|
+
indexes.register @index1
|
|
18
|
+
indexes.register @index2
|
|
12
19
|
end
|
|
13
|
-
|
|
14
|
-
|
|
20
|
+
describe 'generate_index_only' do
|
|
21
|
+
context 'with index:category found' do
|
|
22
|
+
before(:each) do
|
|
23
|
+
indexes.should_receive(:find).once.with(:index, :category).and_return @index1
|
|
24
|
+
end
|
|
25
|
+
it 'indexes' do
|
|
26
|
+
@index1.should_receive(:index).once.with
|
|
27
|
+
|
|
28
|
+
indexes.generate_index_only :index, :category
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
context 'with index not found' do
|
|
32
|
+
before(:each) do
|
|
33
|
+
indexes.should_receive(:find).once.with(:index, :category).and_return nil
|
|
34
|
+
end
|
|
35
|
+
it 'indexes' do
|
|
36
|
+
@index1.should_receive(:index).never
|
|
37
|
+
|
|
38
|
+
indexes.generate_index_only :index, :category
|
|
39
|
+
end
|
|
40
|
+
end
|
|
15
41
|
end
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
42
|
+
describe 'generate_cache_only' do
|
|
43
|
+
context 'with index:category found' do
|
|
44
|
+
before(:each) do
|
|
45
|
+
indexes.should_receive(:find).once.with(:index, :category).and_return @index1
|
|
46
|
+
end
|
|
47
|
+
it 'indexes' do
|
|
48
|
+
@index1.should_receive(:index).once.with
|
|
49
|
+
|
|
50
|
+
indexes.generate_index_only :index, :category
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
context 'with index not found' do
|
|
54
|
+
before(:each) do
|
|
55
|
+
indexes.should_receive(:find).once.with(:index, :category).and_return nil
|
|
56
|
+
end
|
|
57
|
+
it 'indexes' do
|
|
58
|
+
@index1.should_receive(:index).never
|
|
59
|
+
|
|
60
|
+
indexes.generate_index_only :index, :category
|
|
61
|
+
end
|
|
62
|
+
end
|
|
25
63
|
end
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
64
|
+
describe 'index_for_tests' do
|
|
65
|
+
it 'takes a snapshot, then indexes and caches each' do
|
|
66
|
+
indexes.should_receive(:take_snapshot).once.with.ordered
|
|
67
|
+
@index1.should_receive(:index).once.with.ordered
|
|
68
|
+
@index1.should_receive(:cache).once.with.ordered
|
|
69
|
+
@index2.should_receive(:index).once.with.ordered
|
|
70
|
+
@index2.should_receive(:cache).once.with.ordered
|
|
71
|
+
|
|
72
|
+
indexes.index_for_tests
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
describe 'register' do
|
|
76
|
+
it 'should have indexes' do
|
|
77
|
+
indexes.indexes.should == [@index1, @index2]
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
describe 'clear' do
|
|
81
|
+
it 'clears the indexes' do
|
|
82
|
+
indexes.clear
|
|
83
|
+
|
|
84
|
+
indexes.indexes.should == []
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
def self.it_delegates_each name
|
|
88
|
+
describe name do
|
|
89
|
+
it 'calls load_from_cache on each in order' do
|
|
90
|
+
@index1.should_receive(name).once.with.ordered
|
|
91
|
+
@index2.should_receive(name).once.with.ordered
|
|
92
|
+
|
|
93
|
+
indexes.send name
|
|
94
|
+
end
|
|
95
|
+
end
|
|
33
96
|
end
|
|
97
|
+
it_delegates_each :take_snapshot
|
|
98
|
+
it_delegates_each :generate_caches
|
|
99
|
+
it_delegates_each :backup_caches
|
|
100
|
+
it_delegates_each :restore_caches
|
|
101
|
+
it_delegates_each :check_caches
|
|
102
|
+
it_delegates_each :clear_caches
|
|
103
|
+
it_delegates_each :create_directory_structure
|
|
34
104
|
end
|
|
35
105
|
|
|
36
106
|
end
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
#
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
|
-
describe Adapters::Rack::LiveParameters do
|
|
5
|
+
describe Internals::Adapters::Rack::LiveParameters do
|
|
6
6
|
|
|
7
7
|
before(:each) do
|
|
8
8
|
@live_parameters = stub :live_parameters
|
|
9
|
-
@adapter =
|
|
9
|
+
@adapter = described_class.new @live_parameters
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
describe 'to_app' do
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
#
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
|
-
describe Adapters::Rack::Query do
|
|
5
|
+
describe Internals::Adapters::Rack::Query do
|
|
6
6
|
|
|
7
7
|
before(:each) do
|
|
8
8
|
@query = stub :query
|
|
9
|
-
@adapter =
|
|
9
|
+
@adapter = described_class.new @query
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
describe 'to_app' do
|
|
File without changes
|
|
@@ -4,7 +4,7 @@ require 'spec_helper'
|
|
|
4
4
|
|
|
5
5
|
# We need to load the CLI file explicitly as the CLI is not loaded with the Loader (not needed in the server, only for script runs).
|
|
6
6
|
#
|
|
7
|
-
require File.expand_path '
|
|
7
|
+
require File.expand_path '../../../../lib/picky/internals/cli', __FILE__
|
|
8
8
|
|
|
9
9
|
# TODO Finish this prototype Spec, redesign.
|
|
10
10
|
#
|
|
@@ -30,6 +30,9 @@ describe Picky::CLI do
|
|
|
30
30
|
it 'returns Live for live' do
|
|
31
31
|
@cli.executor_class_for(:live).should == [Picky::CLI::Live, "host:port/path (default: localhost:8080/admin)", "port (default: 4568)"]
|
|
32
32
|
end
|
|
33
|
+
it 'returns Help for silly input' do
|
|
34
|
+
@cli.executor_class_for(:gagagagagagaga).should == [Picky::CLI::Help]
|
|
35
|
+
end
|
|
33
36
|
end
|
|
34
37
|
end
|
|
35
38
|
|
|
@@ -42,7 +42,7 @@ describe 'Configuration::Index' do
|
|
|
42
42
|
@config.identifier.should equal(@config.identifier)
|
|
43
43
|
end
|
|
44
44
|
it "returns the right thing" do
|
|
45
|
-
@config.identifier.should == 'some_index
|
|
45
|
+
@config.identifier.should == 'some_index:some_category'
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
describe "index_root" do
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
#
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
|
|
5
|
-
describe FrontendAdapters::Rack do
|
|
5
|
+
describe Internals::FrontendAdapters::Rack do
|
|
6
6
|
|
|
7
7
|
before(:each) do
|
|
8
|
-
@rack_adapter =
|
|
8
|
+
@rack_adapter = described_class.new
|
|
9
9
|
@rack_adapter.stub! :exclaim
|
|
10
10
|
end
|
|
11
11
|
|
|
@@ -102,7 +102,7 @@ describe FrontendAdapters::Rack do
|
|
|
102
102
|
env = rack_defaults_for '/searches/some_route?query=some_query'
|
|
103
103
|
|
|
104
104
|
full = stub :full
|
|
105
|
-
full.should_receive(:search_with_text).once.with(anything, 0).and_return(Results::Full.new)
|
|
105
|
+
full.should_receive(:search_with_text).once.with(anything, 0).and_return(Internals::Results::Full.new)
|
|
106
106
|
Query::Full.stub! :new => full
|
|
107
107
|
|
|
108
108
|
@rack_adapter.route '/searches/some_route' => Query::Full.new(:some_index, :some_other_index)
|
|
@@ -114,7 +114,7 @@ describe FrontendAdapters::Rack do
|
|
|
114
114
|
env = rack_defaults_for '/searches/some_route?query=some_query&type=some_type'
|
|
115
115
|
|
|
116
116
|
full = stub :full
|
|
117
|
-
full.should_receive(:search_with_text).once.with(anything, 0).and_return(Results::Full.new)
|
|
117
|
+
full.should_receive(:search_with_text).once.with(anything, 0).and_return(Internals::Results::Full.new)
|
|
118
118
|
Query::Full.stub! :new => full
|
|
119
119
|
|
|
120
120
|
@rack_adapter.route '/searches/some_route' => Query::Full.new(:some_index, :some_other_index), :query => { :type => :some_type }
|
|
@@ -175,7 +175,7 @@ describe FrontendAdapters::Rack do
|
|
|
175
175
|
@rack_adapter.route %r{regexp1} => :query1, %r{regexp2} => :query2, :some => :option
|
|
176
176
|
end
|
|
177
177
|
it 'does not accept nil queries' do
|
|
178
|
-
lambda { @rack_adapter.route %r{some/regexp} => nil }.should raise_error(FrontendAdapters::Rack::RouteTargetNilError, /Routing for \/some\\\/regexp\/ was defined with a nil target object, i.e. \/some\\\/regexp\/ => nil./)
|
|
178
|
+
lambda { @rack_adapter.route %r{some/regexp} => nil }.should raise_error(Internals::FrontendAdapters::Rack::RouteTargetNilError, /Routing for \/some\\\/regexp\/ was defined with a nil target object, i.e. \/some\\\/regexp\/ => nil./)
|
|
179
179
|
end
|
|
180
180
|
end
|
|
181
181
|
|
|
@@ -189,7 +189,7 @@ describe FrontendAdapters::Rack do
|
|
|
189
189
|
|
|
190
190
|
describe 'route_one' do
|
|
191
191
|
before(:each) do
|
|
192
|
-
Adapters::Rack.stub! :app_for => :some_query_app
|
|
192
|
+
Internals::Adapters::Rack.stub! :app_for => :some_query_app
|
|
193
193
|
end
|
|
194
194
|
it 'should add the right route' do
|
|
195
195
|
@routes.should_receive(:add_route).once.with :some_query_app, { :request_method => "GET", :path_info => /some_url/ }
|
|
@@ -210,7 +210,7 @@ describe FrontendAdapters::Rack do
|
|
|
210
210
|
|
|
211
211
|
describe 'default' do
|
|
212
212
|
it 'should call answer' do
|
|
213
|
-
@rack_adapter.should_receive(:answer).once.with nil, FrontendAdapters::Rack::STATUSES[200]
|
|
213
|
+
@rack_adapter.should_receive(:answer).once.with nil, Internals::FrontendAdapters::Rack::STATUSES[200]
|
|
214
214
|
|
|
215
215
|
@rack_adapter.default 200
|
|
216
216
|
end
|
|
@@ -218,12 +218,12 @@ describe FrontendAdapters::Rack do
|
|
|
218
218
|
|
|
219
219
|
describe 'root' do
|
|
220
220
|
it 'should call answer' do
|
|
221
|
-
@rack_adapter.should_receive(:answer).once.with %r{^/$}, FrontendAdapters::Rack::STATUSES[200]
|
|
221
|
+
@rack_adapter.should_receive(:answer).once.with %r{^/$}, Internals::FrontendAdapters::Rack::STATUSES[200]
|
|
222
222
|
|
|
223
223
|
@rack_adapter.root 200
|
|
224
224
|
end
|
|
225
225
|
it 'should call answer' do
|
|
226
|
-
@rack_adapter.should_receive(:answer).once.with %r{^/$}, FrontendAdapters::Rack::STATUSES[404]
|
|
226
|
+
@rack_adapter.should_receive(:answer).once.with %r{^/$}, Internals::FrontendAdapters::Rack::STATUSES[404]
|
|
227
227
|
|
|
228
228
|
@rack_adapter.root 404
|
|
229
229
|
end
|
|
@@ -252,14 +252,14 @@ describe FrontendAdapters::Rack do
|
|
|
252
252
|
context 'without app' do
|
|
253
253
|
context 'with url' do
|
|
254
254
|
it 'should use the 404 with default_options from the url' do
|
|
255
|
-
@routes.should_receive(:add_route).once.with FrontendAdapters::Rack::STATUSES[200], { :request_method => "GET", :path_info => /some_url/ }
|
|
255
|
+
@routes.should_receive(:add_route).once.with Internals::FrontendAdapters::Rack::STATUSES[200], { :request_method => "GET", :path_info => /some_url/ }
|
|
256
256
|
|
|
257
257
|
@rack_adapter.answer 'some_url'
|
|
258
258
|
end
|
|
259
259
|
end
|
|
260
260
|
context 'without url' do
|
|
261
261
|
it 'should use the 404 with default_options' do
|
|
262
|
-
@routes.should_receive(:add_route).once.with FrontendAdapters::Rack::STATUSES[200], { :request_method => "GET" }
|
|
262
|
+
@routes.should_receive(:add_route).once.with Internals::FrontendAdapters::Rack::STATUSES[200], { :request_method => "GET" }
|
|
263
263
|
|
|
264
264
|
@rack_adapter.answer
|
|
265
265
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
describe
|
|
3
|
+
describe Internals::Generators::Strategy do
|
|
4
4
|
|
|
5
5
|
describe "saved?" do
|
|
6
6
|
it "returns the right answer" do
|
|
7
|
-
|
|
7
|
+
described_class.new.saved?.should == true
|
|
8
8
|
end
|
|
9
9
|
end
|
|
10
10
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Internals::Generators::Partial::Default do
|
|
4
|
+
|
|
5
|
+
let(:default) { Internals::Generators::Partial::Default }
|
|
6
|
+
|
|
7
|
+
it "should be a subtoken" do
|
|
8
|
+
default.should be_kind_of(Internals::Generators::Partial::Substring)
|
|
9
|
+
end
|
|
10
|
+
it "should be a the right down to" do
|
|
11
|
+
default.from.should == -3
|
|
12
|
+
end
|
|
13
|
+
it "should be a the right starting at" do
|
|
14
|
+
default.to.should == -1
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Internals::Generators::Partial::None do
|
|
4
|
+
|
|
5
|
+
it "has the right superclass" do
|
|
6
|
+
described_class.should < Internals::Generators::Partial::Strategy
|
|
7
|
+
end
|
|
8
|
+
it "returns an empty index" do
|
|
9
|
+
described_class.new.generate_from(:unimportant).should == {}
|
|
10
|
+
end
|
|
11
|
+
describe 'use_exact_for_partial?' do
|
|
12
|
+
it 'returns true' do
|
|
13
|
+
described_class.new.use_exact_for_partial?.should == true
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|