mongoid-giza 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +10 -0
- data/.travis.yml +1 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile +2 -2
- data/README.md +2 -3
- data/Rakefile +10 -2
- data/lib/mongoid/giza.rb +93 -54
- data/lib/mongoid/giza/configuration.rb +62 -38
- data/lib/mongoid/giza/dynamic_index.rb +21 -15
- data/lib/mongoid/giza/index.rb +45 -31
- data/lib/mongoid/giza/index/attribute.rb +22 -17
- data/lib/mongoid/giza/index/field.rb +10 -8
- data/lib/mongoid/giza/indexer.rb +9 -6
- data/lib/mongoid/giza/models/{giza_id.rb → id.rb} +6 -8
- data/lib/mongoid/giza/railtie.rb +6 -3
- data/lib/mongoid/giza/search.rb +41 -27
- data/lib/mongoid/giza/version.rb +2 -1
- data/lib/mongoid/giza/xml_pipe2.rb +64 -18
- data/mongoid-giza.gemspec +12 -10
- data/spec/mongoid/giza/configuration_spec.rb +65 -46
- data/spec/mongoid/giza/dynamic_index_spec.rb +7 -5
- data/spec/mongoid/giza/index/attribute_spec.rb +41 -4
- data/spec/mongoid/giza/index/field_spec.rb +1 -1
- data/spec/mongoid/giza/index_spec.rb +23 -9
- data/spec/mongoid/giza/indexer_spec.rb +4 -1
- data/spec/mongoid/giza/models/giza_id_spec.rb +6 -6
- data/spec/mongoid/giza/search_spec.rb +57 -35
- data/spec/mongoid/giza/xml_pipe2_spec.rb +61 -18
- data/spec/mongoid/giza_spec.rb +93 -101
- data/spec/spec_helper.rb +3 -4
- metadata +25 -10
data/lib/mongoid/giza/version.rb
CHANGED
@@ -2,19 +2,24 @@ require "builder"
|
|
2
2
|
|
3
3
|
module Mongoid
|
4
4
|
module Giza
|
5
|
+
# Represents the xmlpipe2 data source
|
5
6
|
class XMLPipe2
|
6
|
-
|
7
|
-
#
|
8
|
-
# Note that the actual XML will be generated only when {#generate!} is
|
7
|
+
# Creates a new XMLPipe2 object based on the specified index and that will
|
8
|
+
# write to the specified buffer.
|
9
|
+
# Note that the actual XML will be generated only when {#generate!} is
|
10
|
+
# called
|
9
11
|
#
|
10
|
-
# @param index [Mongoid::Giza::Index] the index which will be used to
|
12
|
+
# @param index [Mongoid::Giza::Index] the index which will be used to
|
13
|
+
# generate the data
|
11
14
|
# @param buffer any object that supports the method <<
|
12
15
|
def initialize(index, buffer)
|
13
16
|
@index = index
|
14
17
|
@xml = Builder::XmlMarkup.new(target: buffer)
|
15
18
|
end
|
16
19
|
|
17
|
-
# Generates a XML document with the
|
20
|
+
# Generates a XML document with the
|
21
|
+
# {http://sphinxsearch.com/docs/current.html#xmlpipe2
|
22
|
+
# xmlpipe2 specification}.
|
18
23
|
# The buffer passed on object creation will contain the XML
|
19
24
|
def generate!
|
20
25
|
@xml.instruct! :xml, version: "1.0", encoding: "utf-8"
|
@@ -25,43 +30,84 @@ module Mongoid
|
|
25
30
|
end
|
26
31
|
|
27
32
|
# Generates the schema part of the XML document.
|
28
|
-
# Used internally by {#generate!} so you should never need to call it
|
33
|
+
# Used internally by {#generate!} so you should never need to call it
|
34
|
+
# directly
|
29
35
|
def generate_schema
|
30
36
|
@xml.sphinx :schema do |schema|
|
31
37
|
@index.fields.each do |field|
|
32
|
-
|
33
|
-
|
34
|
-
|
38
|
+
schema.sphinx :field, field_attrs(field)
|
39
|
+
end
|
40
|
+
@index.attributes.each do |attribute|
|
41
|
+
schema.sphinx :attr, attribute_attrs(attribute)
|
35
42
|
end
|
36
|
-
@index.attributes.each { |attribute| schema.sphinx :attr, name: attribute.name, type: attribute.type }
|
37
43
|
end
|
38
44
|
end
|
39
45
|
|
46
|
+
# Returns a Hash of the field's attributes
|
47
|
+
#
|
48
|
+
# @return [Hash] The field's attributes
|
49
|
+
def field_attrs(field)
|
50
|
+
attrs = {name: field.name}
|
51
|
+
attrs[:attr] = :string if field.attribute
|
52
|
+
attrs
|
53
|
+
end
|
54
|
+
|
55
|
+
# Returns a Hash of the attribute's attributes
|
56
|
+
#
|
57
|
+
# @return [Hash] The attribute's attributes
|
58
|
+
def attribute_attrs(attribute)
|
59
|
+
attrs = {name: attribute.name, type: attribute.type}
|
60
|
+
attrs[:default] = attribute.default if attribute.default
|
61
|
+
attrs[:bits] = attribute.bits if attribute.bits
|
62
|
+
attrs
|
63
|
+
end
|
64
|
+
|
40
65
|
# Generates the content part of the XML document.
|
41
|
-
# Used internally by {#generate!} so you should never need to call it
|
66
|
+
# Used internally by {#generate!} so you should never need to call it
|
67
|
+
# directly
|
42
68
|
def generate_docset
|
43
69
|
@index.criteria.each do |object|
|
44
|
-
@xml.sphinx :document, id: object.
|
70
|
+
@xml.sphinx :document, id: object._giza_id do
|
45
71
|
generate_doc_tags(@index.fields, object)
|
46
72
|
generate_doc_tags(@index.attributes, object)
|
47
73
|
end
|
48
74
|
end
|
49
75
|
end
|
50
76
|
|
51
|
-
# Generates the tags with the content to be indexed of every field
|
52
|
-
#
|
77
|
+
# Generates the tags with the content to be indexed of every field and
|
78
|
+
# attribute.
|
79
|
+
# Used internally by {#generate_docset} so you should never need to call
|
80
|
+
# it directly
|
53
81
|
#
|
54
|
-
# @param contents [Array] list of fields or attributes to generate the
|
82
|
+
# @param contents [Array] list of fields or attributes to generate the
|
83
|
+
# tags for
|
55
84
|
# @param object [Object] the object being indexed
|
56
85
|
def generate_doc_tags(contents, object)
|
57
86
|
contents.each do |content|
|
58
|
-
if content.block
|
59
|
-
@xml.tag! content.name, object[content.name]
|
60
|
-
else
|
87
|
+
if content.block
|
61
88
|
@xml.tag! content.name, content.block.call(object)
|
89
|
+
else
|
90
|
+
@xml.tag! content.name, process_value(content, object)
|
62
91
|
end
|
63
92
|
end
|
64
93
|
end
|
94
|
+
|
95
|
+
# Process values
|
96
|
+
# * Converts Date, Time and DateTime objects to unix time
|
97
|
+
#
|
98
|
+
# @param content
|
99
|
+
# [Mongoid::Giza::Index::Field, Mongoid::Giza::Index::Attribute] field
|
100
|
+
# or attribute to process content
|
101
|
+
# @param object [Object] object being indexed
|
102
|
+
#
|
103
|
+
# @return the processed object attribute value
|
104
|
+
def process_value(content, object)
|
105
|
+
if content.is_a?(Index::Attribute) && content.type == :timestamp
|
106
|
+
return object[content.name].to_time.to_i
|
107
|
+
else
|
108
|
+
return object[content.name]
|
109
|
+
end
|
110
|
+
end
|
65
111
|
end
|
66
112
|
end
|
67
113
|
end
|
data/mongoid-giza.gemspec
CHANGED
@@ -1,21 +1,22 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
lib = File.expand_path(
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require "mongoid/giza/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "mongoid-giza"
|
8
8
|
spec.version = Mongoid::Giza::VERSION
|
9
9
|
spec.authors = ["Maurício Batista"]
|
10
10
|
spec.email = ["eddloschi@gmail.com"]
|
11
|
-
spec.description =
|
12
|
-
|
11
|
+
spec.description = "Mongoid layer for the Sphinx fulltext search server " \
|
12
|
+
"that supports block fields and dynamic indexes"
|
13
|
+
spec.summary = %(Mongoid layer for the Sphinx fulltext search server)
|
13
14
|
spec.homepage = "https://github.com/yadevteam/mongoid-giza"
|
14
15
|
spec.license = "MIT"
|
15
16
|
|
16
|
-
spec.files = `git ls-files`.split(
|
17
|
-
spec.executables = spec.files.grep(
|
18
|
-
spec.test_files = spec.files.grep(
|
17
|
+
spec.files = `git ls-files`.split($RS)
|
18
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
19
20
|
spec.require_paths = ["lib"]
|
20
21
|
|
21
22
|
spec.add_development_dependency "bundler", "~> 1.3"
|
@@ -24,10 +25,11 @@ Gem::Specification.new do |spec|
|
|
24
25
|
spec.add_development_dependency "mongoid-rspec", ">= 1.9"
|
25
26
|
spec.add_development_dependency "yard", ">= 0.8.7"
|
26
27
|
spec.add_development_dependency "database_cleaner", ">= 1.2.0"
|
28
|
+
spec.add_development_dependency "rubocop", ">= 0.29.0"
|
27
29
|
|
28
|
-
spec.add_runtime_dependency "mongoid", ">=
|
29
|
-
spec.add_runtime_dependency "riddle", ">= 1.5"
|
30
|
+
spec.add_runtime_dependency "mongoid", ">= 4.0"
|
31
|
+
spec.add_runtime_dependency "riddle", ">= 1.5.11"
|
30
32
|
spec.add_runtime_dependency "builder", ">= 3.0"
|
31
33
|
spec.add_runtime_dependency "docile", ">= 1.1"
|
32
|
-
spec.add_runtime_dependency "activesupport"
|
34
|
+
spec.add_runtime_dependency "activesupport", ">= 4.0"
|
33
35
|
end
|
@@ -4,8 +4,10 @@ describe Mongoid::Giza::Configuration do
|
|
4
4
|
before do
|
5
5
|
@default_source = double("default_source")
|
6
6
|
@default_index = double("default_index")
|
7
|
-
allow(Riddle::Configuration::XMLSource).to receive(:new)
|
8
|
-
|
7
|
+
allow(Riddle::Configuration::XMLSource).to receive(:new)
|
8
|
+
.with(:source, :xmlpipe2) { @default_source }
|
9
|
+
allow(Riddle::Configuration::Index).to receive(:new)
|
10
|
+
.with(:index, @default_source) { @default_index }
|
9
11
|
@config = Mongoid::Giza::Configuration.send(:new)
|
10
12
|
end
|
11
13
|
|
@@ -14,7 +16,8 @@ describe Mongoid::Giza::Configuration do
|
|
14
16
|
expect(@config.index).to be(@default_index)
|
15
17
|
end
|
16
18
|
|
17
|
-
it "should create a Riddle::Configuration::XMLSource for default
|
19
|
+
it "should create a Riddle::Configuration::XMLSource for default " \
|
20
|
+
"settings" do
|
18
21
|
expect(@config.source).to be(@default_source)
|
19
22
|
end
|
20
23
|
|
@@ -35,33 +38,44 @@ describe Mongoid::Giza::Configuration do
|
|
35
38
|
let(:file_open) { allow(File).to receive(:open).with("giza.yml") { file } }
|
36
39
|
|
37
40
|
it "should load the configuration file" do
|
38
|
-
expect(file).to receive(:read)
|
41
|
+
expect(file).to receive(:read) do
|
42
|
+
"test:\n searchd:\n address: localhost"
|
43
|
+
end
|
39
44
|
expect(File).to receive(:open).with("giza.yml") { file }
|
40
45
|
@config.load("giza.yml", "test")
|
41
46
|
end
|
42
47
|
|
43
48
|
it "should set settings" do
|
44
|
-
allow(file).to receive(:read)
|
49
|
+
allow(file).to receive(:read) do
|
50
|
+
"test:\n searchd:\n address: localhost"
|
51
|
+
end
|
45
52
|
file_open
|
46
53
|
@config.load("giza.yml", "test")
|
47
54
|
expect(@config.searchd.address).to eql("localhost")
|
48
55
|
end
|
49
56
|
|
50
57
|
it "should ignore non-existent sections" do
|
51
|
-
allow(file).to receive(:read)
|
58
|
+
allow(file).to receive(:read) do
|
59
|
+
"test:\n miss_section:\n address: localhost"
|
60
|
+
end
|
52
61
|
file_open
|
53
62
|
expect { @config.load("giza.yml", "test") }.not_to raise_error
|
54
63
|
end
|
55
64
|
|
56
65
|
it "should ignore non-existent settings" do
|
57
|
-
allow(file).to receive(:read)
|
58
|
-
|
66
|
+
allow(file).to receive(:read) do
|
67
|
+
"test:\n searchd:\n miss_setting: false"
|
68
|
+
end
|
69
|
+
expect(@config.searchd).not_to receive(:method_missing)
|
70
|
+
.with(:miss_setting=, false)
|
59
71
|
file_open
|
60
72
|
@config.load("giza.yml", "test")
|
61
73
|
end
|
62
74
|
|
63
75
|
it "should interpolate the string with ERB" do
|
64
|
-
allow(file).to receive(:read)
|
76
|
+
allow(file).to receive(:read) do
|
77
|
+
"test:\n searchd:\n address: localhost"
|
78
|
+
end
|
65
79
|
expect(@config).to receive(:interpolate_string).with("localhost", nil)
|
66
80
|
file_open
|
67
81
|
@config.load("giza.yml", "test")
|
@@ -75,7 +89,9 @@ describe Mongoid::Giza::Configuration do
|
|
75
89
|
end
|
76
90
|
|
77
91
|
it "should not interpolate source settings" do
|
78
|
-
allow(file).to receive(:read)
|
92
|
+
allow(file).to receive(:read) do
|
93
|
+
"test:\n source:\n xmlpipe_command: cmd"
|
94
|
+
end
|
79
95
|
expect(@config).not_to receive(:interpolate_string)
|
80
96
|
file_open
|
81
97
|
@config.load("giza.yml", "test")
|
@@ -142,14 +158,18 @@ describe Mongoid::Giza::Configuration do
|
|
142
158
|
before do
|
143
159
|
allow(Riddle::Configuration::Index).to receive(:settings) { [] }
|
144
160
|
allow(Riddle::Configuration::XMLSource).to receive(:new) { source }
|
145
|
-
allow(Riddle::Configuration::Index).to receive(:new)
|
161
|
+
allow(Riddle::Configuration::Index).to receive(:new)
|
162
|
+
.with(index.name, source) { riddle_index }
|
146
163
|
allow(@config).to receive(:apply_default_settings)
|
147
164
|
allow(@config).to receive(:apply_user_settings)
|
148
165
|
end
|
149
166
|
|
150
167
|
it "should create a xmlpipe2 source with the same name of the index" do
|
151
|
-
expect(Riddle::Configuration::XMLSource).to receive(:new)
|
152
|
-
|
168
|
+
expect(Riddle::Configuration::XMLSource).to receive(:new)
|
169
|
+
.with(index.name, :xmlpipe2) { source }
|
170
|
+
allow(Riddle::Configuration::Index).to receive(:new) do
|
171
|
+
double("riddle_index").as_null_object
|
172
|
+
end
|
153
173
|
@config.create_index(index)
|
154
174
|
end
|
155
175
|
|
@@ -158,17 +178,20 @@ describe Mongoid::Giza::Configuration do
|
|
158
178
|
allow(@default_index).to receive(:path) { "/path/to/index" }
|
159
179
|
allow(riddle_index).to receive(:path=).with("/path/to/index")
|
160
180
|
allow(riddle_index).to receive(:path) { "/path/to/index" }
|
161
|
-
expect(riddle_index).to receive(:path=)
|
181
|
+
expect(riddle_index).to receive(:path=)
|
182
|
+
.with("/path/to/index/#{index.name}")
|
162
183
|
@config.create_index(index)
|
163
184
|
end
|
164
185
|
|
165
186
|
it "should apply default settings to the index" do
|
166
|
-
expect(@config).to receive(:apply_default_settings)
|
187
|
+
expect(@config).to receive(:apply_default_settings)
|
188
|
+
.with(@default_index, riddle_index, index)
|
167
189
|
@config.create_index(index)
|
168
190
|
end
|
169
191
|
|
170
192
|
it "should apply default settings to the source" do
|
171
|
-
expect(@config).to receive(:apply_default_settings)
|
193
|
+
expect(@config).to receive(:apply_default_settings)
|
194
|
+
.with(@default_source, source, index)
|
172
195
|
@config.create_index(index)
|
173
196
|
end
|
174
197
|
|
@@ -188,38 +211,30 @@ describe Mongoid::Giza::Configuration do
|
|
188
211
|
end
|
189
212
|
|
190
213
|
describe "register_index" do
|
191
|
-
let(:
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
let(:index) { double("index") }
|
196
|
-
|
197
|
-
let(:indexes) { double("indexes") }
|
214
|
+
let(:riddle_index) do
|
215
|
+
instance_double("Riddle::Configuration::Index", name: "name")
|
216
|
+
end
|
198
217
|
|
199
|
-
|
200
|
-
|
201
|
-
allow(indices).to receive(:length) { length }
|
202
|
-
allow(index).to receive(:name) { :index }
|
203
|
-
allow(indexes).to receive(:[]=)
|
204
|
-
allow(indexes).to receive(:has_key?)
|
218
|
+
let(:riddle_index_copy) do
|
219
|
+
instance_double("Riddle::Configuration::Index", name: "name")
|
205
220
|
end
|
206
221
|
|
222
|
+
let(:indexes) { {riddle_index.name => riddle_index} }
|
223
|
+
|
207
224
|
it "should add the index to the given hash" do
|
208
|
-
|
209
|
-
|
225
|
+
@config.register_index(riddle_index, indexes)
|
226
|
+
expect(indexes).to include riddle_index.name => riddle_index
|
210
227
|
end
|
211
228
|
|
212
|
-
it "should return the position
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
allow(indices).to receive(:index).with(index) { position }
|
217
|
-
expect(@config.register_index(index, indexes)).to be(position)
|
229
|
+
it "should return the position of the index in the indices array" do
|
230
|
+
@config.indices.push(riddle_index)
|
231
|
+
position = @config.register_index(riddle_index_copy, indexes)
|
232
|
+
expect(position).to eql 0
|
218
233
|
end
|
219
234
|
|
220
|
-
it "should return the
|
221
|
-
|
222
|
-
expect(@config.
|
235
|
+
it "should return the indices array length if it's not on the array" do
|
236
|
+
position = @config.register_index(riddle_index, indexes)
|
237
|
+
expect(position).to eql @config.indices.length
|
223
238
|
end
|
224
239
|
end
|
225
240
|
|
@@ -317,8 +332,9 @@ describe Mongoid::Giza::Configuration do
|
|
317
332
|
allow(@config.indexer).to receive(:render) { "indexer" }
|
318
333
|
allow(@config.searchd).to receive(:render) { "searchd" }
|
319
334
|
allow(index).to receive(:render) { "source\nindex" }
|
320
|
-
expect(File).to receive(:open).with(@config.file.output_path, "w")
|
321
|
-
|
335
|
+
expect(File).to receive(:open).with(@config.file.output_path, "w")
|
336
|
+
.and_yield(file)
|
337
|
+
expect(file).to receive(:write).with("\nindexer\nsearchd\nsource\nindex")
|
322
338
|
@config.render
|
323
339
|
end
|
324
340
|
end
|
@@ -327,7 +343,7 @@ describe Mongoid::Giza::Configuration do
|
|
327
343
|
let(:indices) { double("indices") }
|
328
344
|
|
329
345
|
before do
|
330
|
-
@config.instance_variable_set("@generated_indexes",
|
346
|
+
@config.instance_variable_set("@generated_indexes", name: :index)
|
331
347
|
end
|
332
348
|
|
333
349
|
it "should delete the generated riddle indexes" do
|
@@ -356,7 +372,8 @@ describe Mongoid::Giza::Configuration do
|
|
356
372
|
@config.setter(section, :setting, value)
|
357
373
|
end
|
358
374
|
|
359
|
-
it "should no set the value if the section does not respond to the
|
375
|
+
it "should no set the value if the section does not respond to the " \
|
376
|
+
"attribute setter" do
|
360
377
|
allow(section).to receive(:respond_to?).with("setting=") { false }
|
361
378
|
expect(section).not_to receive("setting=")
|
362
379
|
@config.setter(section, :setting, value)
|
@@ -367,7 +384,8 @@ describe Mongoid::Giza::Configuration do
|
|
367
384
|
let(:indices) { double("indices") }
|
368
385
|
|
369
386
|
before do
|
370
|
-
@config.instance_variable_set("@generated_indexes",
|
387
|
+
@config.instance_variable_set("@generated_indexes", name: :index,
|
388
|
+
two: :index2)
|
371
389
|
end
|
372
390
|
|
373
391
|
it "should remove the indexes from the indices array" do
|
@@ -378,7 +396,8 @@ describe Mongoid::Giza::Configuration do
|
|
378
396
|
|
379
397
|
it "should remove the index from the generated indexes collection" do
|
380
398
|
@config.remove_generated_indexes([:name])
|
381
|
-
expect(@config.instance_variable_get("@generated_indexes"))
|
399
|
+
expect(@config.instance_variable_get("@generated_indexes"))
|
400
|
+
.not_to include(name: :index)
|
382
401
|
end
|
383
402
|
end
|
384
403
|
end
|
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe Mongoid::Giza::DynamicIndex do
|
4
4
|
describe "initialize" do
|
5
5
|
it "should accept the class, settings and a proc" do
|
6
|
-
dynamic_index = Mongoid::Giza::DynamicIndex.new(Object, {},
|
6
|
+
dynamic_index = Mongoid::Giza::DynamicIndex.new(Object, {}, -> {})
|
7
7
|
expect(dynamic_index.klass).to be(Object)
|
8
8
|
expect(dynamic_index.settings).to eql({})
|
9
9
|
expect(dynamic_index.block).to be_a_kind_of(Proc)
|
@@ -11,7 +11,7 @@ describe Mongoid::Giza::DynamicIndex do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
describe "generate!" do
|
14
|
-
let(:dynamic_index) { Mongoid::Giza::DynamicIndex.new(Object, {},
|
14
|
+
let(:dynamic_index) { Mongoid::Giza::DynamicIndex.new(Object, {}, -> {}) }
|
15
15
|
|
16
16
|
let(:index) { double("index") }
|
17
17
|
|
@@ -51,19 +51,21 @@ describe Mongoid::Giza::DynamicIndex do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should check if the object is from the index's class" do
|
54
|
-
expect(Mongoid::Giza::DynamicIndex.new(String, {},
|
54
|
+
expect(Mongoid::Giza::DynamicIndex.new(String, {}, -> {})
|
55
|
+
.generate_index([])).to eql(nil)
|
55
56
|
end
|
56
57
|
|
57
58
|
it "should execute the index dsl on the parameter" do
|
58
59
|
object = Object.new
|
59
|
-
block =
|
60
|
+
block = proc {}
|
60
61
|
expect(Docile).to receive(:dsl_eval).with(index, object, &block)
|
61
62
|
Mongoid::Giza::DynamicIndex.new(Object, {}, block).generate_index(object)
|
62
63
|
end
|
63
64
|
|
64
65
|
it "should return an Index" do
|
65
66
|
allow(Docile).to receive(:dsl_eval) { index }
|
66
|
-
expect(Mongoid::Giza::DynamicIndex.new(String, {},
|
67
|
+
expect(Mongoid::Giza::DynamicIndex.new(String, {}, -> {})
|
68
|
+
.generate_index("")).to be(index)
|
67
69
|
end
|
68
70
|
end
|
69
71
|
end
|