thinking-sphinx 1.5.0 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. data/README.textile +15 -48
  2. data/VERSION +1 -0
  3. data/features/attribute_transformation.feature +7 -7
  4. data/features/attribute_updates.feature +16 -18
  5. data/features/deleting_instances.feature +13 -16
  6. data/features/excerpts.feature +0 -8
  7. data/features/facets.feature +19 -25
  8. data/features/handling_edits.feature +20 -25
  9. data/features/searching_across_models.feature +1 -1
  10. data/features/searching_by_index.feature +5 -6
  11. data/features/searching_by_model.feature +29 -29
  12. data/features/sphinx_scopes.feature +0 -26
  13. data/features/step_definitions/common_steps.rb +6 -18
  14. data/features/step_definitions/scope_steps.rb +0 -4
  15. data/features/step_definitions/search_steps.rb +4 -9
  16. data/features/support/env.rb +10 -3
  17. data/features/thinking_sphinx/db/fixtures/alphas.rb +10 -8
  18. data/features/thinking_sphinx/db/fixtures/cats.rb +1 -1
  19. data/features/thinking_sphinx/db/fixtures/dogs.rb +1 -1
  20. data/features/thinking_sphinx/db/fixtures/foxes.rb +1 -1
  21. data/features/thinking_sphinx/db/fixtures/people.rb +1 -1
  22. data/features/thinking_sphinx/db/fixtures/posts.rb +1 -5
  23. data/features/thinking_sphinx/db/migrations/create_posts.rb +0 -1
  24. data/features/thinking_sphinx/models/alpha.rb +0 -1
  25. data/features/thinking_sphinx/models/beta.rb +0 -5
  26. data/features/thinking_sphinx/models/developer.rb +1 -6
  27. data/features/thinking_sphinx/models/music.rb +1 -3
  28. data/features/thinking_sphinx/models/person.rb +1 -2
  29. data/features/thinking_sphinx/models/post.rb +0 -1
  30. data/lib/cucumber/thinking_sphinx/external_world.rb +4 -8
  31. data/lib/cucumber/thinking_sphinx/internal_world.rb +27 -36
  32. data/lib/thinking_sphinx.rb +60 -132
  33. data/lib/thinking_sphinx/active_record.rb +98 -124
  34. data/lib/thinking_sphinx/active_record/attribute_updates.rb +13 -17
  35. data/lib/thinking_sphinx/active_record/delta.rb +15 -21
  36. data/lib/thinking_sphinx/active_record/has_many_association.rb +23 -16
  37. data/lib/thinking_sphinx/active_record/scopes.rb +0 -18
  38. data/lib/thinking_sphinx/adapters/abstract_adapter.rb +15 -63
  39. data/lib/thinking_sphinx/adapters/mysql_adapter.rb +0 -4
  40. data/lib/thinking_sphinx/adapters/postgresql_adapter.rb +24 -65
  41. data/lib/thinking_sphinx/association.rb +11 -36
  42. data/lib/thinking_sphinx/attribute.rb +85 -92
  43. data/lib/thinking_sphinx/auto_version.rb +3 -21
  44. data/lib/thinking_sphinx/class_facet.rb +3 -8
  45. data/lib/thinking_sphinx/configuration.rb +58 -114
  46. data/lib/thinking_sphinx/context.rb +20 -22
  47. data/lib/thinking_sphinx/core/array.rb +13 -0
  48. data/lib/thinking_sphinx/deltas.rb +0 -2
  49. data/lib/thinking_sphinx/deltas/default_delta.rb +22 -18
  50. data/lib/thinking_sphinx/deploy/capistrano.rb +31 -30
  51. data/lib/thinking_sphinx/excerpter.rb +1 -2
  52. data/lib/thinking_sphinx/facet.rb +35 -45
  53. data/lib/thinking_sphinx/facet_search.rb +24 -58
  54. data/lib/thinking_sphinx/field.rb +0 -18
  55. data/lib/thinking_sphinx/index.rb +36 -38
  56. data/lib/thinking_sphinx/index/builder.rb +59 -74
  57. data/lib/thinking_sphinx/property.rb +45 -66
  58. data/lib/thinking_sphinx/railtie.rb +35 -0
  59. data/lib/thinking_sphinx/search.rb +250 -506
  60. data/lib/thinking_sphinx/source.rb +31 -50
  61. data/lib/thinking_sphinx/source/internal_properties.rb +3 -8
  62. data/lib/thinking_sphinx/source/sql.rb +31 -71
  63. data/lib/thinking_sphinx/tasks.rb +27 -48
  64. data/spec/thinking_sphinx/active_record/delta_spec.rb +41 -36
  65. data/spec/thinking_sphinx/active_record/has_many_association_spec.rb +0 -96
  66. data/spec/thinking_sphinx/active_record/scopes_spec.rb +29 -29
  67. data/spec/thinking_sphinx/active_record_spec.rb +169 -140
  68. data/spec/thinking_sphinx/association_spec.rb +2 -20
  69. data/spec/thinking_sphinx/attribute_spec.rb +97 -101
  70. data/spec/thinking_sphinx/auto_version_spec.rb +11 -75
  71. data/spec/thinking_sphinx/configuration_spec.rb +62 -63
  72. data/spec/thinking_sphinx/context_spec.rb +66 -66
  73. data/spec/thinking_sphinx/facet_search_spec.rb +99 -99
  74. data/spec/thinking_sphinx/facet_spec.rb +4 -30
  75. data/spec/thinking_sphinx/field_spec.rb +3 -17
  76. data/spec/thinking_sphinx/index/builder_spec.rb +132 -169
  77. data/spec/thinking_sphinx/index_spec.rb +39 -45
  78. data/spec/thinking_sphinx/search_methods_spec.rb +33 -37
  79. data/spec/thinking_sphinx/search_spec.rb +269 -491
  80. data/spec/thinking_sphinx/source_spec.rb +48 -62
  81. data/spec/thinking_sphinx_spec.rb +49 -49
  82. data/tasks/distribution.rb +46 -0
  83. data/tasks/testing.rb +74 -0
  84. metadata +123 -199
  85. data/features/field_sorting.feature +0 -18
  86. data/features/thinking_sphinx/db/.gitignore +0 -1
  87. data/features/thinking_sphinx/db/fixtures/post_keywords.txt +0 -1
  88. data/features/thinking_sphinx/models/andrew.rb +0 -17
  89. data/lib/thinking-sphinx.rb +0 -1
  90. data/lib/thinking_sphinx/active_record/has_many_association_with_scopes.rb +0 -21
  91. data/lib/thinking_sphinx/bundled_search.rb +0 -40
  92. data/lib/thinking_sphinx/connection.rb +0 -71
  93. data/lib/thinking_sphinx/deltas/delete_job.rb +0 -16
  94. data/lib/thinking_sphinx/deltas/index_job.rb +0 -17
  95. data/lib/thinking_sphinx/rails_additions.rb +0 -181
  96. data/spec/fixtures/data.sql +0 -32
  97. data/spec/fixtures/database.yml.default +0 -3
  98. data/spec/fixtures/models.rb +0 -161
  99. data/spec/fixtures/structure.sql +0 -146
  100. data/spec/spec_helper.rb +0 -54
  101. data/spec/sphinx_helper.rb +0 -67
  102. data/spec/thinking_sphinx/adapters/abstract_adapter_spec.rb +0 -163
  103. data/spec/thinking_sphinx/connection_spec.rb +0 -77
  104. data/spec/thinking_sphinx/rails_additions_spec.rb +0 -203
@@ -5,36 +5,36 @@ describe ThinkingSphinx::Source do
5
5
  @index = ThinkingSphinx::Index.new(Person)
6
6
  @source = ThinkingSphinx::Source.new(@index, :sql_range_step => 1000)
7
7
  end
8
-
8
+
9
9
  describe '#initialize' do
10
10
  it "should store the current connection details" do
11
11
  config = Person.connection.instance_variable_get(:@config)
12
12
  @source.database_configuration.should == config
13
13
  end
14
14
  end
15
-
15
+
16
16
  it "should generate the name from the model" do
17
17
  @source.name.should == "person"
18
18
  end
19
-
19
+
20
20
  it "should handle namespaced models for name generation" do
21
21
  index = ThinkingSphinx::Index.new(Admin::Person)
22
22
  source = ThinkingSphinx::Source.new(index)
23
23
  source.name.should == "admin_person"
24
24
  end
25
-
25
+
26
26
  describe "#to_riddle_for_core" do
27
27
  before :each do
28
28
  config = ThinkingSphinx::Configuration.instance
29
29
  config.source_options[:sql_ranged_throttle] = 100
30
-
30
+
31
31
  ThinkingSphinx::Field.new(
32
32
  @source, ThinkingSphinx::Index::FauxColumn.new(:first_name)
33
33
  )
34
34
  ThinkingSphinx::Field.new(
35
35
  @source, ThinkingSphinx::Index::FauxColumn.new(:last_name)
36
36
  )
37
-
37
+
38
38
  ThinkingSphinx::Attribute.new(
39
39
  @source, ThinkingSphinx::Index::FauxColumn.new(:id), :as => :internal_id
40
40
  )
@@ -48,35 +48,31 @@ describe ThinkingSphinx::Source do
48
48
  @source, ThinkingSphinx::Index::FauxColumn.new(:contacts, :id),
49
49
  :as => :contact_ids, :source => :query
50
50
  )
51
- ThinkingSphinx::Attribute.new(
52
- @source, ThinkingSphinx::Index::FauxColumn.new(:source, :id),
53
- :as => :source_id, :type => :integer
54
- )
55
-
51
+
56
52
  ThinkingSphinx::Join.new(
57
53
  @source, ThinkingSphinx::Index::FauxColumn.new(:links)
58
54
  )
59
-
55
+
60
56
  @source.conditions << "`birthday` <= NOW()"
61
57
  @source.groupings << "`first_name`"
62
-
58
+
63
59
  @index.local_options[:group_concat_max_len] = 1024
64
-
60
+
65
61
  @riddle = @source.to_riddle_for_core(1, 0)
66
62
  end
67
-
63
+
68
64
  it "should generate a Riddle Source object" do
69
65
  @riddle.should be_a_kind_of(Riddle::Configuration::SQLSource)
70
66
  end
71
-
67
+
72
68
  it "should use the index and name its own name" do
73
69
  @riddle.name.should == "person_core_0"
74
70
  end
75
-
71
+
76
72
  it "should use the model's database connection to determine type" do
77
73
  @riddle.type.should == "mysql"
78
74
  end
79
-
75
+
80
76
  it "should match the model's database settings" do
81
77
  config = Person.connection.instance_variable_get(:@config)
82
78
  @riddle.sql_db.should == config[:database]
@@ -85,128 +81,118 @@ describe ThinkingSphinx::Source do
85
81
  @riddle.sql_host.should == config[:host]
86
82
  @riddle.sql_port.should == config[:port]
87
83
  @riddle.sql_sock.should == config[:socket]
88
-
89
- @riddle.mysql_ssl_ca.should == config[:sslca]
90
- @riddle.mysql_ssl_cert.should == config[:sslcert]
91
- @riddle.mysql_ssl_key.should == config[:sslkey]
92
84
  end
93
-
94
- it "should use a environment user if nothing else is provided" do
85
+
86
+ it "should use a default username of root if nothing else is provided" do
95
87
  Person.connection.stub!(:instance_variable_get => {
96
88
  :user => nil,
97
89
  :username => nil
98
90
  })
99
91
  @source = ThinkingSphinx::Source.new(@index)
100
-
92
+
101
93
  riddle = @source.to_riddle_for_core(1, 0)
102
- riddle.sql_user.should == ENV['USER']
94
+ riddle.sql_user.should == 'root'
103
95
  end
104
-
96
+
105
97
  it "should assign attributes" do
106
98
  # 3 internal attributes plus the one requested
107
99
  @riddle.sql_attr_uint.length.should == 4
108
100
  @riddle.sql_attr_uint.last.should == :internal_id
109
-
101
+
110
102
  @riddle.sql_attr_timestamp.length.should == 1
111
103
  @riddle.sql_attr_timestamp.first.should == :birthday
112
104
  end
113
-
114
- it "should not include an attribute definition for polymorphic references without data" do
115
- @riddle.sql_attr_uint.select { |uint|
116
- uint == :source_id
117
- }.should be_empty
118
- end
119
-
105
+
120
106
  it "should set Sphinx Source options" do
121
107
  @riddle.sql_range_step.should == 1000
122
108
  @riddle.sql_ranged_throttle.should == 100
123
109
  end
124
-
110
+
125
111
  describe "#sql_query" do
126
112
  before :each do
127
113
  @query = @riddle.sql_query
128
114
  end
129
-
115
+
130
116
  it "should select data from the model table" do
131
- @query.should match(/FROM `people`/)
117
+ @query.should match(/FROM\s+`people`/)
132
118
  end
133
-
119
+
134
120
  it "should select each of the fields" do
135
121
  @query.should match(/`first_name`.+FROM/)
136
122
  @query.should match(/`last_name`.+FROM/)
137
123
  end
138
-
124
+
139
125
  it "should select each of the attributes" do
140
126
  @query.should match(/`id` AS `internal_id`.+FROM/)
141
127
  @query.should match(/`birthday`.+FROM/)
142
128
  @query.should match(/`tags`.`id`.+ AS `tag_ids`.+FROM/)
143
129
  end
144
-
130
+
145
131
  it "should not match the sourced MVA attribute" do
146
132
  @query.should_not match(/contact_ids/)
147
133
  end
148
-
134
+
149
135
  it "should include joins for required associations" do
150
136
  @query.should match(/LEFT OUTER JOIN `tags`/)
151
137
  end
152
-
138
+
153
139
  it "should not include joins for the sourced MVA attribute" do
154
140
  @query.should_not match(/LEFT OUTER JOIN `contacts`/)
155
141
  end
156
-
142
+
157
143
  it "should include explicitly requested joins" do
158
144
  @query.should match(/LEFT OUTER JOIN `links`/)
159
145
  end
160
-
146
+
161
147
  it "should include any defined conditions" do
162
148
  @query.should match(/WHERE.+`birthday` <= NOW()/)
163
149
  end
164
-
150
+
165
151
  it "should include any defined groupings" do
166
152
  @query.should match(/GROUP BY.+`first_name`/)
167
153
  end
168
154
  end
169
-
155
+
170
156
  describe "#sql_query_range" do
171
157
  before :each do
172
158
  @query = @riddle.sql_query_range
173
159
  end
174
-
160
+
175
161
  it "should select data from the model table" do
176
162
  @query.should match(/FROM `people`/)
177
163
  end
178
-
164
+
179
165
  it "should select the minimum and the maximum ids" do
180
166
  @query.should match(/SELECT.+MIN.+MAX.+FROM/)
181
167
  end
182
168
  end
183
-
169
+
184
170
  describe "#sql_query_info" do
185
171
  before :each do
186
172
  @query = @riddle.sql_query_info
187
173
  end
188
-
174
+
189
175
  it "should select all fields from the model table" do
190
176
  @query.should match(/SELECT \* FROM `people`/)
191
177
  end
192
-
178
+
193
179
  it "should filter the primary key with the offset" do
194
180
  model_count = ThinkingSphinx.context.indexed_models.size
195
181
  @query.should match(/WHERE `id` = \(\(\$id - 1\) \/ #{model_count}\)/)
196
182
  end
197
183
  end
198
-
184
+
199
185
  describe "#sql_query_pre" do
200
186
  before :each do
201
187
  @queries = @riddle.sql_query_pre
202
188
  end
203
-
189
+
204
190
  it "should default to just the UTF8 statement" do
205
191
  @queries.detect { |query|
206
192
  query == "SET NAMES utf8"
207
193
  }.should_not be_nil
208
194
  end
209
-
195
+
210
196
  it "should set the group_concat_max_len session value for MySQL if requested" do
211
197
  @queries.detect { |query|
212
198
  query == "SET SESSION group_concat_max_len = 1024"
@@ -214,41 +200,41 @@ describe ThinkingSphinx::Source do
214
200
  end
215
201
  end
216
202
  end
217
-
203
+
218
204
  describe "#to_riddle_for_core with range disabled" do
219
205
  before :each do
220
206
  ThinkingSphinx::Field.new(
221
207
  @source, ThinkingSphinx::Index::FauxColumn.new(:first_name)
222
208
  )
223
209
  end
224
-
210
+
225
211
  describe "set per-index" do
226
212
  before :each do
227
213
  @index.local_options[:disable_range] = true
228
214
  @riddle = @source.to_riddle_for_core(1, 0)
229
215
  end
230
-
216
+
231
217
  it "should not have the range in the sql_query" do
232
218
  @riddle.sql_query.should_not match(/`people`.`id` >= \$start/)
233
219
  @riddle.sql_query.should_not match(/`people`.`id` <= \$end/)
234
220
  end
235
-
221
+
236
222
  it "should not have a sql_query_range" do
237
223
  @riddle.sql_query_range.should be_nil
238
224
  end
239
225
  end
240
-
226
+
241
227
  describe "set globally" do
242
228
  before :each do
243
229
  ThinkingSphinx::Configuration.instance.index_options[:disable_range] = true
244
230
  @riddle = @source.to_riddle_for_core(1, 0)
245
231
  end
246
-
232
+
247
233
  it "should not have the range in the sql_query" do
248
234
  @riddle.sql_query.should_not match(/`people`.`id` >= \$start/)
249
235
  @riddle.sql_query.should_not match(/`people`.`id` <= \$end/)
250
236
  end
251
-
237
+
252
238
  it "should not have a sql_query_range" do
253
239
  @riddle.sql_query_range.should be_nil
254
240
  end
@@ -5,40 +5,40 @@ describe ThinkingSphinx do
5
5
  it "should return a Context instance" do
6
6
  ThinkingSphinx.context.should be_a(ThinkingSphinx::Context)
7
7
  end
8
-
8
+
9
9
  it "should remember changes to the Context instance" do
10
- models = ThinkingSphinx.context.indexed_models.clone
11
-
10
+ models = ThinkingSphinx.context.indexed_models
11
+
12
12
  ThinkingSphinx.context.indexed_models.replace([:model])
13
13
  ThinkingSphinx.context.indexed_models.should == [:model]
14
-
14
+
15
15
  ThinkingSphinx.context.indexed_models.replace(models)
16
16
  end
17
17
  end
18
-
18
+
19
19
  describe '.reset_context!' do
20
20
  it "should remove the existing Context instance" do
21
21
  existing = ThinkingSphinx.context
22
-
22
+
23
23
  ThinkingSphinx.reset_context!
24
24
  ThinkingSphinx.context.should_not == existing
25
-
26
- ThinkingSphinx.reset_context! existing
25
+
26
+ Thread.current[:thinking_sphinx_context] = existing
27
27
  end
28
28
  end
29
-
29
+
30
30
  describe '.define_indexes?' do
31
31
  it "should define indexes by default" do
32
32
  ThinkingSphinx.define_indexes?.should be_true
33
33
  end
34
34
  end
35
-
35
+
36
36
  describe '.define_indexes=' do
37
37
  it "should disable index definition" do
38
38
  ThinkingSphinx.define_indexes = false
39
39
  ThinkingSphinx.define_indexes?.should be_false
40
40
  end
41
-
41
+
42
42
  it "should enable index definition" do
43
43
  ThinkingSphinx.define_indexes = false
44
44
  ThinkingSphinx.define_indexes?.should be_false
@@ -46,19 +46,20 @@ describe ThinkingSphinx do
46
46
  ThinkingSphinx.define_indexes?.should be_true
47
47
  end
48
48
  end
49
-
49
+
50
50
  describe '.deltas_enabled?' do
51
51
  it "should index deltas by default" do
52
+ ThinkingSphinx.deltas_enabled = nil
52
53
  ThinkingSphinx.deltas_enabled?.should be_true
53
54
  end
54
55
  end
55
-
56
+
56
57
  describe '.deltas_enabled=' do
57
58
  it "should disable delta indexing" do
58
59
  ThinkingSphinx.deltas_enabled = false
59
60
  ThinkingSphinx.deltas_enabled?.should be_false
60
61
  end
61
-
62
+
62
63
  it "should enable delta indexing" do
63
64
  ThinkingSphinx.deltas_enabled = false
64
65
  ThinkingSphinx.deltas_enabled?.should be_false
@@ -66,22 +67,20 @@ describe ThinkingSphinx do
66
67
  ThinkingSphinx.deltas_enabled?.should be_true
67
68
  end
68
69
  end
69
-
70
+
70
71
  describe '.updates_enabled?' do
71
72
  it "should update indexes by default" do
72
- ThinkingSphinx::Configuration.stub! :environment => 'development'
73
-
74
73
  ThinkingSphinx.updates_enabled = nil
75
74
  ThinkingSphinx.updates_enabled?.should be_true
76
75
  end
77
76
  end
78
-
77
+
79
78
  describe '.updates_enabled=' do
80
79
  it "should disable index updating" do
81
80
  ThinkingSphinx.updates_enabled = false
82
81
  ThinkingSphinx.updates_enabled?.should be_false
83
82
  end
84
-
83
+
85
84
  it "should enable index updating" do
86
85
  ThinkingSphinx.updates_enabled = false
87
86
  ThinkingSphinx.updates_enabled?.should be_false
@@ -89,25 +88,35 @@ describe ThinkingSphinx do
89
88
  ThinkingSphinx.updates_enabled?.should be_true
90
89
  end
91
90
  end
92
-
91
+
93
92
  describe '.sphinx_running?' do
94
93
  it "should always say Sphinx is running if flagged as being on a remote machine" do
95
94
  ThinkingSphinx.remote_sphinx = true
96
95
  ThinkingSphinx.stub!(:sphinx_running_by_pid? => false)
97
-
96
+
98
97
  ThinkingSphinx.sphinx_running?.should be_true
99
98
  end
100
-
99
+
101
100
  it "should actually pay attention to Sphinx if not on a remote machine" do
102
101
  ThinkingSphinx.remote_sphinx = false
103
102
  ThinkingSphinx.stub!(:sphinx_running_by_pid? => false)
104
103
  ThinkingSphinx.sphinx_running?.should be_false
105
-
104
+
106
105
  ThinkingSphinx.stub!(:sphinx_running_by_pid? => true)
107
106
  ThinkingSphinx.sphinx_running?.should be_true
108
107
  end
109
108
  end
110
-
109
+
110
+ describe '.version' do
111
+ it "should return the version from the stored YAML file" do
112
+ version = Jeweler::VersionHelper.new(
113
+ File.join(File.dirname(__FILE__), '..')
114
+ ).to_s
115
+
116
+ ThinkingSphinx.version.should == version
117
+ end
118
+ end
119
+
111
120
  describe "use_group_by_shortcut? method" do
112
121
  before :each do
113
122
  adapter = defined?(JRUBY_VERSION) ? :JdbcAdapter : :MysqlAdapter
@@ -115,7 +124,7 @@ describe ThinkingSphinx do
115
124
  pending "No MySQL"
116
125
  return
117
126
  end
118
-
127
+
119
128
  @connection = stub('adapter',
120
129
  :select_all => true,
121
130
  :class => ActiveRecord::ConnectionAdapters::MysqlAdapter,
@@ -124,43 +133,34 @@ describe ThinkingSphinx do
124
133
  ::ActiveRecord::Base.stub!(
125
134
  :connection => @connection
126
135
  )
127
-
128
- ThinkingSphinx.reset_use_group_by_shortcut
136
+
137
+ Thread.current[:thinking_sphinx_use_group_by_shortcut] = nil
129
138
  end
130
-
139
+
131
140
  it "should return true if no ONLY_FULL_GROUP_BY" do
132
141
  @connection.stub!(
133
142
  :select_all => {:a => "OTHER SETTINGS"}
134
143
  )
135
-
144
+
136
145
  ThinkingSphinx.use_group_by_shortcut?.should be_true
137
146
  end
138
-
147
+
139
148
  it "should return true if NULL value" do
140
149
  @connection.stub!(
141
150
  :select_all => {:a => nil}
142
151
  )
143
-
152
+
144
153
  ThinkingSphinx.use_group_by_shortcut?.should be_true
145
154
  end
146
-
147
- it "should return true if using mysql2 gem" do
148
- @connection.stub!(
149
- :class => ActiveRecord::ConnectionAdapters::Mysql2Adapter,
150
- :select_all => {:a => ""}
151
- )
152
-
153
- ThinkingSphinx.use_group_by_shortcut?.should be_true
154
- end unless RUBY_PLATFORM == 'java'
155
-
155
+
156
156
  it "should return false if ONLY_FULL_GROUP_BY is set" do
157
157
  @connection.stub!(
158
158
  :select_all => {:a => "OTHER SETTINGS,ONLY_FULL_GROUP_BY,blah"}
159
159
  )
160
-
160
+
161
161
  ThinkingSphinx.use_group_by_shortcut?.should be_false
162
162
  end
163
-
163
+
164
164
  it "should return false if ONLY_FULL_GROUP_BY is set in any of the values" do
165
165
  @connection.stub!(
166
166
  :select_all => {
@@ -168,10 +168,10 @@ describe ThinkingSphinx do
168
168
  :b => "ONLY_FULL_GROUP_BY"
169
169
  }
170
170
  )
171
-
171
+
172
172
  ThinkingSphinx.use_group_by_shortcut?.should be_false
173
173
  end
174
-
174
+
175
175
  describe "if not using MySQL" do
176
176
  before :each do
177
177
  adapter = defined?(JRUBY_VERSION) ? 'JdbcAdapter' : 'PostgreSQLAdapter'
@@ -179,7 +179,7 @@ describe ThinkingSphinx do
179
179
  pending "No PostgreSQL"
180
180
  return
181
181
  end
182
-
182
+
183
183
  @connection = stub(adapter).as_null_object
184
184
  @connection.stub!(
185
185
  :select_all => true,
@@ -189,14 +189,14 @@ describe ThinkingSphinx do
189
189
  :connection => @connection
190
190
  )
191
191
  end
192
-
192
+
193
193
  it "should return false" do
194
194
  ThinkingSphinx.use_group_by_shortcut?.should be_false
195
195
  end
196
-
196
+
197
197
  it "should not call select_all" do
198
198
  @connection.should_not_receive(:select_all)
199
-
199
+
200
200
  ThinkingSphinx.use_group_by_shortcut?
201
201
  end
202
202
  end