picky 2.7.0 → 3.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
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