picky 4.19.4 → 4.19.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/picky/categories.rb +1 -0
- data/lib/picky/category_realtime.rb +1 -1
- data/lib/picky/index.rb +7 -1
- data/lib/picky/query/indexes/check.rb +2 -0
- data/lib/picky/query/or.rb +0 -13
- data/lib/picky/results.rb +4 -2
- data/lib/picky/search.rb +6 -8
- data/lib/picky/search_facets.rb +1 -1
- data/lib/picky.rb +5 -2
- data/spec/functional/or_spec.rb +1 -0
- data/spec/functional/to_s_spec.rb +57 -0
- data/spec/lib/api/search/boost_spec.rb +1 -1
- data/spec/lib/backends/backend_spec.rb +2 -2
- data/spec/lib/backends/file_spec.rb +25 -25
- data/spec/lib/backends/memory/json_spec.rb +1 -1
- data/spec/lib/backends/memory/marshal_spec.rb +1 -1
- data/spec/lib/backends/memory_spec.rb +28 -28
- data/spec/lib/backends/prepared/text_spec.rb +3 -3
- data/spec/lib/backends/redis/basic_spec.rb +1 -1
- data/spec/lib/backends/redis/directly_manipulable_spec.rb +8 -8
- data/spec/lib/backends/redis/float_spec.rb +3 -3
- data/spec/lib/backends/redis/list_spec.rb +2 -2
- data/spec/lib/backends/redis/string_spec.rb +2 -2
- data/spec/lib/backends/redis_spec.rb +33 -33
- data/spec/lib/backends/sqlite/array_spec.rb +12 -12
- data/spec/lib/backends/sqlite/directly_manipulable_spec.rb +4 -4
- data/spec/lib/backends/sqlite/value_spec.rb +8 -8
- data/spec/lib/backends/sqlite_spec.rb +28 -28
- data/spec/lib/bundle_indexed_spec.rb +14 -14
- data/spec/lib/categories_indexed_spec.rb +12 -12
- data/spec/lib/category_indexed_spec.rb +27 -27
- data/spec/lib/category_indexing_spec.rb +18 -18
- data/spec/lib/extensions/module_spec.rb +2 -2
- data/spec/lib/extensions/object_spec.rb +1 -1
- data/spec/lib/generators/partial/default_spec.rb +1 -1
- data/spec/lib/generators/partial/postfix_spec.rb +2 -2
- data/spec/lib/generators/similarity/phonetic_spec.rb +1 -1
- data/spec/lib/index_indexed_spec.rb +3 -3
- data/spec/lib/index_indexing_spec.rb +5 -5
- data/spec/lib/index_spec.rb +3 -3
- data/spec/lib/indexed/wrappers/bundle/calculation_spec.rb +1 -1
- data/spec/lib/indexed/wrappers/bundle/wrapper_spec.rb +1 -1
- data/spec/lib/indexers/base_spec.rb +8 -8
- data/spec/lib/indexers/parallel_spec.rb +6 -6
- data/spec/lib/indexers/serial_spec.rb +4 -4
- data/spec/lib/indexes_class_spec.rb +1 -1
- data/spec/lib/indexes_indexed_spec.rb +4 -4
- data/spec/lib/indexes_indexing_spec.rb +5 -5
- data/spec/lib/indexes_spec.rb +2 -2
- data/spec/lib/interfaces/live_parameters/master_child_spec.rb +13 -13
- data/spec/lib/interfaces/live_parameters/unicorn_spec.rb +13 -13
- data/spec/lib/loader_spec.rb +9 -9
- data/spec/lib/loggers/verbose_spec.rb +10 -3
- data/spec/lib/query/allocation_spec.rb +22 -22
- data/spec/lib/query/allocations_spec.rb +32 -32
- data/spec/lib/query/boosts_spec.rb +2 -2
- data/spec/lib/query/combination_spec.rb +5 -5
- data/spec/lib/query/combinations_spec.rb +8 -8
- data/spec/lib/query/indexes_check_spec.rb +6 -6
- data/spec/lib/query/indexes_spec.rb +8 -8
- data/spec/lib/query/solr_spec.rb +5 -5
- data/spec/lib/query/token_spec.rb +6 -6
- data/spec/lib/query/tokens_spec.rb +10 -10
- data/spec/lib/rack/harakiri_spec.rb +5 -5
- data/spec/lib/results/exact_first_spec.rb +23 -23
- data/spec/lib/results_spec.rb +10 -10
- data/spec/lib/scheduler_spec.rb +5 -5
- data/spec/lib/search_spec.rb +15 -15
- data/spec/lib/solr/schema_generator_spec.rb +7 -7
- data/spec/lib/tokenizer_spec.rb +3 -3
- metadata +48 -104
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0c337f4cbc3ca20bb599c78b9238f4b1bfe5893d
|
4
|
+
data.tar.gz: c81c408fd0f601cf23803d4381bdada9b69adec6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f68b91b51dc9fe43467acd3363c13af4282437c247a7c7c07a3284227658217e9aece50a473639e6b3cdaf33174f58c25c12b61466302faeb1ef2754b62e00d5
|
7
|
+
data.tar.gz: d25949f5f192dd6177f5d2aa6d770aee90311dd2b0d0d83a7cc31c6b4979d4926b8bf1306108fe258306ca406137c4a400811c9fff599567740316e178f0d4e1
|
data/lib/picky/categories.rb
CHANGED
data/lib/picky/index.rb
CHANGED
@@ -376,7 +376,13 @@ INDEX
|
|
376
376
|
#
|
377
377
|
#
|
378
378
|
def to_s
|
379
|
-
|
379
|
+
s = [
|
380
|
+
name,
|
381
|
+
"result_id: #{result_identifier}",
|
382
|
+
("source: #{source}" if @source),
|
383
|
+
("categories: #{categories}" unless categories.empty?)
|
384
|
+
].compact
|
385
|
+
"#{self.class}(#{s.join(', ')})"
|
380
386
|
end
|
381
387
|
|
382
388
|
end
|
data/lib/picky/query/or.rb
CHANGED
@@ -24,19 +24,6 @@ module Picky
|
|
24
24
|
end
|
25
25
|
combinations.empty? && combinations || [Query::Combination::Or.new(combinations)]
|
26
26
|
end
|
27
|
-
|
28
|
-
# # Returns the token in the form
|
29
|
-
# # ['original:Text', 'processedtext']
|
30
|
-
# #
|
31
|
-
# def to_result
|
32
|
-
# [originals.join('|'), texts.join('|')]
|
33
|
-
# end
|
34
|
-
|
35
|
-
# # Just join the token original texts.
|
36
|
-
# #
|
37
|
-
# def to_s
|
38
|
-
# "#{self.class}(#{originals.join '|'})"
|
39
|
-
# end
|
40
27
|
|
41
28
|
end
|
42
29
|
|
data/lib/picky/results.rb
CHANGED
@@ -66,10 +66,12 @@ module Picky
|
|
66
66
|
# Returns a hash with the allocations, offset, duration and total.
|
67
67
|
#
|
68
68
|
def to_hash
|
69
|
-
{
|
69
|
+
{
|
70
|
+
allocations: allocations.to_result,
|
70
71
|
offset: offset,
|
71
72
|
duration: duration,
|
72
|
-
total: total
|
73
|
+
total: total
|
74
|
+
}
|
73
75
|
end
|
74
76
|
|
75
77
|
# Convert to json format.
|
data/lib/picky/search.rb
CHANGED
@@ -61,7 +61,7 @@ module Picky
|
|
61
61
|
# end
|
62
62
|
#
|
63
63
|
def searching options
|
64
|
-
@tokenizer = if options.respond_to?
|
64
|
+
@tokenizer = if options.respond_to? :tokenize
|
65
65
|
options
|
66
66
|
else
|
67
67
|
options && Tokenizer.new(options)
|
@@ -274,13 +274,11 @@ module Picky
|
|
274
274
|
# Display some nice information for the user.
|
275
275
|
#
|
276
276
|
def to_s
|
277
|
-
s =
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
s
|
282
|
-
s << ")"
|
283
|
-
s
|
277
|
+
s = [
|
278
|
+
(@indexes.indexes.map(&:name).join(', ') unless @indexes.indexes.empty?),
|
279
|
+
("boosts: #@boosts" if @boosts)
|
280
|
+
].compact
|
281
|
+
"#{self.class}(#{s.join(', ')})"
|
284
282
|
end
|
285
283
|
|
286
284
|
end
|
data/lib/picky/search_facets.rb
CHANGED
@@ -10,7 +10,7 @@ module Picky
|
|
10
10
|
# Options
|
11
11
|
# counts: Whether you want counts (returns a Hash) or not (returns an Array). (Default true)
|
12
12
|
# at_least: A minimum count a facet needs to have (inclusive). (Default 1)
|
13
|
-
# filter: A query to filter the facets with.
|
13
|
+
# filter: A query to filter the facets with(no_args).
|
14
14
|
#
|
15
15
|
# Usage:
|
16
16
|
# search.facets :name, filter: 'surname:peter', at_least: 2
|
data/lib/picky.rb
CHANGED
@@ -29,8 +29,11 @@ module Picky
|
|
29
29
|
require 'active_support/multibyte'
|
30
30
|
require 'multi_json'
|
31
31
|
require 'rack_fast_escape' if defined? Rack
|
32
|
-
|
33
|
-
|
32
|
+
|
33
|
+
# TODO Still required with Ruby 2.1?
|
34
|
+
#
|
35
|
+
# require 'fileutils'
|
36
|
+
# require 'strscan'
|
34
37
|
|
35
38
|
# Check if platform specific modifiers need to be installed.
|
36
39
|
#
|
data/spec/functional/or_spec.rb
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
# Describes how users see often used classes when calling #to_s on them.
|
6
|
+
#
|
7
|
+
describe 'to_s' do
|
8
|
+
describe 'index' do
|
9
|
+
it 'shows an index correctly' do
|
10
|
+
index = Picky::Index.new :test do
|
11
|
+
|
12
|
+
end
|
13
|
+
index.to_s.should == 'Picky::Index(test, result_id: test)'
|
14
|
+
end
|
15
|
+
it 'shows an index correctly' do
|
16
|
+
index = Picky::Index.new :test do
|
17
|
+
category :alli
|
18
|
+
end
|
19
|
+
index.to_s.should == 'Picky::Index(test, result_id: test, categories: Picky::Categories(Picky::Category(test:alli)))'
|
20
|
+
end
|
21
|
+
it 'shows an index correctly' do
|
22
|
+
index = Picky::Index.new :test do
|
23
|
+
source { [1,2,3] }
|
24
|
+
category :alli
|
25
|
+
end
|
26
|
+
index.to_s.should == 'Picky::Index(test, result_id: test, source: [1, 2, 3], categories: Picky::Categories(Picky::Category(test:alli)))'
|
27
|
+
end
|
28
|
+
it 'shows an index correctly' do
|
29
|
+
index = Picky::Index.new :test do
|
30
|
+
source { [1,2,3] }
|
31
|
+
category :alli
|
32
|
+
category :text
|
33
|
+
end
|
34
|
+
index.to_s.should == 'Picky::Index(test, result_id: test, source: [1, 2, 3], categories: Picky::Categories(Picky::Category(test:alli), Picky::Category(test:text)))'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
describe 'search' do
|
38
|
+
it 'shows a search correctly' do
|
39
|
+
search = Picky::Search.new
|
40
|
+
search.to_s.should == 'Picky::Search(boosts: Picky::Query::Boosts({}))'
|
41
|
+
end
|
42
|
+
it 'shows a search correctly' do
|
43
|
+
search = Picky::Search.new Picky::Index.new(:test)
|
44
|
+
search.to_s.should == 'Picky::Search(test, boosts: Picky::Query::Boosts({}))'
|
45
|
+
end
|
46
|
+
it 'shows a search correctly' do
|
47
|
+
search = Picky::Search.new Picky::Index.new(:test), Picky::Index.new(:test2)
|
48
|
+
search.to_s.should == 'Picky::Search(test, test2, boosts: Picky::Query::Boosts({}))'
|
49
|
+
end
|
50
|
+
it 'shows a search correctly' do
|
51
|
+
search = Picky::Search.new Picky::Index.new(:test), Picky::Index.new(:test2) do
|
52
|
+
boost [:a] => +3
|
53
|
+
end
|
54
|
+
search.to_s.should == 'Picky::Search(test, test2, boosts: Picky::Query::Boosts({[:a]=>3}))'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -10,7 +10,7 @@ describe Picky::API::Search::Boost do
|
|
10
10
|
context 'with a Hash' do
|
11
11
|
it 'returns a boosts object' do
|
12
12
|
combinations = [
|
13
|
-
|
13
|
+
double(:combination, :category_name => :bla)
|
14
14
|
]
|
15
15
|
|
16
16
|
object.extract_boosts([:bla] => +7.77).boost_for(combinations).should == 7.77
|
@@ -6,9 +6,9 @@ describe Picky::Backends::Backend do
|
|
6
6
|
|
7
7
|
# describe 'score' do
|
8
8
|
# it 'forwards to the parameter' do
|
9
|
-
# combinations =
|
9
|
+
# combinations = double :combinations
|
10
10
|
#
|
11
|
-
# combinations.should_receive(:score).once.with
|
11
|
+
# combinations.should_receive(:score).once.with no_args
|
12
12
|
#
|
13
13
|
# backend.score combinations
|
14
14
|
# end
|
@@ -9,7 +9,7 @@ describe Picky::Backends::File do
|
|
9
9
|
# similarity: Picky::Backends::File::Basic.new(:unimportant),
|
10
10
|
# configuration: Picky::Backends::File::Basic.new(:unimportant)
|
11
11
|
#
|
12
|
-
# @backend.stub
|
12
|
+
# @backend.stub :timed_exclaim
|
13
13
|
# end
|
14
14
|
#
|
15
15
|
# describe 'create_...' do
|
@@ -21,7 +21,7 @@ describe Picky::Backends::File do
|
|
21
21
|
# ].each do |type, kind|
|
22
22
|
# it "creates and returns a(n) #{type} index" do
|
23
23
|
# @backend.send(:"create_#{type}",
|
24
|
-
#
|
24
|
+
# double(type, :index_path => "spec/temp/index/test/some_index/some_category_some_bundle_#{type}")
|
25
25
|
# ).should be_kind_of(kind)
|
26
26
|
# end
|
27
27
|
# end
|
@@ -32,7 +32,7 @@ describe Picky::Backends::File do
|
|
32
32
|
before(:each) do
|
33
33
|
@backend = described_class.new
|
34
34
|
|
35
|
-
@backend.stub
|
35
|
+
@backend.stub :timed_exclaim
|
36
36
|
end
|
37
37
|
|
38
38
|
describe 'create_...' do
|
@@ -44,7 +44,7 @@ describe Picky::Backends::File do
|
|
44
44
|
].each do |type, kind|
|
45
45
|
it "creates and returns a(n) #{type} index" do
|
46
46
|
@backend.send(:"create_#{type}",
|
47
|
-
|
47
|
+
double(type, :index_path => "spec/temp/index/test/some_index/some_category_some_bundle_#{type}")
|
48
48
|
).should be_kind_of(kind)
|
49
49
|
end
|
50
50
|
end
|
@@ -52,50 +52,50 @@ describe Picky::Backends::File do
|
|
52
52
|
|
53
53
|
describe "ids" do
|
54
54
|
before(:each) do
|
55
|
-
@combination1 =
|
56
|
-
@combination2 =
|
57
|
-
@combination3 =
|
55
|
+
@combination1 = double :combination1
|
56
|
+
@combination2 = double :combination2
|
57
|
+
@combination3 = double :combination3
|
58
58
|
@combinations = [@combination1, @combination2, @combination3]
|
59
59
|
end
|
60
60
|
it "should intersect correctly" do
|
61
|
-
@combination1.should_receive(:ids).once.with.and_return (1..100_000).to_a
|
62
|
-
@combination2.should_receive(:ids).once.with.and_return (1..100).to_a
|
63
|
-
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
61
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (1..100_000).to_a
|
62
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (1..100).to_a
|
63
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (1..10).to_a
|
64
64
|
|
65
65
|
@backend.ids(@combinations, :any, :thing).should == (1..10).to_a
|
66
66
|
end
|
67
67
|
it "should intersect symbol_keys correctly" do
|
68
|
-
@combination1.should_receive(:ids).once.with.and_return (:'00001'..:'10000').to_a
|
69
|
-
@combination2.should_receive(:ids).once.with.and_return (:'00001'..:'00100').to_a
|
70
|
-
@combination3.should_receive(:ids).once.with.and_return (:'00001'..:'00010').to_a
|
68
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (:'00001'..:'10000').to_a
|
69
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (:'00001'..:'00100').to_a
|
70
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (:'00001'..:'00010').to_a
|
71
71
|
|
72
72
|
@backend.ids(@combinations, :any, :thing).should == (:'00001'..:'0010').to_a
|
73
73
|
end
|
74
74
|
it "should intersect correctly when intermediate intersect result is empty" do
|
75
|
-
@combination1.should_receive(:ids).once.with.and_return (1..100_000).to_a
|
76
|
-
@combination2.should_receive(:ids).once.with.and_return (11..100).to_a
|
77
|
-
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
75
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (1..100_000).to_a
|
76
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (11..100).to_a
|
77
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (1..10).to_a
|
78
78
|
|
79
79
|
@backend.ids(@combinations, :any, :thing).should == []
|
80
80
|
end
|
81
81
|
it "should be fast" do
|
82
|
-
@combination1.should_receive(:ids).once.with.and_return (1..100_000).to_a
|
83
|
-
@combination2.should_receive(:ids).once.with.and_return (1..100).to_a
|
84
|
-
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
82
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (1..100_000).to_a
|
83
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (1..100).to_a
|
84
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (1..10).to_a
|
85
85
|
|
86
86
|
performance_of { @backend.ids(@combinations, :any, :thing) }.should < 0.004
|
87
87
|
end
|
88
88
|
it "should be fast" do
|
89
|
-
@combination1.should_receive(:ids).once.with.and_return (1..1000).to_a
|
90
|
-
@combination2.should_receive(:ids).once.with.and_return (1..100).to_a
|
91
|
-
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
89
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (1..1000).to_a
|
90
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (1..100).to_a
|
91
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (1..10).to_a
|
92
92
|
|
93
93
|
performance_of { @backend.ids(@combinations, :any, :thing) }.should < 0.00015
|
94
94
|
end
|
95
95
|
it "should be fast" do
|
96
|
-
@combination1.should_receive(:ids).once.with.and_return (1..1000).to_a
|
97
|
-
@combination2.should_receive(:ids).once.with.and_return (901..1000).to_a
|
98
|
-
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
96
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (1..1000).to_a
|
97
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (901..1000).to_a
|
98
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (1..10).to_a
|
99
99
|
|
100
100
|
performance_of { @backend.ids(@combinations, :any, :thing) }.should < 0.0001
|
101
101
|
end
|
@@ -9,7 +9,7 @@ describe Picky::Backends::Memory do
|
|
9
9
|
# similarity: Picky::Backends::Memory::JSON.new(:unimportant),
|
10
10
|
# configuration: Picky::Backends::Memory::Marshal.new(:unimportant)
|
11
11
|
#
|
12
|
-
# @backend.stub
|
12
|
+
# @backend.stub :timed_exclaim
|
13
13
|
# end
|
14
14
|
#
|
15
15
|
# describe 'create_...' do
|
@@ -21,7 +21,7 @@ describe Picky::Backends::Memory do
|
|
21
21
|
# ].each do |type, kind|
|
22
22
|
# it "creates and returns a(n) #{type} index" do
|
23
23
|
# @backend.send(:"create_#{type}",
|
24
|
-
#
|
24
|
+
# double(type, :index_path => "spec/temp/index/test/some_index/some_category_some_bundle_#{type}")
|
25
25
|
# ).should be_kind_of(kind)
|
26
26
|
# end
|
27
27
|
# end
|
@@ -35,7 +35,7 @@ describe Picky::Backends::Memory do
|
|
35
35
|
# similarity: ->(bundle){ Picky::Backends::Memory::JSON.new(bundle.index_path(:similarity)) },
|
36
36
|
# configuration: ->(bundle){ Picky::Backends::Memory::Marshal.new(bundle.index_path(:configuration)) }
|
37
37
|
#
|
38
|
-
# @backend.stub
|
38
|
+
# @backend.stub :timed_exclaim
|
39
39
|
# end
|
40
40
|
#
|
41
41
|
# describe 'create_...' do
|
@@ -46,8 +46,8 @@ describe Picky::Backends::Memory do
|
|
46
46
|
# [:configuration, Picky::Backends::Memory::Marshal]
|
47
47
|
# ].each do |type, kind|
|
48
48
|
# it "creates and returns a(n) #{type} index" do
|
49
|
-
#
|
50
|
-
# to_a_able_stub.stub
|
49
|
+
# to_a_able_double = Object.new
|
50
|
+
# to_a_able_stub.stub :index_path => "spec/temp/index/test/some_index/some_category_some_bundle_#{type}"
|
51
51
|
# @backend.send(:"create_#{type}", to_a_able_stub).should be_kind_of(kind)
|
52
52
|
# end
|
53
53
|
# end
|
@@ -58,7 +58,7 @@ describe Picky::Backends::Memory do
|
|
58
58
|
before(:each) do
|
59
59
|
@backend = described_class.new
|
60
60
|
|
61
|
-
@backend.stub
|
61
|
+
@backend.stub :timed_exclaim
|
62
62
|
end
|
63
63
|
|
64
64
|
describe 'create_...' do
|
@@ -70,7 +70,7 @@ describe Picky::Backends::Memory do
|
|
70
70
|
].each do |type, kind|
|
71
71
|
it "creates and returns a(n) #{type} index" do
|
72
72
|
@backend.send(:"create_#{type}",
|
73
|
-
|
73
|
+
double(type, :index_path => "spec/temp/index/test/some_index/some_category_some_bundle_#{type}")
|
74
74
|
).should be_kind_of(kind)
|
75
75
|
end
|
76
76
|
end
|
@@ -78,50 +78,50 @@ describe Picky::Backends::Memory do
|
|
78
78
|
|
79
79
|
describe "ids" do
|
80
80
|
before(:each) do
|
81
|
-
@combination1 =
|
82
|
-
@combination2 =
|
83
|
-
@combination3 =
|
81
|
+
@combination1 = double :combination1
|
82
|
+
@combination2 = double :combination2
|
83
|
+
@combination3 = double :combination3
|
84
84
|
@combinations = [@combination1, @combination2, @combination3]
|
85
85
|
end
|
86
86
|
it "should intersect correctly" do
|
87
|
-
@combination1.should_receive(:ids).once.with.and_return (1..100_000).to_a
|
88
|
-
@combination2.should_receive(:ids).once.with.and_return (1..100).to_a
|
89
|
-
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
87
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (1..100_000).to_a
|
88
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (1..100).to_a
|
89
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (1..10).to_a
|
90
90
|
|
91
91
|
@backend.ids(@combinations, :any, :thing).should == (1..10).to_a
|
92
92
|
end
|
93
93
|
it "should intersect symbol_keys correctly" do
|
94
|
-
@combination1.should_receive(:ids).once.with.and_return (:'00001'..:'10000').to_a
|
95
|
-
@combination2.should_receive(:ids).once.with.and_return (:'00001'..:'00100').to_a
|
96
|
-
@combination3.should_receive(:ids).once.with.and_return (:'00001'..:'00010').to_a
|
94
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (:'00001'..:'10000').to_a
|
95
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (:'00001'..:'00100').to_a
|
96
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (:'00001'..:'00010').to_a
|
97
97
|
|
98
98
|
@backend.ids(@combinations, :any, :thing).should == (:'00001'..:'0010').to_a
|
99
99
|
end
|
100
100
|
it "should intersect correctly when intermediate intersect result is empty" do
|
101
|
-
@combination1.should_receive(:ids).once.with.and_return (1..100_000).to_a
|
102
|
-
@combination2.should_receive(:ids).once.with.and_return (11..100).to_a
|
103
|
-
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
101
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (1..100_000).to_a
|
102
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (11..100).to_a
|
103
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (1..10).to_a
|
104
104
|
|
105
105
|
@backend.ids(@combinations, :any, :thing).should == []
|
106
106
|
end
|
107
107
|
it "should be fast" do
|
108
|
-
@combination1.should_receive(:ids).once.with.and_return (1..100_000).to_a
|
109
|
-
@combination2.should_receive(:ids).once.with.and_return (1..100).to_a
|
110
|
-
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
108
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (1..100_000).to_a
|
109
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (1..100).to_a
|
110
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (1..10).to_a
|
111
111
|
|
112
112
|
performance_of { @backend.ids(@combinations, :any, :thing) }.should < 0.004
|
113
113
|
end
|
114
114
|
it "should be fast" do
|
115
|
-
@combination1.should_receive(:ids).once.with.and_return (1..1000).to_a
|
116
|
-
@combination2.should_receive(:ids).once.with.and_return (1..100).to_a
|
117
|
-
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
115
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (1..1000).to_a
|
116
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (1..100).to_a
|
117
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (1..10).to_a
|
118
118
|
|
119
119
|
performance_of { @backend.ids(@combinations, :any, :thing) }.should < 0.00015
|
120
120
|
end
|
121
121
|
it "should be fast" do
|
122
|
-
@combination1.should_receive(:ids).once.with.and_return (1..1000).to_a
|
123
|
-
@combination2.should_receive(:ids).once.with.and_return (901..1000).to_a
|
124
|
-
@combination3.should_receive(:ids).once.with.and_return (1..10).to_a
|
122
|
+
@combination1.should_receive(:ids).once.with(no_args).and_return (1..1000).to_a
|
123
|
+
@combination2.should_receive(:ids).once.with(no_args).and_return (901..1000).to_a
|
124
|
+
@combination3.should_receive(:ids).once.with(no_args).and_return (1..10).to_a
|
125
125
|
|
126
126
|
performance_of { @backend.ids(@combinations, :any, :thing) }.should < 0.0001
|
127
127
|
end
|
@@ -34,9 +34,9 @@ describe Picky::Backends::Prepared::Text do
|
|
34
34
|
end
|
35
35
|
describe "retrieve" do
|
36
36
|
before(:each) do
|
37
|
-
@io =
|
38
|
-
@io.should_receive(:each_line).once.with.and_yield '123456,some_nice_token'
|
39
|
-
::File.should_receive(:open).
|
37
|
+
@io = double :io
|
38
|
+
@io.should_receive(:each_line).once.with(no_args).and_yield '123456,some_nice_token'
|
39
|
+
::File.should_receive(:open).at_least(1).and_yield @io
|
40
40
|
end
|
41
41
|
it "yields split lines and returns the id and token text" do
|
42
42
|
text.retrieve do |id, token|
|
@@ -2,8 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Picky::Backends::Redis::DirectlyManipulable do
|
4
4
|
|
5
|
-
let(:client) {
|
6
|
-
let(:backend) {
|
5
|
+
let(:client) { double :client }
|
6
|
+
let(:backend) { double :backend, client: client, namespace: 'some:namespace' }
|
7
7
|
let(:list) do
|
8
8
|
list = [1,2]
|
9
9
|
described_class.make backend, list, 'some:key'
|
@@ -24,7 +24,7 @@ describe Picky::Backends::Redis::DirectlyManipulable do
|
|
24
24
|
|
25
25
|
context 'stubbed backend' do
|
26
26
|
before(:each) do
|
27
|
-
backend.stub
|
27
|
+
backend.stub :[]
|
28
28
|
end
|
29
29
|
it 'calls the right client method' do
|
30
30
|
num = described_class.class_variable_get(:@@append_index)
|
@@ -54,8 +54,8 @@ describe Picky::Backends::Redis::DirectlyManipulable do
|
|
54
54
|
|
55
55
|
context 'stubbed client' do
|
56
56
|
before(:each) do
|
57
|
-
client.stub
|
58
|
-
client.stub
|
57
|
+
client.stub :zadd
|
58
|
+
client.stub :zrem
|
59
59
|
end
|
60
60
|
it 'calls [] at the end of the method' do
|
61
61
|
backend.should_receive(:[]).once.with 'some:key'
|
@@ -74,9 +74,9 @@ describe Picky::Backends::Redis::DirectlyManipulable do
|
|
74
74
|
|
75
75
|
context 'stubbed client/backend' do
|
76
76
|
before(:each) do
|
77
|
-
backend.stub
|
78
|
-
client.stub
|
79
|
-
client.stub
|
77
|
+
backend.stub :[]
|
78
|
+
client.stub :zadd
|
79
|
+
client.stub :zrem
|
80
80
|
end
|
81
81
|
it 'behaves like an ordinary Array' do
|
82
82
|
list << 3
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Picky::Backends::Redis::Float do
|
4
4
|
|
5
|
-
let(:client) {
|
5
|
+
let(:client) { double :client }
|
6
6
|
let(:backend) { described_class.new client, 'some_namespace' }
|
7
7
|
|
8
8
|
describe 'dump' do
|
@@ -23,12 +23,12 @@ describe Picky::Backends::Redis::Float do
|
|
23
23
|
backend['some']
|
24
24
|
end
|
25
25
|
it 'returns whatever it gets from the backend' do
|
26
|
-
client.should_receive(:hget).
|
26
|
+
client.should_receive(:hget).at_least(1).and_return '1.23'
|
27
27
|
|
28
28
|
backend['anything'].should == 1.23
|
29
29
|
end
|
30
30
|
it 'returns whatever it gets from the backend' do
|
31
|
-
client.should_receive(:hget).
|
31
|
+
client.should_receive(:hget).at_least(1).and_return nil
|
32
32
|
|
33
33
|
backend['anything'].should == nil
|
34
34
|
end
|
@@ -2,12 +2,12 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Picky::Backends::Redis::List do
|
4
4
|
|
5
|
-
let(:client) {
|
5
|
+
let(:client) { double :client }
|
6
6
|
let(:index) { described_class.new client, :some_namespace }
|
7
7
|
|
8
8
|
describe '[]' do
|
9
9
|
it 'returns whatever comes back from the backend' do
|
10
|
-
client.stub
|
10
|
+
client.stub :zrange => [:some_lrange_result]
|
11
11
|
|
12
12
|
index[:anything].should == [:some_lrange_result]
|
13
13
|
end
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Picky::Backends::Redis::String do
|
4
4
|
|
5
|
-
let(:client) {
|
5
|
+
let(:client) { double :client }
|
6
6
|
let(:backend) { described_class.new client, :some_namespace }
|
7
7
|
|
8
8
|
describe 'dump' do
|
@@ -23,7 +23,7 @@ describe Picky::Backends::Redis::String do
|
|
23
23
|
backend[:some_symbol]
|
24
24
|
end
|
25
25
|
it 'returns whatever it gets from the backend' do
|
26
|
-
client.should_receive(:hget).
|
26
|
+
client.should_receive(:hget).at_least(1).and_return :some_result
|
27
27
|
|
28
28
|
backend[:anything].should == :some_result
|
29
29
|
end
|