picky 2.7.0 → 3.0.0.pre1

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 (213) hide show
  1. data/lib/picky/adapters/rack/base.rb +20 -16
  2. data/lib/picky/adapters/rack/live_parameters.rb +28 -24
  3. data/lib/picky/adapters/rack/search.rb +67 -0
  4. data/lib/picky/adapters/rack.rb +27 -23
  5. data/lib/picky/application.rb +246 -236
  6. data/lib/picky/backend/base.rb +115 -119
  7. data/lib/picky/backend/file/basic.rb +102 -98
  8. data/lib/picky/backend/file/json.rb +27 -23
  9. data/lib/picky/backend/file/marshal.rb +32 -28
  10. data/lib/picky/backend/file/text.rb +45 -41
  11. data/lib/picky/backend/files.rb +19 -15
  12. data/lib/picky/backend/redis/basic.rb +76 -72
  13. data/lib/picky/backend/redis/list_hash.rb +40 -36
  14. data/lib/picky/backend/redis/string_hash.rb +30 -26
  15. data/lib/picky/backend/redis.rb +32 -28
  16. data/lib/picky/bundle.rb +82 -57
  17. data/lib/{bundling.rb → picky/bundling.rb} +0 -0
  18. data/lib/picky/calculations/location.rb +51 -47
  19. data/lib/picky/categories.rb +60 -56
  20. data/lib/picky/categories_indexed.rb +73 -82
  21. data/lib/picky/categories_indexing.rb +12 -8
  22. data/lib/picky/category.rb +109 -120
  23. data/lib/picky/category_indexed.rb +39 -41
  24. data/lib/picky/category_indexing.rb +123 -125
  25. data/lib/picky/character_substituters/west_european.rb +32 -26
  26. data/lib/{constants.rb → picky/constants.rb} +0 -0
  27. data/lib/picky/cores.rb +96 -92
  28. data/lib/{deployment.rb → picky/deployment.rb} +0 -0
  29. data/lib/picky/frontend_adapters/rack.rb +133 -118
  30. data/lib/picky/generators/aliases.rb +5 -3
  31. data/lib/picky/generators/base.rb +11 -7
  32. data/lib/picky/generators/partial/default.rb +7 -3
  33. data/lib/picky/generators/partial/none.rb +24 -20
  34. data/lib/picky/generators/partial/strategy.rb +20 -16
  35. data/lib/picky/generators/partial/substring.rb +94 -90
  36. data/lib/picky/generators/partial_generator.rb +11 -7
  37. data/lib/picky/generators/similarity/default.rb +9 -5
  38. data/lib/picky/generators/similarity/double_metaphone.rb +20 -16
  39. data/lib/picky/generators/similarity/metaphone.rb +20 -16
  40. data/lib/picky/generators/similarity/none.rb +23 -19
  41. data/lib/picky/generators/similarity/phonetic.rb +49 -45
  42. data/lib/picky/generators/similarity/soundex.rb +20 -16
  43. data/lib/picky/generators/similarity/strategy.rb +10 -6
  44. data/lib/picky/generators/similarity_generator.rb +11 -7
  45. data/lib/picky/generators/strategy.rb +14 -10
  46. data/lib/picky/generators/weights/default.rb +9 -5
  47. data/lib/picky/generators/weights/logarithmic.rb +30 -26
  48. data/lib/picky/generators/weights/strategy.rb +10 -6
  49. data/lib/picky/generators/weights_generator.rb +11 -7
  50. data/lib/picky/helpers/measuring.rb +20 -16
  51. data/lib/picky/indexed/bundle/base.rb +39 -37
  52. data/lib/picky/indexed/bundle/memory.rb +68 -64
  53. data/lib/picky/indexed/bundle/redis.rb +73 -69
  54. data/lib/picky/indexed/wrappers/bundle/calculation.rb +26 -22
  55. data/lib/picky/indexed/wrappers/bundle/location.rb +30 -26
  56. data/lib/picky/indexed/wrappers/bundle/wrapper.rb +36 -32
  57. data/lib/picky/indexed/wrappers/category/location.rb +17 -13
  58. data/lib/picky/indexed/wrappers/exact_first.rb +46 -42
  59. data/lib/picky/indexers/base.rb +26 -22
  60. data/lib/picky/indexers/parallel.rb +62 -58
  61. data/lib/picky/indexers/serial.rb +41 -37
  62. data/lib/picky/indexes/index.rb +400 -0
  63. data/lib/picky/indexes/index_indexed.rb +24 -0
  64. data/lib/picky/indexes/index_indexing.rb +138 -0
  65. data/lib/picky/indexes/memory.rb +20 -0
  66. data/lib/picky/indexes/redis.rb +20 -0
  67. data/lib/picky/indexes.rb +68 -61
  68. data/lib/picky/indexes_indexed.rb +16 -12
  69. data/lib/picky/indexes_indexing.rb +41 -37
  70. data/lib/picky/indexing/bundle/base.rb +216 -205
  71. data/lib/picky/indexing/bundle/memory.rb +16 -11
  72. data/lib/picky/indexing/bundle/redis.rb +14 -12
  73. data/lib/picky/indexing/wrappers/category/location.rb +17 -13
  74. data/lib/picky/interfaces/live_parameters.rb +159 -154
  75. data/lib/picky/loader.rb +267 -304
  76. data/lib/picky/loggers/search.rb +20 -13
  77. data/lib/picky/no_source_specified_exception.rb +7 -3
  78. data/lib/picky/performant.rb +6 -2
  79. data/lib/picky/query/allocation.rb +71 -67
  80. data/lib/picky/query/allocations.rb +99 -94
  81. data/lib/picky/query/combination.rb +70 -66
  82. data/lib/picky/query/combinations/base.rb +56 -52
  83. data/lib/picky/query/combinations/memory.rb +36 -32
  84. data/lib/picky/query/combinations/redis.rb +66 -62
  85. data/lib/picky/query/indexes.rb +175 -160
  86. data/lib/picky/query/qualifier_category_mapper.rb +43 -0
  87. data/lib/picky/query/token.rb +165 -172
  88. data/lib/picky/query/tokens.rb +86 -82
  89. data/lib/picky/query/weights.rb +44 -48
  90. data/lib/picky/query.rb +5 -1
  91. data/lib/picky/rack/harakiri.rb +51 -47
  92. data/lib/picky/results.rb +81 -77
  93. data/lib/picky/search.rb +169 -158
  94. data/lib/picky/sinatra.rb +34 -0
  95. data/lib/picky/sources/base.rb +73 -70
  96. data/lib/picky/sources/couch.rb +61 -57
  97. data/lib/picky/sources/csv.rb +68 -64
  98. data/lib/picky/sources/db.rb +139 -135
  99. data/lib/picky/sources/delicious.rb +52 -48
  100. data/lib/picky/sources/mongo.rb +68 -63
  101. data/lib/picky/sources/wrappers/base.rb +20 -16
  102. data/lib/picky/sources/wrappers/location.rb +37 -33
  103. data/lib/picky/statistics.rb +46 -43
  104. data/lib/picky/tasks.rb +3 -0
  105. data/lib/picky/tokenizers/base.rb +192 -187
  106. data/lib/picky/tokenizers/index.rb +25 -21
  107. data/lib/picky/tokenizers/location.rb +33 -29
  108. data/lib/picky/tokenizers/query.rb +49 -43
  109. data/lib/picky.rb +21 -13
  110. data/lib/tasks/application.rake +1 -1
  111. data/lib/tasks/index.rake +3 -3
  112. data/lib/tasks/routes.rake +1 -1
  113. data/lib/tasks/server.rake +1 -1
  114. data/spec/lib/adapters/rack/base_spec.rb +1 -1
  115. data/spec/lib/adapters/rack/live_parameters_spec.rb +1 -1
  116. data/spec/lib/adapters/rack/query_spec.rb +1 -1
  117. data/spec/lib/application_spec.rb +39 -32
  118. data/spec/lib/backend/file/basic_spec.rb +2 -2
  119. data/spec/lib/backend/file/json_spec.rb +2 -2
  120. data/spec/lib/backend/file/marshal_spec.rb +2 -2
  121. data/spec/lib/backend/file/text_spec.rb +1 -1
  122. data/spec/lib/backend/files_spec.rb +14 -24
  123. data/spec/lib/backend/redis/basic_spec.rb +2 -2
  124. data/spec/lib/backend/redis/list_hash_spec.rb +3 -3
  125. data/spec/lib/backend/redis/string_hash_spec.rb +3 -3
  126. data/spec/lib/backend/redis_spec.rb +20 -13
  127. data/spec/lib/calculations/location_spec.rb +1 -1
  128. data/spec/lib/categories_indexed_spec.rb +16 -34
  129. data/spec/lib/category_indexed_spec.rb +9 -27
  130. data/spec/lib/category_indexing_spec.rb +2 -3
  131. data/spec/lib/category_spec.rb +10 -10
  132. data/spec/lib/character_substituters/west_european_spec.rb +6 -5
  133. data/spec/lib/cores_spec.rb +17 -17
  134. data/spec/lib/extensions/symbol_spec.rb +15 -1
  135. data/spec/lib/frontend_adapters/rack_spec.rb +20 -20
  136. data/spec/lib/generators/aliases_spec.rb +3 -3
  137. data/spec/lib/generators/cacher_strategy_spec.rb +1 -1
  138. data/spec/lib/generators/partial/default_spec.rb +3 -3
  139. data/spec/lib/generators/partial/none_spec.rb +2 -2
  140. data/spec/lib/generators/partial/substring_spec.rb +1 -1
  141. data/spec/lib/generators/partial_generator_spec.rb +3 -3
  142. data/spec/lib/generators/similarity/double_metaphone_spec.rb +1 -1
  143. data/spec/lib/generators/similarity/metaphone_spec.rb +1 -1
  144. data/spec/lib/generators/similarity/none_spec.rb +1 -1
  145. data/spec/lib/generators/similarity/phonetic_spec.rb +1 -1
  146. data/spec/lib/generators/similarity/soundex_spec.rb +1 -1
  147. data/spec/lib/generators/similarity_generator_spec.rb +2 -2
  148. data/spec/lib/generators/weights/logarithmic_spec.rb +1 -1
  149. data/spec/lib/generators/weights_generator_spec.rb +1 -1
  150. data/spec/lib/helpers/measuring_spec.rb +2 -2
  151. data/spec/lib/indexed/bundle/memory_spec.rb +6 -6
  152. data/spec/lib/indexed/bundle/redis_spec.rb +4 -4
  153. data/spec/lib/indexed/wrappers/bundle/calculation_spec.rb +2 -3
  154. data/spec/lib/indexed/wrappers/bundle/wrapper_spec.rb +2 -2
  155. data/spec/lib/indexed/wrappers/exact_first_spec.rb +5 -5
  156. data/spec/lib/indexers/base_spec.rb +1 -1
  157. data/spec/lib/indexers/parallel_spec.rb +1 -1
  158. data/spec/lib/indexers/serial_spec.rb +1 -1
  159. data/spec/lib/{index/base_indexed_spec.rb → indexes/index_indexed_spec.rb} +3 -3
  160. data/spec/lib/{index/base_indexing_spec.rb → indexes/index_indexing_spec.rb} +19 -2
  161. data/spec/lib/{index/base_spec.rb → indexes/index_spec.rb} +6 -25
  162. data/spec/lib/{index → indexes}/redis_spec.rb +1 -1
  163. data/spec/lib/indexes_class_spec.rb +2 -2
  164. data/spec/lib/indexes_indexed_spec.rb +1 -1
  165. data/spec/lib/indexes_indexing_spec.rb +1 -1
  166. data/spec/lib/indexes_spec.rb +1 -1
  167. data/spec/lib/indexing/bundle/base_spec.rb +7 -5
  168. data/spec/lib/indexing/bundle/memory_partial_generation_speed_spec.rb +4 -4
  169. data/spec/lib/indexing/bundle/memory_spec.rb +15 -15
  170. data/spec/lib/indexing/bundle/redis_spec.rb +9 -9
  171. data/spec/lib/interfaces/live_parameters_spec.rb +5 -5
  172. data/spec/lib/loader_spec.rb +17 -19
  173. data/spec/lib/loggers/search_spec.rb +2 -2
  174. data/spec/lib/query/allocation_spec.rb +1 -1
  175. data/spec/lib/query/allocations_spec.rb +1 -1
  176. data/spec/lib/query/combination_spec.rb +4 -4
  177. data/spec/lib/query/combinations/base_spec.rb +1 -1
  178. data/spec/lib/query/combinations/memory_spec.rb +1 -1
  179. data/spec/lib/query/combinations/redis_spec.rb +1 -1
  180. data/spec/lib/query/indexes_spec.rb +7 -2
  181. data/spec/lib/query/qualifier_category_mapper_spec.rb +34 -0
  182. data/spec/lib/query/token_spec.rb +32 -53
  183. data/spec/lib/query/tokens_spec.rb +30 -35
  184. data/spec/lib/query/weights_spec.rb +16 -16
  185. data/spec/lib/rack/harakiri_spec.rb +5 -5
  186. data/spec/lib/results_spec.rb +1 -1
  187. data/spec/lib/search_spec.rb +24 -22
  188. data/spec/lib/sinatra_spec.rb +36 -0
  189. data/spec/lib/sources/base_spec.rb +1 -1
  190. data/spec/lib/sources/couch_spec.rb +9 -9
  191. data/spec/lib/sources/csv_spec.rb +7 -7
  192. data/spec/lib/sources/db_spec.rb +2 -2
  193. data/spec/lib/sources/delicious_spec.rb +5 -5
  194. data/spec/lib/sources/mongo_spec.rb +7 -7
  195. data/spec/lib/sources/wrappers/base_spec.rb +2 -2
  196. data/spec/lib/sources/wrappers/location_spec.rb +1 -1
  197. data/spec/lib/statistics_spec.rb +1 -1
  198. data/spec/lib/tokenizers/base_spec.rb +2 -2
  199. data/spec/lib/tokenizers/index_spec.rb +1 -1
  200. data/spec/lib/tokenizers/query_spec.rb +1 -1
  201. metadata +30 -30
  202. data/lib/picky/adapters/rack/query.rb +0 -65
  203. data/lib/picky/index/base.rb +0 -409
  204. data/lib/picky/index/base_indexed.rb +0 -29
  205. data/lib/picky/index/base_indexing.rb +0 -127
  206. data/lib/picky/index/memory.rb +0 -16
  207. data/lib/picky/index/redis.rb +0 -16
  208. data/lib/picky/query/qualifiers.rb +0 -76
  209. data/lib/picky/query/solr.rb +0 -60
  210. data/lib/picky/signals.rb +0 -8
  211. data/lib/picky-tasks.rb +0 -6
  212. data/lib/tasks/spec.rake +0 -11
  213. data/spec/lib/query/qualifiers_spec.rb +0 -31
@@ -1,12 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Indexing::Bundle::Base do
3
+ describe Picky::Indexing::Bundle::Base do
4
4
 
5
5
  before(:each) do
6
- @configuration = stub :configuration, :identifier => 'some_identifier'
7
- Backend::Files.stub! :new
8
- @similarity = Similarity::DoubleMetaphone.new 3
9
- @bundle = described_class.new :some_name, @configuration, :some_weights, :some_partial, @similarity
6
+ @category = stub :category,
7
+ :prepared_index_path => 'prepared/index/path',
8
+ :identifier => 'some_identifier'
9
+ Picky::Backend::Files.stub! :new
10
+ @similarity = Picky::Similarity::DoubleMetaphone.new 3
11
+ @bundle = described_class.new :some_name, @category, :some_weights, :some_partial, @similarity
10
12
  end
11
13
 
12
14
  describe 'identifier' do
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Indexing::Bundle::Memory do
3
+ describe Picky::Indexing::Bundle::Memory do
4
4
 
5
5
  before(:each) do
6
- @index = Index::Memory.new :some_index, source: []
7
- @category = Category.new :some_category, @index
6
+ @index = Picky::Indexes::Memory.new :some_index, source: []
7
+ @category = Picky::Category.new :some_category, @index
8
8
 
9
- @partial_strategy = Generators::Partial::Substring.new :from => 1
9
+ @partial_strategy = Picky::Generators::Partial::Substring.new :from => 1
10
10
  @exact = described_class.new :some_name, @category, nil, @partial_strategy, nil
11
11
  end
12
12
 
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Indexing::Bundle::Memory do
3
+ describe Picky::Indexing::Bundle::Memory do
4
4
 
5
5
  before(:each) do
6
- @index = Index::Memory.new :some_index, source: []
7
- @category = Category.new :some_category, @index
6
+ @index = Picky::Indexes::Memory.new :some_index, source: []
7
+ @category = Picky::Category.new :some_category, @index
8
8
 
9
9
  @partial = stub :partial
10
10
  @weights = stub :weights
@@ -59,9 +59,9 @@ describe Indexing::Bundle::Memory do
59
59
 
60
60
  describe 'retrieve' do
61
61
  before(:each) do
62
- files = stub :files
63
- files.should_receive(:retrieve).once.and_yield ' 1234', :some_token
64
- index.stub! :files => files
62
+ prepared = stub :prepared
63
+ prepared.should_receive(:retrieve).once.and_yield ' 1234', :some_token
64
+ index.stub! :prepared => prepared
65
65
 
66
66
  @ary = stub :ary
67
67
  inverted = stub :inverted, :[] => @ary
@@ -69,7 +69,7 @@ describe Indexing::Bundle::Memory do
69
69
  end
70
70
  context 'id key format' do
71
71
  before(:each) do
72
- index.should_receive(:[]).once.with(:key_format).and_return :to_i
72
+ @category.stub! :key_format => :to_i
73
73
  end
74
74
  it 'should call the other methods correctly' do
75
75
  @ary.should_receive(:<<).once.with 1234
@@ -79,7 +79,7 @@ describe Indexing::Bundle::Memory do
79
79
  end
80
80
  context 'other key format' do
81
81
  before(:each) do
82
- index.should_receive(:[]).once.with(:key_format).and_return :strip
82
+ @category.stub! :key_format => :strip
83
83
  end
84
84
  it 'should call the other methods correctly' do
85
85
  @ary.should_receive(:<<).once.with '1234'
@@ -89,7 +89,7 @@ describe Indexing::Bundle::Memory do
89
89
  end
90
90
  context 'no key format - default' do
91
91
  before(:each) do
92
- index.should_receive(:[]).once.with(:key_format).and_return nil
92
+ @category.stub! :key_format => nil
93
93
  end
94
94
  it 'should call the other methods correctly' do
95
95
  @ary.should_receive(:<<).once.with 1234
@@ -211,11 +211,11 @@ describe Indexing::Bundle::Memory do
211
211
  end
212
212
  describe 'warn_if_similarity_small' do
213
213
  before(:each) do
214
- @files = index.files
214
+ @backend = index.backend
215
215
  end
216
216
  context "files similarity cache small" do
217
217
  before(:each) do
218
- @files.stub! :similarity_cache_small? => true
218
+ @backend.stub! :similarity_cache_small? => true
219
219
  end
220
220
  it "warns" do
221
221
  index.should_receive(:warn_cache_small).once.with :similarity
@@ -225,7 +225,7 @@ describe Indexing::Bundle::Memory do
225
225
  end
226
226
  context "files similarity cache not small" do
227
227
  before(:each) do
228
- @files.stub! :similarity_cache_small? => false
228
+ @backend.stub! :similarity_cache_small? => false
229
229
  end
230
230
  it "does not warn" do
231
231
  index.should_receive(:warn_cache_small).never
@@ -236,11 +236,11 @@ describe Indexing::Bundle::Memory do
236
236
  end
237
237
  describe 'raise_unless_similarity_ok' do
238
238
  before(:each) do
239
- @files = index.files
239
+ @backend = index.backend
240
240
  end
241
241
  context "files similarity cache ok" do
242
242
  before(:each) do
243
- @files.stub! :similarity_cache_ok? => true
243
+ @backend.stub! :similarity_cache_ok? => true
244
244
  end
245
245
  it "warns" do
246
246
  index.should_receive(:raise_cache_missing).never
@@ -250,7 +250,7 @@ describe Indexing::Bundle::Memory do
250
250
  end
251
251
  context "files similarity cache not ok" do
252
252
  before(:each) do
253
- @files.stub! :similarity_cache_ok? => false
253
+ @backend.stub! :similarity_cache_ok? => false
254
254
  end
255
255
  it "does not warn" do
256
256
  index.should_receive(:raise_cache_missing).once.with :similarity
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Indexing::Bundle::Redis do
3
+ describe Picky::Indexing::Bundle::Redis do
4
4
 
5
5
  before(:each) do
6
- @index = Index::Memory.new :some_index, source: []
7
- @category = Category.new :some_category, @index
6
+ @index = Picky::Indexes::Memory.new :some_index, source: []
7
+ @category = Picky::Category.new :some_category, @index
8
8
 
9
9
  @partial = stub :partial
10
10
  @weights = stub :weights
@@ -59,9 +59,9 @@ describe Indexing::Bundle::Redis do
59
59
 
60
60
  describe 'retrieve' do
61
61
  before(:each) do
62
- files = stub :files
63
- files.should_receive(:retrieve).once.and_yield ' 1234', :some_token
64
- index.stub! :files => files
62
+ prepared = stub :prepared
63
+ prepared.should_receive(:retrieve).once.and_yield ' 1234', :some_token
64
+ index.stub! :prepared => prepared
65
65
 
66
66
  @ary = stub :ary
67
67
  inverted = stub :inverted, :[] => @ary
@@ -69,7 +69,7 @@ describe Indexing::Bundle::Redis do
69
69
  end
70
70
  context 'id key format' do
71
71
  before(:each) do
72
- index.should_receive(:[]).once.with(:key_format).and_return :to_i
72
+ @category.stub! :key_format => :to_i
73
73
  end
74
74
  it 'should call the other methods correctly' do
75
75
  @ary.should_receive(:<<).once.with 1234
@@ -79,7 +79,7 @@ describe Indexing::Bundle::Redis do
79
79
  end
80
80
  context 'other key format' do
81
81
  before(:each) do
82
- index.should_receive(:[]).once.with(:key_format).and_return :strip
82
+ @category.stub! :key_format => :strip
83
83
  end
84
84
  it 'should call the other methods correctly' do
85
85
  @ary.should_receive(:<<).once.with '1234'
@@ -89,7 +89,7 @@ describe Indexing::Bundle::Redis do
89
89
  end
90
90
  context 'no key format - default' do
91
91
  before(:each) do
92
- index.should_receive(:[]).once.with(:key_format).and_return nil
92
+ @category.stub! :key_format => nil
93
93
  end
94
94
  it 'should call the other methods correctly' do
95
95
  @ary.should_receive(:<<).once.with 1234
@@ -2,19 +2,19 @@
2
2
  #
3
3
  require 'spec_helper'
4
4
 
5
- describe LiveParameters do
5
+ describe Picky::Interfaces::LiveParameters do
6
6
 
7
7
  before(:each) do
8
8
  @parent = stub :parent
9
9
  @child = stub :child
10
10
  IO.stub! :pipe => [@child, @parent]
11
- @parameters = LiveParameters.new
11
+ @parameters = described_class.new
12
12
  @parameters.stub! :exclaim
13
13
  end
14
14
 
15
- describe Interfaces::LiveParameters::CouldNotUpdateConfigurationError do
15
+ describe Picky::Interfaces::LiveParameters::CouldNotUpdateConfigurationError do
16
16
  before(:each) do
17
- @error = Interfaces::LiveParameters::CouldNotUpdateConfigurationError.new :some_key, 'some message'
17
+ @error = Picky::Interfaces::LiveParameters::CouldNotUpdateConfigurationError.new :some_key, 'some message'
18
18
  end
19
19
  end
20
20
 
@@ -53,7 +53,7 @@ describe LiveParameters do
53
53
  end
54
54
  context 'updating failed' do
55
55
  before(:each) do
56
- @parameters.should_receive(:try_updating_configuration_with).and_raise Interfaces::LiveParameters::CouldNotUpdateConfigurationError.new(:a, 'hello')
56
+ @parameters.should_receive(:try_updating_configuration_with).and_raise Picky::Interfaces::LiveParameters::CouldNotUpdateConfigurationError.new(:a, 'hello')
57
57
  end
58
58
  it 'kills itself and returns' do
59
59
  @parameters.should_receive(:close_child).once.ordered
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Loader do
3
+ describe Picky::Loader do
4
4
 
5
5
  before(:each) do
6
6
  @loader_path = File.absolute_path("#{File.dirname(__FILE__)}/../../lib/picky/loader.rb")
@@ -8,55 +8,53 @@ describe Loader do
8
8
 
9
9
  describe 'load_application' do
10
10
  before(:each) do
11
- Loader.stub! :load
12
- Loader.stub! :exclaim
11
+ Picky::Application.stub! :reload
13
12
  end
14
13
  it "does ok" do
15
- lambda { Loader.load_application }.should_not raise_error
14
+ lambda { Picky::Loader.load_application }.should_not raise_error
16
15
  end
17
16
  end
18
17
 
19
18
  describe 'load_framework' do
20
19
  before(:each) do
21
- Loader.stub! :load
22
- Loader.stub! :exclaim
20
+ Picky::Loader.stub! :load_relative
23
21
  end
24
22
  it "does ok" do
25
- lambda { Loader.load_framework }.should_not raise_error
23
+ lambda { Picky::Loader.load_framework }.should_not raise_error
26
24
  end
27
25
  end
28
26
 
29
27
  describe 'load_self' do
30
28
  before(:each) do
31
- Loader.stub! :load
32
- Loader.stub! :exclaim
29
+ Picky::Loader.stub! :load
30
+ Picky::Loader.stub! :exclaim
33
31
  end
34
32
  after(:each) do
35
- Loader.load_self
33
+ Picky::Loader.load_self
36
34
  end
37
35
  it 'should load __SELF__' do
38
- Loader.should_receive(:load).once.with @loader_path
36
+ Picky::Loader.should_receive(:load).once.with @loader_path
39
37
  end
40
38
  end
41
39
 
42
40
  describe 'reload' do
43
41
  before(:each) do
44
42
  load @loader_path
45
- Loader.stub! :exclaim
46
- Loader.stub! :load_framework
47
- Loader.stub! :load_application
43
+ Picky::Loader.stub! :exclaim
44
+ Picky::Loader.stub! :load_framework
45
+ Picky::Loader.stub! :load_application
48
46
  Dir.stub! :chdir
49
47
  end
50
48
  after(:each) do
51
- Loader.reload
49
+ Picky::Loader.reload
52
50
  end
53
51
  it 'should call the right methods in order' do
54
- Loader.should_receive(:load_self).ordered
55
- Loader.should_receive(:load_framework).ordered
56
- Loader.should_receive(:load_application).ordered
52
+ Picky::Loader.should_receive(:load_self).ordered
53
+ Picky::Loader.should_receive(:load_framework).ordered
54
+ Picky::Loader.should_receive(:load_application).ordered
57
55
  end
58
56
  it 'should load itself only once' do
59
- Loader.should_receive(:load_self).once
57
+ Picky::Loader.should_receive(:load_self).once
60
58
  end
61
59
  # it 'should load the app only once' do
62
60
  # Loader.should_receive(:load_framework).once
@@ -2,11 +2,11 @@
2
2
  #
3
3
  require 'spec_helper'
4
4
 
5
- describe Loggers::Search do
5
+ describe Picky::Loggers::Search do
6
6
 
7
7
  before(:each) do
8
8
  @destination = stub :destination
9
- @logger = Loggers::Search.new @destination
9
+ @logger = described_class.new @destination
10
10
  end
11
11
  describe "log" do
12
12
  it "should delegate to info" do
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Query::Allocation do
3
+ describe Picky::Query::Allocation do
4
4
 
5
5
  before(:each) do
6
6
  @combinations = stub :combinations
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Query::Allocations do
3
+ describe Picky::Query::Allocations do
4
4
 
5
5
  describe 'reduce_to' do
6
6
  before(:each) do
@@ -2,11 +2,11 @@
2
2
  #
3
3
  require 'spec_helper'
4
4
 
5
- describe Query::Combination do
5
+ describe Picky::Query::Combination do
6
6
 
7
7
  before(:each) do
8
8
  @bundle = stub :bundle, :identifier => :bundle_name
9
- @token = Query::Token.processed('some_text~')
9
+ @token = Picky::Query::Token.processed('some_text~')
10
10
  @category = stub :category, :bundle_for => @bundle, :name => :some_category_name
11
11
 
12
12
  @combination = described_class.new @token, @category
@@ -41,9 +41,9 @@ describe Query::Combination do
41
41
  describe 'to_result' do
42
42
  context 'functional with qualifier' do
43
43
  before(:each) do
44
- token = Tokenizers::Query.new.tokenize('name:Blä~').first
44
+ token = Picky::Tokenizers::Query.new.tokenize('name:Blä~').first
45
45
 
46
- @combination = Query::Combination.new token, @category
46
+ @combination = Picky::Query::Combination.new token, @category
47
47
  end
48
48
  it 'should return a correct result' do
49
49
  @combination.to_result.should == [:some_category_name, 'Blä~', :blä] # Note: Characters not substituted. That's ok.
@@ -2,7 +2,7 @@
2
2
  #
3
3
  require 'spec_helper'
4
4
 
5
- describe Query::Combinations::Base do
5
+ describe Picky::Query::Combinations::Base do
6
6
 
7
7
  before(:each) do
8
8
  @combinations_ary = stub :combinations_ary
@@ -2,7 +2,7 @@
2
2
  #
3
3
  require 'spec_helper'
4
4
 
5
- describe Query::Combinations::Memory do
5
+ describe Picky::Query::Combinations::Memory do
6
6
 
7
7
  before(:each) do
8
8
  @combinations_ary = stub :combinations_ary
@@ -2,7 +2,7 @@
2
2
  #
3
3
  require 'spec_helper'
4
4
 
5
- describe Query::Combinations::Redis do
5
+ describe Picky::Query::Combinations::Redis do
6
6
 
7
7
  before(:each) do
8
8
  @combinations_ary = stub :combinations_ary
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Query::Indexes do
3
+ describe Picky::Query::Indexes do
4
4
 
5
5
  3.times do |i|
6
6
  n = i + 1
@@ -9,7 +9,12 @@ describe Query::Indexes do
9
9
  let(name) { stub name, :internal_indexed => stub(indexed) }
10
10
  end
11
11
 
12
- let(:indexes) { described_class.new index1, index2, index3 }
12
+ let(:indexes) do
13
+ indexes = described_class.allocate
14
+ indexes.stub! :map_categories
15
+ indexes.send :initialize, index1, index2, index3
16
+ indexes
17
+ end
13
18
 
14
19
  describe 'expand_combinations_from' do
15
20
  it 'generates all possible combinations from the given ones' do
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe Picky::Query::QualifierCategoryMapper do
4
+
5
+ let(:mapper) { described_class.new }
6
+ before(:each) do
7
+ @category1 = stub(:category1, :qualifiers => ['t1', 'tt1', 'ttt1'])
8
+ @category2 = stub(:category2, :qualifiers => [:t2, :tt2, :ttt2])
9
+ @category3 = stub(:category3, :qualifiers => [:t3, :tt3, :ttt3])
10
+ mapper.add @category1
11
+ mapper.add @category2
12
+ mapper.add @category3
13
+ end
14
+
15
+ def self.it_should_map(qualifier, expected)
16
+ it "should map #{qualifier} to #{expected}" do
17
+ mapper.map(qualifier).should == expected
18
+ end
19
+ end
20
+
21
+ describe "mapping" do
22
+ it { mapper.map(:t1).should == @category1 }
23
+ it { mapper.map(:tt1).should == @category1 }
24
+ it { mapper.map(:ttt1).should == @category1 }
25
+
26
+ it { mapper.map(:t2).should == @category2 }
27
+ it { mapper.map(:tt2).should == @category2 }
28
+ it { mapper.map(:ttt2).should == @category2 }
29
+
30
+ it { mapper.map(:t3).should == @category3 }
31
+ it { mapper.map(:tt3).should == @category3 }
32
+ it { mapper.map(:ttt3).should == @category3 }
33
+ end
34
+ end
@@ -1,12 +1,7 @@
1
1
  # coding: utf-8
2
2
  require 'spec_helper'
3
3
 
4
- describe Query::Token do
5
-
6
- before(:all) do
7
- Query::Qualifiers.instance << Query::Qualifier.new(:specific, [:sp, :spec])
8
- Query::Qualifiers.instance.prepare
9
- end
4
+ describe Picky::Query::Token do
10
5
 
11
6
  describe '==' do
12
7
  it 'is equal if the originals are equal' do
@@ -154,13 +149,30 @@ describe Query::Token do
154
149
  described_class.new(text).qualify.should == expected_result
155
150
  end
156
151
  end
157
- it_should_qualify 'spec:qualifier', [:specific]
158
- it_should_qualify 'with:qualifier', []
159
- it_should_qualify 'without qualifier', nil
160
- it_should_qualify 'name:', nil
161
- it_should_qualify ':broken qualifier', [] # Unsure about that. Probably should recognize it as text.
162
- it_should_qualify '', nil
163
- it_should_qualify 'sp:text', [:specific]
152
+ it_should_qualify 'spec:qualifier', [['spec'], 'qualifier']
153
+ it_should_qualify 'with:qualifier', [['with'], 'qualifier']
154
+ it_should_qualify 'without qualifier', [nil, 'without qualifier']
155
+ it_should_qualify 'name:', [nil, 'name']
156
+ it_should_qualify ':broken qualifier', [[], 'broken qualifier'] # Unsure about that. Probably should recognize it as text.
157
+ it_should_qualify '', [nil, '']
158
+ it_should_qualify 'sp:text', [['sp'], 'text']
159
+ it_should_qualify '""', [nil, '""']
160
+ it_should_qualify 'name:', [nil, 'name']
161
+ it_should_qualify 'name:hanke', [['name'], 'hanke']
162
+ it_should_qualify 'g:gaga', [['g'], 'gaga']
163
+ it_should_qualify ':nothing', [[], 'nothing']
164
+ it_should_qualify 'hello', [nil, 'hello']
165
+ it_should_qualify 'a:b:c', [['a'], 'b:c']
166
+ it_should_qualify 'a,b:c', [['a','b'], 'c']
167
+ it_should_qualify 'a,b,c:d', [['a','b','c'], 'd']
168
+ it_should_qualify ':', [nil, '']
169
+ it_should_qualify 'vorname:qualifier', [['vorname'], 'qualifier']
170
+ it_should_qualify 'with:qualifier', [['with'], 'qualifier']
171
+ it_should_qualify 'without qualifier', [nil, 'without qualifier']
172
+ it_should_qualify 'name:', [nil, 'name']
173
+ it_should_qualify ':broken qualifier', [[], 'broken qualifier']
174
+ it_should_qualify '', [nil, '']
175
+ it_should_qualify 'fn:text', [['fn'], 'text']
164
176
  end
165
177
 
166
178
  describe 'processed' do
@@ -260,23 +272,6 @@ describe Query::Token do
260
272
  end
261
273
  end
262
274
 
263
- describe 'split' do
264
- def self.it_should_split text, expected_qualifier
265
- it "should extract #{expected_qualifier} from #{text}" do
266
- described_class.new('any').send(:split, text).should == expected_qualifier
267
- end
268
- end
269
- it_should_split '""', [nil, '""']
270
- it_should_split 'name:', [nil, 'name']
271
- it_should_split 'name:hanke', [['name'], 'hanke']
272
- it_should_split 'g:gaga', [['g'], 'gaga']
273
- it_should_split ':nothing', [[], 'nothing']
274
- it_should_split 'hello', [nil, 'hello']
275
- it_should_split 'a:b:c', [['a'], 'b:c']
276
- it_should_split 'a,b:c', [['a','b'], 'c']
277
- it_should_split 'a,b,c:d', [['a','b','c'], 'd']
278
- end
279
-
280
275
  describe "original" do
281
276
  it "should keep the original text even when processed" do
282
277
  token = described_class.processed "I'm the original token text."
@@ -303,25 +298,25 @@ describe Query::Token do
303
298
  it "should display qualifier and text combined with a ':'" do
304
299
  token = described_class.processed('sp:qualifier')
305
300
 
306
- token.to_s.should == 'specific:qualifier'
301
+ token.to_s.should == 'Picky::Query::Token(qualifier, ["sp"])'
307
302
  end
308
303
  end
309
304
  describe "without qualifier" do
310
305
  it "should display just the text" do
311
306
  token = described_class.processed('text')
312
307
 
313
- token.to_s.should == 'text'
308
+ token.to_s.should == 'Picky::Query::Token(text)'
314
309
  end
315
310
  end
316
311
  end
317
312
 
318
- describe 'user_defined_category_name' do
313
+ describe 'qualifiers' do
319
314
  context 'with qualifier' do
320
315
  before(:each) do
321
316
  @token = described_class.processed('sp:qualifier')
322
317
  end
323
318
  it 'should return the qualifier' do
324
- @token.user_defined_category_names.should == [:specific]
319
+ @token.qualifiers.should == ['sp']
325
320
  end
326
321
  end
327
322
  context 'with incorrect qualifier' do
@@ -329,7 +324,7 @@ describe Query::Token do
329
324
  @token = described_class.processed('specific:qualifier')
330
325
  end
331
326
  it 'should return the qualifier' do
332
- @token.user_defined_category_names.should == []
327
+ @token.qualifiers.should == ['specific']
333
328
  end
334
329
  end
335
330
  context 'with multiple qualifiers' do
@@ -337,7 +332,7 @@ describe Query::Token do
337
332
  @token = described_class.processed('sp,spec:qualifier')
338
333
  end
339
334
  it 'should return the qualifier' do
340
- @token.user_defined_category_names.should == [:specific, :specific]
335
+ @token.qualifiers.should == ['sp', 'spec']
341
336
  end
342
337
  end
343
338
  context 'without qualifier' do
@@ -345,25 +340,9 @@ describe Query::Token do
345
340
  @token = described_class.processed('noqualifier')
346
341
  end
347
342
  it 'should return nil' do
348
- @token.user_defined_category_names.should == nil
349
- end
350
- end
351
- end
352
-
353
- describe "split" do
354
- def self.it_should_split text, expected_result
355
- it "should split #{expected_result} from #{text}" do
356
- described_class.new('any').send(:split, text).should == expected_result
343
+ @token.qualifiers.should == nil
357
344
  end
358
345
  end
359
- it_should_split ':', [nil, '']
360
- it_should_split 'vorname:qualifier', [['vorname'], 'qualifier']
361
- it_should_split 'with:qualifier', [['with'], 'qualifier']
362
- it_should_split 'without qualifier', [nil, 'without qualifier']
363
- it_should_split 'name:', [nil, 'name']
364
- it_should_split ':broken qualifier', [[], 'broken qualifier']
365
- it_should_split '', [nil, '']
366
- it_should_split 'fn:text', [['fn'], 'text']
367
346
  end
368
347
 
369
348
  describe 'partial=' do