mongoid-giza 0.5.1 → 0.6.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/.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
|