riddle 2.1.0 → 2.2.0
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 +4 -4
- data/.travis.yml +8 -5
- data/Gemfile +10 -0
- data/HISTORY +4 -0
- data/README.markdown +1 -1
- data/lib/riddle.rb +1 -0
- data/lib/riddle/0.9.9/configuration/searchd.rb +1 -1
- data/lib/riddle/client.rb +4 -1
- data/lib/riddle/client/message.rb +15 -14
- data/lib/riddle/configuration/parser.rb +1 -0
- data/lib/riddle/configuration/section.rb +9 -9
- data/lib/riddle/configuration/source.rb +5 -5
- data/lib/riddle/query/select.rb +3 -2
- data/riddle.gemspec +2 -4
- metadata +4 -329
- data/spec/fixtures/.gitignore +0 -2
- data/spec/fixtures/data/0.9.9/anchor.bin +0 -0
- data/spec/fixtures/data/0.9.9/any.bin +0 -0
- data/spec/fixtures/data/0.9.9/boolean.bin +0 -0
- data/spec/fixtures/data/0.9.9/comment.bin +0 -0
- data/spec/fixtures/data/0.9.9/distinct.bin +0 -0
- data/spec/fixtures/data/0.9.9/field_weights.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_array.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_array_exclude.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_boolean.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_floats.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_floats_exclude.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_range.bin +0 -0
- data/spec/fixtures/data/0.9.9/filter_range_exclude.bin +0 -0
- data/spec/fixtures/data/0.9.9/group.bin +0 -0
- data/spec/fixtures/data/0.9.9/index.bin +0 -0
- data/spec/fixtures/data/0.9.9/index_weights.bin +0 -0
- data/spec/fixtures/data/0.9.9/keywords_with_hits.bin +0 -0
- data/spec/fixtures/data/0.9.9/keywords_without_hits.bin +0 -0
- data/spec/fixtures/data/0.9.9/overrides.bin +0 -0
- data/spec/fixtures/data/0.9.9/phrase.bin +0 -0
- data/spec/fixtures/data/0.9.9/rank_mode.bin +0 -0
- data/spec/fixtures/data/0.9.9/select.bin +0 -0
- data/spec/fixtures/data/0.9.9/simple.bin +0 -0
- data/spec/fixtures/data/0.9.9/sort.bin +0 -0
- data/spec/fixtures/data/0.9.9/update_simple.bin +0 -0
- data/spec/fixtures/data/0.9.9/weights.bin +0 -0
- data/spec/fixtures/data/1.10/anchor.bin +0 -0
- data/spec/fixtures/data/1.10/any.bin +0 -0
- data/spec/fixtures/data/1.10/boolean.bin +0 -0
- data/spec/fixtures/data/1.10/comment.bin +0 -0
- data/spec/fixtures/data/1.10/distinct.bin +0 -0
- data/spec/fixtures/data/1.10/field_weights.bin +0 -0
- data/spec/fixtures/data/1.10/filter.bin +0 -0
- data/spec/fixtures/data/1.10/filter_array.bin +0 -0
- data/spec/fixtures/data/1.10/filter_array_exclude.bin +0 -0
- data/spec/fixtures/data/1.10/filter_boolean.bin +0 -0
- data/spec/fixtures/data/1.10/filter_floats.bin +0 -0
- data/spec/fixtures/data/1.10/filter_floats_exclude.bin +0 -0
- data/spec/fixtures/data/1.10/filter_range.bin +0 -0
- data/spec/fixtures/data/1.10/filter_range_exclude.bin +0 -0
- data/spec/fixtures/data/1.10/group.bin +0 -0
- data/spec/fixtures/data/1.10/index.bin +0 -0
- data/spec/fixtures/data/1.10/index_weights.bin +0 -0
- data/spec/fixtures/data/1.10/keywords_with_hits.bin +0 -0
- data/spec/fixtures/data/1.10/keywords_without_hits.bin +0 -0
- data/spec/fixtures/data/1.10/overrides.bin +0 -0
- data/spec/fixtures/data/1.10/phrase.bin +0 -0
- data/spec/fixtures/data/1.10/rank_mode.bin +0 -0
- data/spec/fixtures/data/1.10/select.bin +0 -0
- data/spec/fixtures/data/1.10/simple.bin +0 -0
- data/spec/fixtures/data/1.10/sort.bin +0 -0
- data/spec/fixtures/data/1.10/update_simple.bin +0 -0
- data/spec/fixtures/data/1.10/weights.bin +0 -0
- data/spec/fixtures/data/2.0.1/anchor.bin +0 -0
- data/spec/fixtures/data/2.0.1/any.bin +0 -0
- data/spec/fixtures/data/2.0.1/boolean.bin +0 -0
- data/spec/fixtures/data/2.0.1/comment.bin +0 -0
- data/spec/fixtures/data/2.0.1/distinct.bin +0 -0
- data/spec/fixtures/data/2.0.1/field_weights.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_array.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_array_exclude.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_boolean.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_floats.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_floats_exclude.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_range.bin +0 -0
- data/spec/fixtures/data/2.0.1/filter_range_exclude.bin +0 -0
- data/spec/fixtures/data/2.0.1/group.bin +0 -0
- data/spec/fixtures/data/2.0.1/index.bin +0 -0
- data/spec/fixtures/data/2.0.1/index_weights.bin +0 -0
- data/spec/fixtures/data/2.0.1/keywords_with_hits.bin +0 -0
- data/spec/fixtures/data/2.0.1/keywords_without_hits.bin +0 -0
- data/spec/fixtures/data/2.0.1/overrides.bin +0 -0
- data/spec/fixtures/data/2.0.1/phrase.bin +0 -0
- data/spec/fixtures/data/2.0.1/rank_mode.bin +0 -0
- data/spec/fixtures/data/2.0.1/select.bin +0 -0
- data/spec/fixtures/data/2.0.1/simple.bin +0 -0
- data/spec/fixtures/data/2.0.1/sort.bin +0 -0
- data/spec/fixtures/data/2.0.1/update_simple.bin +0 -0
- data/spec/fixtures/data/2.0.1/weights.bin +0 -0
- data/spec/fixtures/data/2.1.0/anchor.bin +0 -0
- data/spec/fixtures/data/2.1.0/any.bin +0 -0
- data/spec/fixtures/data/2.1.0/boolean.bin +0 -0
- data/spec/fixtures/data/2.1.0/comment.bin +0 -0
- data/spec/fixtures/data/2.1.0/distinct.bin +0 -0
- data/spec/fixtures/data/2.1.0/field_weights.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_array.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_array_exclude.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_boolean.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_floats.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_floats_exclude.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_range.bin +0 -0
- data/spec/fixtures/data/2.1.0/filter_range_exclude.bin +0 -0
- data/spec/fixtures/data/2.1.0/group.bin +0 -0
- data/spec/fixtures/data/2.1.0/index.bin +0 -0
- data/spec/fixtures/data/2.1.0/index_weights.bin +0 -0
- data/spec/fixtures/data/2.1.0/keywords_with_hits.bin +0 -0
- data/spec/fixtures/data/2.1.0/keywords_without_hits.bin +0 -0
- data/spec/fixtures/data/2.1.0/overrides.bin +0 -0
- data/spec/fixtures/data/2.1.0/phrase.bin +0 -0
- data/spec/fixtures/data/2.1.0/rank_mode.bin +0 -0
- data/spec/fixtures/data/2.1.0/select.bin +0 -0
- data/spec/fixtures/data/2.1.0/simple.bin +0 -0
- data/spec/fixtures/data/2.1.0/sort.bin +0 -0
- data/spec/fixtures/data/2.1.0/update_simple.bin +0 -0
- data/spec/fixtures/data/2.1.0/weights.bin +0 -0
- data/spec/fixtures/data_generator.0.9.8.php +0 -208
- data/spec/fixtures/data_generator.0.9.9.php +0 -5
- data/spec/fixtures/data_generator.1.10.php +0 -5
- data/spec/fixtures/data_generator.2.0.1.php +0 -5
- data/spec/fixtures/data_generator.2.1.0.php +0 -5
- data/spec/fixtures/data_generator.php +0 -223
- data/spec/fixtures/sphinxapi.0.9.8.php +0 -1228
- data/spec/fixtures/sphinxapi.0.9.9.php +0 -1646
- data/spec/fixtures/sphinxapi.1.10.php +0 -1728
- data/spec/fixtures/sphinxapi.2.0.1.php +0 -1731
- data/spec/fixtures/sphinxapi.2.1.0.php +0 -1752
- data/spec/fixtures/sql/conf.example.yml +0 -3
- data/spec/fixtures/sql/data.sql +0 -25000
- data/spec/fixtures/sql/data.tsv +0 -25000
- data/spec/fixtures/sql/structure.sql +0 -16
- data/spec/functional/connection_spec.rb +0 -64
- data/spec/functional/escaping_spec.rb +0 -49
- data/spec/functional/excerpt_spec.rb +0 -139
- data/spec/functional/keywords_spec.rb +0 -40
- data/spec/functional/persistance_spec.rb +0 -17
- data/spec/functional/search_spec.rb +0 -67
- data/spec/functional/status_spec.rb +0 -21
- data/spec/functional/update_spec.rb +0 -41
- data/spec/riddle/auto_version_spec.rb +0 -95
- data/spec/riddle/client_spec.rb +0 -11
- data/spec/riddle/configuration_spec.rb +0 -28
- data/spec/riddle/controller_spec.rb +0 -39
- data/spec/riddle/query/delete_spec.rb +0 -18
- data/spec/riddle/query/insert_spec.rb +0 -25
- data/spec/riddle/query/select_spec.rb +0 -226
- data/spec/riddle/query_spec.rb +0 -97
- data/spec/riddle_spec.rb +0 -27
- data/spec/spec_helper.rb +0 -34
- data/spec/support/binary_fixtures.rb +0 -18
- data/spec/support/sphinx.rb +0 -137
- data/spec/unit/client_spec.rb +0 -290
- data/spec/unit/configuration/common_spec.rb +0 -60
- data/spec/unit/configuration/distributed_index_spec.rb +0 -58
- data/spec/unit/configuration/index_spec.rb +0 -124
- data/spec/unit/configuration/indexer_spec.rb +0 -73
- data/spec/unit/configuration/realtime_index_spec.rb +0 -65
- data/spec/unit/configuration/searchd_spec.rb +0 -228
- data/spec/unit/configuration/source_spec.rb +0 -5
- data/spec/unit/configuration/sql_source_spec.rb +0 -137
- data/spec/unit/configuration/template_index_spec.rb +0 -91
- data/spec/unit/configuration/tsv_source_spec.rb +0 -53
- data/spec/unit/configuration/xml_source_spec.rb +0 -51
- data/spec/unit/configuration_spec.rb +0 -25
- data/spec/unit/filter_spec.rb +0 -38
- data/spec/unit/message_spec.rb +0 -94
- data/spec/unit/response_spec.rb +0 -64
- data/spec/unit/riddle_spec.rb +0 -17
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Riddle::AutoVersion do
|
|
4
|
-
describe '.configure' do
|
|
5
|
-
before :each do
|
|
6
|
-
@controller = Riddle::Controller.new stub('configuration'), 'sphinx.conf'
|
|
7
|
-
Riddle::Controller.stub(:new => @controller)
|
|
8
|
-
|
|
9
|
-
unless ENV['SPHINX_VERSION'].nil?
|
|
10
|
-
@env_version, ENV['SPHINX_VERSION'] = ENV['SPHINX_VERSION'].dup, nil
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
after :each do
|
|
15
|
-
ENV['SPHINX_VERSION'] = @env_version unless @env_version.nil?
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "should require 0.9.8 if that is the known version" do
|
|
19
|
-
Riddle::AutoVersion.should_receive(:require).with('riddle/0.9.8')
|
|
20
|
-
|
|
21
|
-
@controller.stub(:sphinx_version => '0.9.8')
|
|
22
|
-
Riddle::AutoVersion.configure
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "should require 0.9.9 if that is the known version" do
|
|
26
|
-
Riddle::AutoVersion.should_receive(:require).with('riddle/0.9.9')
|
|
27
|
-
|
|
28
|
-
@controller.stub(:sphinx_version => '0.9.9')
|
|
29
|
-
Riddle::AutoVersion.configure
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it "should require 1.10 if that is the known version" do
|
|
33
|
-
Riddle::AutoVersion.should_receive(:require).with('riddle/1.10')
|
|
34
|
-
|
|
35
|
-
@controller.stub(:sphinx_version => '1.10-beta')
|
|
36
|
-
Riddle::AutoVersion.configure
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it "should require 1.10 if using 1.10 with 64 bit IDs" do
|
|
40
|
-
Riddle::AutoVersion.should_receive(:require).with('riddle/1.10')
|
|
41
|
-
|
|
42
|
-
@controller.stub(:sphinx_version => '1.10-id64-beta')
|
|
43
|
-
Riddle::AutoVersion.configure
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "should require 2.0.1 if that is the known version" do
|
|
47
|
-
Riddle::AutoVersion.should_receive(:require).with('riddle/2.0.1')
|
|
48
|
-
|
|
49
|
-
@controller.stub(:sphinx_version => '2.0.1-beta')
|
|
50
|
-
Riddle::AutoVersion.configure
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "should require 2.0.1 if 2.0.2-dev is being used" do
|
|
54
|
-
Riddle::AutoVersion.should_receive(:require).with('riddle/2.0.1')
|
|
55
|
-
|
|
56
|
-
@controller.stub(:sphinx_version => '2.0.2-dev')
|
|
57
|
-
Riddle::AutoVersion.configure
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
it "should require 2.1.0 if 2.0.3 is being used" do
|
|
61
|
-
Riddle::AutoVersion.should_receive(:require).with('riddle/2.1.0')
|
|
62
|
-
|
|
63
|
-
@controller.stub(:sphinx_version => '2.0.3-release')
|
|
64
|
-
Riddle::AutoVersion.configure
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
it "should require 2.1.0 if 2.0.4 is being used" do
|
|
68
|
-
Riddle::AutoVersion.should_receive(:require).with('riddle/2.1.0')
|
|
69
|
-
|
|
70
|
-
@controller.stub(:sphinx_version => '2.0.4-release')
|
|
71
|
-
Riddle::AutoVersion.configure
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it "should require 2.1.0 if 2.0.5 is being used" do
|
|
75
|
-
Riddle::AutoVersion.should_receive(:require).with('riddle/2.1.0')
|
|
76
|
-
|
|
77
|
-
@controller.stub(:sphinx_version => '2.0.5-release')
|
|
78
|
-
Riddle::AutoVersion.configure
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it "should require 2.1.0 if 2.2.1 is being used" do
|
|
82
|
-
Riddle::AutoVersion.should_receive(:require).with('riddle/2.1.0')
|
|
83
|
-
|
|
84
|
-
@controller.stub(:sphinx_version => '2.2.1-beta')
|
|
85
|
-
Riddle::AutoVersion.configure
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it "should require 2.1.0 if that is the known version" do
|
|
89
|
-
Riddle::AutoVersion.should_receive(:require).with('riddle/2.1.0')
|
|
90
|
-
|
|
91
|
-
@controller.stub(:sphinx_version => '2.1.0-dev')
|
|
92
|
-
Riddle::AutoVersion.configure
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
end
|
data/spec/riddle/client_spec.rb
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Riddle::Configuration do
|
|
4
|
-
describe Riddle::Configuration::Index do
|
|
5
|
-
describe '#settings' do
|
|
6
|
-
it 'should return array with all settings of index' do
|
|
7
|
-
Riddle::Configuration::Index.settings.should_not be_empty
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'should return array which contains a docinfo' do
|
|
11
|
-
Riddle::Configuration::Index.settings.should be_include :docinfo
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
describe 'class inherited from Riddle::Configuration::Index' do
|
|
17
|
-
before :all do
|
|
18
|
-
class TestIndex < Riddle::Configuration::Index; end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
describe '#settings' do
|
|
22
|
-
it 'should has same settings as Riddle::Configuration::Index' do
|
|
23
|
-
TestIndex.settings.should == Riddle::Configuration::Index.settings
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Riddle::Controller do
|
|
4
|
-
describe '#sphinx_version' do
|
|
5
|
-
before :each do
|
|
6
|
-
@controller = Riddle::Controller.new stub('controller'), 'sphinx.conf'
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it "should return 1.10 if using 1.10-beta" do
|
|
10
|
-
@controller.stub(:` => 'Sphinx 1.10-beta (r2420)')
|
|
11
|
-
@controller.sphinx_version.should == '1.10-beta'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it "should return 0.9.9 if using 0.9.9" do
|
|
15
|
-
@controller.stub(:` => 'Sphinx 0.9.9-release (r2117)')
|
|
16
|
-
@controller.sphinx_version.should == '0.9.9'
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it "should return 0.9.9 if using 0.9.9 rc2" do
|
|
20
|
-
@controller.stub(:` => 'Sphinx 0.9.9-rc2 (r1785)')
|
|
21
|
-
@controller.sphinx_version.should == '0.9.9'
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "should return 0.9.9 if using 0.9.9 rc1" do
|
|
25
|
-
@controller.stub(:` => 'Sphinx 0.9.9-rc1 (r1566)')
|
|
26
|
-
@controller.sphinx_version.should == '0.9.9'
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it "should return 0.9.8 if using 0.9.8.1" do
|
|
30
|
-
@controller.stub(:` => 'Sphinx 0.9.8.1-release (r1533)')
|
|
31
|
-
@controller.sphinx_version.should == '0.9.8'
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "should return 0.9.8 if using 0.9.8" do
|
|
35
|
-
@controller.stub(:` => 'Sphinx 0.9.8-release (r1371)')
|
|
36
|
-
@controller.sphinx_version.should == '0.9.8'
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Riddle::Query::Delete do
|
|
4
|
-
it 'handles a single id' do
|
|
5
|
-
query = Riddle::Query::Delete.new 'foo_core', 5
|
|
6
|
-
query.to_sql.should == 'DELETE FROM foo_core WHERE id = 5'
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it 'handles multiple ids' do
|
|
10
|
-
query = Riddle::Query::Delete.new 'foo_core', 5, 6, 7
|
|
11
|
-
query.to_sql.should == 'DELETE FROM foo_core WHERE id IN (5, 6, 7)'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'handles multiple ids in an explicit array' do
|
|
15
|
-
query = Riddle::Query::Delete.new 'foo_core', [5, 6, 7]
|
|
16
|
-
query.to_sql.should == 'DELETE FROM foo_core WHERE id IN (5, 6, 7)'
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Riddle::Query::Insert do
|
|
4
|
-
it 'handles inserts' do
|
|
5
|
-
query = Riddle::Query::Insert.new('foo_core', [:id, :deleted], [4, false])
|
|
6
|
-
query.to_sql.should == 'INSERT INTO foo_core (id, `deleted`) VALUES (4, 0)'
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it 'handles replaces' do
|
|
10
|
-
query = Riddle::Query::Insert.new('foo_core', [:id, :deleted], [4, false])
|
|
11
|
-
query.replace!
|
|
12
|
-
query.to_sql.should == 'REPLACE INTO foo_core (id, `deleted`) VALUES (4, 0)'
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it 'encloses strings in single quotes' do
|
|
16
|
-
query = Riddle::Query::Insert.new('foo_core', [:id, :name], [4, 'bar'])
|
|
17
|
-
query.to_sql.should == "INSERT INTO foo_core (id, `name`) VALUES (4, 'bar')"
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it 'handles inserts with more than one set of values' do
|
|
21
|
-
query = Riddle::Query::Insert.new 'foo_core', [:id, :name], [[4, 'bar'], [5, 'baz']]
|
|
22
|
-
query.to_sql.
|
|
23
|
-
should == "INSERT INTO foo_core (id, `name`) VALUES (4, 'bar'), (5, 'baz')"
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'date'
|
|
3
|
-
require 'time'
|
|
4
|
-
|
|
5
|
-
describe Riddle::Query::Select do
|
|
6
|
-
let(:query) { Riddle::Query::Select.new }
|
|
7
|
-
|
|
8
|
-
it 'handles basic queries on a specific index' do
|
|
9
|
-
query.from('foo_core').to_sql.should == 'SELECT * FROM foo_core'
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it 'handles queries on multiple indices' do
|
|
13
|
-
query.from('foo_core').from('foo_delta').to_sql.
|
|
14
|
-
should == 'SELECT * FROM foo_core, foo_delta'
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it 'accepts multiple arguments for indices' do
|
|
18
|
-
query.from('foo_core', 'foo_delta').to_sql.
|
|
19
|
-
should == 'SELECT * FROM foo_core, foo_delta'
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it "handles custom select values" do
|
|
23
|
-
query.values('@weight').from('foo_core').to_sql.
|
|
24
|
-
should == 'SELECT @weight FROM foo_core'
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it 'handles JSON as a select value using dot notation' do
|
|
28
|
-
query.values('key1.key2.key3').from('foo_core').to_sql.
|
|
29
|
-
should == 'SELECT key1.key2.key3 FROM foo_core'
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it 'handles JSON as a select value using bracket notation 2' do
|
|
33
|
-
query.values("key1['key2']['key3']").from('foo_core').to_sql.
|
|
34
|
-
should == "SELECT key1['key2']['key3'] FROM foo_core"
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it "can prepend select values" do
|
|
38
|
-
query.values('@weight').prepend_values('foo').from('foo_core').to_sql.
|
|
39
|
-
should == 'SELECT foo, @weight FROM foo_core'
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it 'handles basic queries with a search term' do
|
|
43
|
-
query.from('foo_core').matching('foo').to_sql.
|
|
44
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo')"
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it "escapes single quotes in the search terms" do
|
|
48
|
-
query.from('foo_core').matching("fo'o").to_sql.
|
|
49
|
-
should == "SELECT * FROM foo_core WHERE MATCH('fo\\'o')"
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
it 'handles filters with integers' do
|
|
53
|
-
query.from('foo_core').matching('foo').where(:bar_id => 10).to_sql.
|
|
54
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `bar_id` = 10"
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "handles exclusive filters with integers" do
|
|
58
|
-
query.from('foo_core').matching('foo').where_not(:bar_id => 10).to_sql.
|
|
59
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `bar_id` <> 10"
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
it "handles filters with true" do
|
|
63
|
-
query.from('foo_core').matching('foo').where(:bar => true).to_sql.
|
|
64
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `bar` = 1"
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
it "handles exclusive filters with true" do
|
|
68
|
-
query.from('foo_core').matching('foo').where_not(:bar => true).to_sql.
|
|
69
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `bar` <> 1"
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it "handles filters with false" do
|
|
73
|
-
query.from('foo_core').matching('foo').where(:bar => false).to_sql.
|
|
74
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `bar` = 0"
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it "handles exclusive filters with false" do
|
|
78
|
-
query.from('foo_core').matching('foo').where_not(:bar => false).to_sql.
|
|
79
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `bar` <> 0"
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
it "handles filters with arrays" do
|
|
83
|
-
query.from('foo_core').matching('foo').where(:bars => [1, 2]).to_sql.
|
|
84
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `bars` IN (1, 2)"
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
it "ignores filters with empty arrays" do
|
|
88
|
-
query.from('foo_core').matching('foo').where(:bars => []).to_sql.
|
|
89
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo')"
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
it "handles exclusive filters with arrays" do
|
|
93
|
-
query.from('foo_core').matching('foo').where_not(:bars => [1, 2]).to_sql.
|
|
94
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `bars` NOT IN (1, 2)"
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
it "ignores exclusive filters with empty arrays" do
|
|
98
|
-
query.from('foo_core').matching('foo').where_not(:bars => []).to_sql.
|
|
99
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo')"
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
it "handles filters with timestamps" do
|
|
103
|
-
time = Time.now
|
|
104
|
-
query.from('foo_core').matching('foo').where(:created_at => time).to_sql.
|
|
105
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `created_at` = #{time.to_i}"
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
it "handles filters with dates" do
|
|
109
|
-
date = Date.new 2014, 1, 1
|
|
110
|
-
query.from('foo_core').matching('foo').where(:created_at => date).to_sql.
|
|
111
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `created_at` = #{Time.utc(2014, 1, 1).to_i}"
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
it "handles exclusive filters with timestamps" do
|
|
115
|
-
time = Time.now
|
|
116
|
-
query.from('foo_core').matching('foo').where_not(:created_at => time).
|
|
117
|
-
to_sql.should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `created_at` <> #{time.to_i}"
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
it "handles filters with ranges" do
|
|
121
|
-
query.from('foo_core').matching('foo').where(:bar => 1..5).to_sql.
|
|
122
|
-
should == "SELECT * FROM foo_core WHERE MATCH('foo') AND `bar` BETWEEN 1 AND 5"
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
it "handles filters with strings" do
|
|
126
|
-
query.from('foo_core').where(:bar => 'baz').to_sql.
|
|
127
|
-
should == "SELECT * FROM foo_core WHERE `bar` = 'baz'"
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
it "handles filters expecting matches on all values" do
|
|
131
|
-
query.from('foo_core').where_all(:bars => [1, 2]).to_sql.
|
|
132
|
-
should == "SELECT * FROM foo_core WHERE `bars` = 1 AND `bars` = 2"
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
it "handles filters expecting matches on all combinations of values" do
|
|
136
|
-
query.from('foo_core').where_all(:bars => [[1,2], 3]).to_sql.
|
|
137
|
-
should == "SELECT * FROM foo_core WHERE `bars` IN (1, 2) AND `bars` = 3"
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
it "handles exclusive filters expecting matches on none of the values" do
|
|
141
|
-
query.from('foo_core').where_not_all(:bars => [1, 2]).to_sql.
|
|
142
|
-
should == "SELECT * FROM foo_core WHERE (`bars` <> 1 OR `bars` <> 2)"
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
it 'handles filters on JSON with dot syntax' do
|
|
146
|
-
query.from('foo_core').where('key1.key2.key3' => 10).to_sql.
|
|
147
|
-
should == "SELECT * FROM foo_core WHERE key1.key2.key3 = 10"
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
it 'handles filters on JSON with bracket syntax' do
|
|
151
|
-
query.from('foo_core').where("key1['key2']['key3']" => 10).to_sql.
|
|
152
|
-
should == "SELECT * FROM foo_core WHERE key1['key2']['key3'] = 10"
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
it 'handles grouping' do
|
|
156
|
-
query.from('foo_core').group_by('bar_id').to_sql.
|
|
157
|
-
should == "SELECT * FROM foo_core GROUP BY `bar_id`"
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
it "handles grouping n-best results" do
|
|
161
|
-
query.from('foo_core').group_by('bar_id').group_best(3).to_sql.
|
|
162
|
-
should == "SELECT * FROM foo_core GROUP 3 BY `bar_id`"
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
it 'handles having conditions' do
|
|
166
|
-
query.from('foo_core').group_by('bar_id').having('bar_id > 10').to_sql.
|
|
167
|
-
should == "SELECT * FROM foo_core GROUP BY `bar_id` HAVING bar_id > 10"
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
it 'handles ordering' do
|
|
171
|
-
query.from('foo_core').order_by('bar_id ASC').to_sql.
|
|
172
|
-
should == 'SELECT * FROM foo_core ORDER BY `bar_id` ASC'
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
it 'handles ordering when an already escaped column is passed in' do
|
|
176
|
-
query.from('foo_core').order_by('`bar_id` ASC').to_sql.
|
|
177
|
-
should == 'SELECT * FROM foo_core ORDER BY `bar_id` ASC'
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
it 'handles ordering when just a symbol is passed in' do
|
|
181
|
-
query.from('foo_core').order_by(:bar_id).to_sql.
|
|
182
|
-
should == 'SELECT * FROM foo_core ORDER BY `bar_id`'
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
it 'handles ordering when a computed sphinx variable is passed in' do
|
|
186
|
-
query.from('foo_core').order_by('@weight DESC').to_sql.
|
|
187
|
-
should == 'SELECT * FROM foo_core ORDER BY @weight DESC'
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
it "handles ordering when a sphinx function is passed in" do
|
|
191
|
-
query.from('foo_core').order_by('weight() DESC').to_sql.
|
|
192
|
-
should == 'SELECT * FROM foo_core ORDER BY weight() DESC'
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
it 'handles group ordering' do
|
|
196
|
-
query.from('foo_core').order_within_group_by('bar_id ASC').to_sql.
|
|
197
|
-
should == 'SELECT * FROM foo_core WITHIN GROUP ORDER BY `bar_id` ASC'
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
it 'handles a limit' do
|
|
201
|
-
query.from('foo_core').limit(10).to_sql.
|
|
202
|
-
should == 'SELECT * FROM foo_core LIMIT 10'
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
it 'handles an offset' do
|
|
206
|
-
query.from('foo_core').offset(20).to_sql.
|
|
207
|
-
should == 'SELECT * FROM foo_core LIMIT 20, 20'
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
it 'handles an option' do
|
|
211
|
-
query.from('foo_core').with_options(:bar => :baz).to_sql.
|
|
212
|
-
should == 'SELECT * FROM foo_core OPTION bar=baz'
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
it 'handles multiple options' do
|
|
216
|
-
sql = query.from('foo_core').with_options(:bar => :baz, :qux => :quux).
|
|
217
|
-
to_sql
|
|
218
|
-
sql.should match(/OPTION .*bar=baz/)
|
|
219
|
-
sql.should match(/OPTION .*qux=quux/)
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
it "handles options of hashes" do
|
|
223
|
-
query.from('foo_core').with_options(:weights => {:foo => 5}).to_sql.
|
|
224
|
-
should == 'SELECT * FROM foo_core OPTION weights=(foo=5)'
|
|
225
|
-
end
|
|
226
|
-
end
|