ransack 1.8.10 → 2.0.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/.gitignore +0 -1
- data/.travis.yml +12 -3
- data/CHANGELOG.md +29 -5
- data/Gemfile +1 -9
- data/README.md +16 -25
- data/Rakefile +1 -22
- data/lib/polyamorous.rb +5 -18
- data/lib/polyamorous/activerecord_5.1_ruby_2/join_dependency.rb +2 -2
- data/lib/polyamorous/activerecord_5.2.0_ruby_2/join_dependency.rb +2 -2
- data/lib/polyamorous/activerecord_5.2.1_ruby_2/join_association.rb +38 -0
- data/lib/polyamorous/activerecord_5.2.1_ruby_2/join_dependency.rb +75 -0
- data/lib/ransack/adapters/active_record.rb +0 -9
- data/lib/ransack/adapters/active_record/base.rb +8 -0
- data/lib/ransack/adapters/active_record/context.rb +118 -182
- data/lib/ransack/adapters/active_record/ransack/context.rb +1 -8
- data/lib/ransack/adapters/active_record/ransack/translate.rb +1 -5
- data/lib/ransack/constants.rb +1 -1
- data/lib/ransack/context.rb +4 -0
- data/lib/ransack/nodes/value.rb +1 -1
- data/lib/ransack/search.rb +1 -1
- data/lib/ransack/version.rb +1 -1
- data/ransack.gemspec +4 -3
- data/spec/helpers/polyamorous_helper.rb +7 -9
- data/spec/ransack/adapters/active_record/base_spec.rb +35 -0
- data/spec/ransack/adapters/active_record/context_spec.rb +3 -6
- data/spec/ransack/helpers/form_builder_spec.rb +3 -15
- data/spec/ransack/helpers/form_helper_spec.rb +11 -99
- data/spec/ransack/join_association_spec.rb +1 -6
- data/spec/ransack/join_dependency_spec.rb +1 -6
- data/spec/ransack/search_spec.rb +2 -2
- data/spec/support/schema.rb +3 -21
- metadata +10 -83
- data/lib/polyamorous/activerecord_3_and_4.0_ruby_1.9/join_association.rb +0 -76
- data/lib/polyamorous/activerecord_3_and_4.0_ruby_1.9/join_dependency.rb +0 -96
- data/lib/polyamorous/activerecord_4.1_ruby_1.9/join_association.rb +0 -2
- data/lib/polyamorous/activerecord_4.1_ruby_1.9/join_dependency.rb +0 -4
- data/lib/polyamorous/activerecord_4.1_ruby_2/join_association.rb +0 -2
- data/lib/polyamorous/activerecord_4.1_ruby_2/join_dependency.rb +0 -3
- data/lib/polyamorous/activerecord_4.1_ruby_2/make_polyamorous_inner_joins.rb +0 -14
- data/lib/polyamorous/activerecord_4.2_ruby_1.9/join_association.rb +0 -46
- data/lib/polyamorous/activerecord_4.2_ruby_1.9/join_dependency.rb +0 -87
- data/lib/polyamorous/activerecord_4.2_ruby_2/join_association.rb +0 -2
- data/lib/polyamorous/activerecord_4.2_ruby_2/join_dependency.rb +0 -24
- data/lib/ransack/adapters/active_record/3.0/compat.rb +0 -173
- data/lib/ransack/adapters/active_record/3.0/context.rb +0 -203
- data/lib/ransack/adapters/active_record/3.1/context.rb +0 -212
- data/lib/ransack/adapters/active_record/3.2/context.rb +0 -44
- data/lib/ransack/adapters/mongoid.rb +0 -15
- data/lib/ransack/adapters/mongoid/3.2/.gitkeep +0 -0
- data/lib/ransack/adapters/mongoid/attributes/attribute.rb +0 -37
- data/lib/ransack/adapters/mongoid/attributes/order_predications.rb +0 -17
- data/lib/ransack/adapters/mongoid/attributes/predications.rb +0 -141
- data/lib/ransack/adapters/mongoid/base.rb +0 -134
- data/lib/ransack/adapters/mongoid/context.rb +0 -212
- data/lib/ransack/adapters/mongoid/inquiry_hash.rb +0 -23
- data/lib/ransack/adapters/mongoid/ransack/constants.rb +0 -88
- data/lib/ransack/adapters/mongoid/ransack/context.rb +0 -59
- data/lib/ransack/adapters/mongoid/ransack/nodes/condition.rb +0 -22
- data/lib/ransack/adapters/mongoid/ransack/translate.rb +0 -13
- data/lib/ransack/adapters/mongoid/ransack/visitor.rb +0 -18
- data/lib/ransack/adapters/mongoid/table.rb +0 -35
- data/spec/mongoid/adapters/mongoid/base_spec.rb +0 -314
- data/spec/mongoid/adapters/mongoid/context_spec.rb +0 -56
- data/spec/mongoid/configuration_spec.rb +0 -162
- data/spec/mongoid/dependencies_spec.rb +0 -8
- data/spec/mongoid/helpers/ransack_helper.rb +0 -11
- data/spec/mongoid/nodes/condition_spec.rb +0 -49
- data/spec/mongoid/nodes/grouping_spec.rb +0 -13
- data/spec/mongoid/predicate_spec.rb +0 -155
- data/spec/mongoid/search_spec.rb +0 -445
- data/spec/mongoid/support/mongoid.yml +0 -11
- data/spec/mongoid/support/schema.rb +0 -135
- data/spec/mongoid/translate_spec.rb +0 -14
- data/spec/mongoid_spec_helper.rb +0 -63
- data/spec/ransack/dependencies_spec.rb +0 -12
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'mongoid_spec_helper'
|
2
|
-
|
3
|
-
module Ransack
|
4
|
-
module Adapters
|
5
|
-
module Mongoid
|
6
|
-
describe Context do
|
7
|
-
subject { Context.new(Person) }
|
8
|
-
|
9
|
-
describe '#relation_for' do
|
10
|
-
before { pending "not implemented for mongoid" }
|
11
|
-
it 'returns relation for given object' do
|
12
|
-
expect(subject.object).to be_an ::ActiveRecord::Relation
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe '#evaluate' do
|
17
|
-
it 'evaluates search objects' do
|
18
|
-
search = Search.new(Person, :name_eq => 'Joe Blow')
|
19
|
-
result = subject.evaluate(search)
|
20
|
-
|
21
|
-
expect(result).to be_an ::Mongoid::Criteria
|
22
|
-
expect(result.selector).to eq({ 'name' => 'Joe Blow' })
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'SELECTs DISTINCT when distinct: true' do
|
26
|
-
pending "distinct doesn't work"
|
27
|
-
|
28
|
-
search = Search.new(Person, :name_eq => 'Joe Blow')
|
29
|
-
result = subject.evaluate(search, :distinct => true)
|
30
|
-
|
31
|
-
expect(result).to be_an ::ActiveRecord::Relation
|
32
|
-
expect(result.to_sql).to match /SELECT DISTINCT/
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'contextualizes strings to attributes' do
|
37
|
-
attribute = subject.contextualize 'name'
|
38
|
-
expect(attribute).to be_a ::Ransack::Adapters::Mongoid::Attributes::Attribute
|
39
|
-
expect(attribute.name.to_s).to eq 'name'
|
40
|
-
# expect(attribute.relation.table_alias).to eq 'parents_people'
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'builds new associations if not yet built' do
|
44
|
-
pending "not implemented for mongoid"
|
45
|
-
|
46
|
-
attribute = subject.contextualize 'children_articles_title'
|
47
|
-
expect(attribute).to be_a Arel::Attributes::Attribute
|
48
|
-
expect(attribute.name.to_s).to eq 'title'
|
49
|
-
expect(attribute.relation.name).to eq 'articles'
|
50
|
-
expect(attribute.relation.table_alias).to be_nil
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,162 +0,0 @@
|
|
1
|
-
require 'mongoid_spec_helper'
|
2
|
-
|
3
|
-
module Ransack
|
4
|
-
describe Configuration do
|
5
|
-
it 'yields Ransack on configure' do
|
6
|
-
Ransack.configure { |config| expect(config).to eq Ransack }
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'adds predicates' do
|
10
|
-
Ransack.configure do |config|
|
11
|
-
config.add_predicate :test_predicate
|
12
|
-
end
|
13
|
-
|
14
|
-
expect(Ransack.predicates).to have_key 'test_predicate'
|
15
|
-
expect(Ransack.predicates).to have_key 'test_predicate_any'
|
16
|
-
expect(Ransack.predicates).to have_key 'test_predicate_all'
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'avoids creating compound predicates if compounds: false' do
|
20
|
-
Ransack.configure do |config|
|
21
|
-
config.add_predicate(
|
22
|
-
:test_predicate_without_compound,
|
23
|
-
:compounds => false
|
24
|
-
)
|
25
|
-
end
|
26
|
-
expect(Ransack.predicates)
|
27
|
-
.to have_key 'test_predicate_without_compound'
|
28
|
-
expect(Ransack.predicates)
|
29
|
-
.not_to have_key 'test_predicate_without_compound_any'
|
30
|
-
expect(Ransack.predicates)
|
31
|
-
.not_to have_key 'test_predicate_without_compound_all'
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'should have default value for search key' do
|
35
|
-
expect(Ransack.options[:search_key]).to eq :q
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'changes default search key parameter' do
|
39
|
-
default = Ransack.options.clone
|
40
|
-
|
41
|
-
Ransack.configure { |c| c.search_key = :query }
|
42
|
-
|
43
|
-
expect(Ransack.options[:search_key]).to eq :query
|
44
|
-
|
45
|
-
Ransack.options = default
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'should have default values for arrows' do
|
49
|
-
expect(Ransack.options[:up_arrow]).to eq '▼'
|
50
|
-
expect(Ransack.options[:down_arrow]).to eq '▲'
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'changes the default value for the up arrow only' do
|
54
|
-
default, new_up_arrow = Ransack.options.clone, 'U+02191'
|
55
|
-
|
56
|
-
Ransack.configure { |c| c.custom_arrows = { up_arrow: new_up_arrow } }
|
57
|
-
|
58
|
-
expect(Ransack.options[:down_arrow]).to eq default[:down_arrow]
|
59
|
-
expect(Ransack.options[:up_arrow]).to eq new_up_arrow
|
60
|
-
|
61
|
-
Ransack.options = default
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'changes the default value for the down arrow only' do
|
65
|
-
default, new_down_arrow = Ransack.options.clone, '<i class="down"></i>'
|
66
|
-
|
67
|
-
Ransack.configure { |c| c.custom_arrows = { down_arrow: new_down_arrow } }
|
68
|
-
|
69
|
-
expect(Ransack.options[:up_arrow]).to eq default[:up_arrow]
|
70
|
-
expect(Ransack.options[:down_arrow]).to eq new_down_arrow
|
71
|
-
|
72
|
-
Ransack.options = default
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'changes the default value for both arrows' do
|
76
|
-
default = Ransack.options.clone
|
77
|
-
new_up_arrow = '<i class="fa fa-long-arrow-up"></i>'
|
78
|
-
new_down_arrow = 'U+02193'
|
79
|
-
|
80
|
-
Ransack.configure do |c|
|
81
|
-
c.custom_arrows = { up_arrow: new_up_arrow, down_arrow: new_down_arrow }
|
82
|
-
end
|
83
|
-
|
84
|
-
expect(Ransack.options[:up_arrow]).to eq new_up_arrow
|
85
|
-
expect(Ransack.options[:down_arrow]).to eq new_down_arrow
|
86
|
-
|
87
|
-
Ransack.options = default
|
88
|
-
end
|
89
|
-
|
90
|
-
it 'consecutive arrow customizations respect previous customizations' do
|
91
|
-
default = Ransack.options.clone
|
92
|
-
|
93
|
-
Ransack.configure { |c| c.custom_arrows = { up_arrow: 'up' } }
|
94
|
-
expect(Ransack.options[:down_arrow]).to eq default[:down_arrow]
|
95
|
-
|
96
|
-
Ransack.configure { |c| c.custom_arrows = { down_arrow: 'DOWN' } }
|
97
|
-
expect(Ransack.options[:up_arrow]).to eq 'up'
|
98
|
-
|
99
|
-
Ransack.configure { |c| c.custom_arrows = { up_arrow: '<i>U-Arrow</i>' } }
|
100
|
-
expect(Ransack.options[:down_arrow]).to eq 'DOWN'
|
101
|
-
|
102
|
-
Ransack.configure { |c| c.custom_arrows = { down_arrow: 'down arrow-2' } }
|
103
|
-
expect(Ransack.options[:up_arrow]).to eq '<i>U-Arrow</i>'
|
104
|
-
|
105
|
-
Ransack.options = default
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'adds predicates that take arrays, overriding compounds' do
|
109
|
-
Ransack.configure do |config|
|
110
|
-
config.add_predicate(
|
111
|
-
:test_array_predicate,
|
112
|
-
:wants_array => true,
|
113
|
-
:compounds => true
|
114
|
-
)
|
115
|
-
end
|
116
|
-
|
117
|
-
expect(Ransack.predicates['test_array_predicate'].wants_array).to eq true
|
118
|
-
expect(Ransack.predicates).not_to have_key 'test_array_predicate_any'
|
119
|
-
expect(Ransack.predicates).not_to have_key 'test_array_predicate_all'
|
120
|
-
end
|
121
|
-
|
122
|
-
describe '`wants_array` option takes precedence over Arel predicate' do
|
123
|
-
it 'implicitly wants an array for in/not in predicates' do
|
124
|
-
Ransack.configure do |config|
|
125
|
-
config.add_predicate(
|
126
|
-
:test_in_predicate,
|
127
|
-
:arel_predicate => 'in'
|
128
|
-
)
|
129
|
-
config.add_predicate(
|
130
|
-
:test_not_in_predicate,
|
131
|
-
:arel_predicate => 'not_in'
|
132
|
-
)
|
133
|
-
end
|
134
|
-
|
135
|
-
expect(Ransack.predicates['test_in_predicate'].wants_array)
|
136
|
-
.to eq true
|
137
|
-
expect(Ransack.predicates['test_not_in_predicate'].wants_array)
|
138
|
-
.to eq true
|
139
|
-
end
|
140
|
-
|
141
|
-
it 'explicitly does not want array for in/not_in predicates' do
|
142
|
-
Ransack.configure do |config|
|
143
|
-
config.add_predicate(
|
144
|
-
:test_in_predicate_no_array,
|
145
|
-
:arel_predicate => 'in',
|
146
|
-
:wants_array => false
|
147
|
-
)
|
148
|
-
config.add_predicate(
|
149
|
-
:test_not_in_predicate_no_array,
|
150
|
-
:arel_predicate => 'not_in',
|
151
|
-
:wants_array => false
|
152
|
-
)
|
153
|
-
end
|
154
|
-
|
155
|
-
expect(Ransack.predicates['test_in_predicate_no_array'].wants_array)
|
156
|
-
.to eq false
|
157
|
-
expect(Ransack.predicates['test_not_in_predicate_no_array'].wants_array)
|
158
|
-
.to eq false
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'mongoid_spec_helper'
|
2
|
-
|
3
|
-
module Ransack
|
4
|
-
module Nodes
|
5
|
-
describe Condition do
|
6
|
-
|
7
|
-
context 'with an alias' do
|
8
|
-
subject {
|
9
|
-
Condition.extract(
|
10
|
-
Context.for(Person), 'term_start', Person.first(2).map(&:name)
|
11
|
-
)
|
12
|
-
}
|
13
|
-
|
14
|
-
specify { expect(subject.combinator).to eq 'or' }
|
15
|
-
specify { expect(subject.predicate.name).to eq 'start' }
|
16
|
-
|
17
|
-
it 'converts the alias to the correct attributes' do
|
18
|
-
expect(subject.attributes.map(&:name)).to eq(['name', 'email'])
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context 'with multiple values and an _any predicate' do
|
23
|
-
subject { Condition.extract(Context.for(Person), 'name_eq_any', Person.first(2).map(&:name)) }
|
24
|
-
|
25
|
-
specify { expect(subject.values.size).to eq(2) }
|
26
|
-
end
|
27
|
-
|
28
|
-
context 'with an invalid predicate' do
|
29
|
-
subject { Condition.extract(Context.for(Person), 'name_invalid', Person.first.name) }
|
30
|
-
|
31
|
-
context "when ignore_unknown_conditions is false" do
|
32
|
-
before do
|
33
|
-
Ransack.configure { |config| config.ignore_unknown_conditions = false }
|
34
|
-
end
|
35
|
-
|
36
|
-
specify { expect { subject }.to raise_error ArgumentError }
|
37
|
-
end
|
38
|
-
|
39
|
-
context "when ignore_unknown_conditions is true" do
|
40
|
-
before do
|
41
|
-
Ransack.configure { |config| config.ignore_unknown_conditions = true }
|
42
|
-
end
|
43
|
-
|
44
|
-
specify { expect(subject).to be_nil }
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,155 +0,0 @@
|
|
1
|
-
require 'mongoid_spec_helper'
|
2
|
-
|
3
|
-
module Ransack
|
4
|
-
describe Predicate do
|
5
|
-
|
6
|
-
before do
|
7
|
-
@s = Search.new(Person)
|
8
|
-
end
|
9
|
-
|
10
|
-
shared_examples 'wildcard escaping' do |method, value|
|
11
|
-
it 'automatically converts integers to strings' do
|
12
|
-
subject.parent_id_cont = 1
|
13
|
-
expect { subject.result }.to_not raise_error
|
14
|
-
end
|
15
|
-
|
16
|
-
it "escapes '%', '.' and '\\\\' in value" do
|
17
|
-
subject.send(:"#{method}=", '%._\\')
|
18
|
-
expect(subject.result.selector).to eq(value)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe 'eq' do
|
23
|
-
it 'generates an equality condition for boolean true' do
|
24
|
-
@s.awesome_eq = true
|
25
|
-
expect(@s.result.selector).to eq({ "awesome" => true })
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'generates an equality condition for boolean false' do
|
29
|
-
@s.awesome_eq = false
|
30
|
-
expect(@s.result.selector).to eq({ "awesome" => false })
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'does not generate a condition for nil' do
|
34
|
-
@s.awesome_eq = nil
|
35
|
-
expect(@s.result.selector).to eq({ })
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe 'cont' do
|
40
|
-
it_has_behavior 'wildcard escaping', :name_cont, { 'name' => /%\._\\/i } do
|
41
|
-
subject { @s }
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'generates a regex query' do
|
45
|
-
@s.name_cont = 'ric'
|
46
|
-
expect(@s.result.selector).to eq({ 'name' => /ric/i })
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe 'not_cont' do
|
51
|
-
it_has_behavior 'wildcard escaping', :name_not_cont, { "$not" => { 'name' => /%\._\\/i } } do
|
52
|
-
subject { @s }
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'generates a regex query' do
|
56
|
-
@s.name_not_cont = 'ric'
|
57
|
-
expect(@s.result.selector).to eq({ "$not" => { 'name' => /ric/i } })
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
describe 'null' do
|
62
|
-
it 'generates a value IS NULL query' do
|
63
|
-
@s.name_null = true
|
64
|
-
expect(@s.result.selector).to eq({ 'name' => nil })
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'generates a value IS NOT NULL query when assigned false' do
|
68
|
-
@s.name_null = false
|
69
|
-
expect(@s.result.selector).to eq( { 'name' => { '$ne' => nil } })
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
describe 'not_null' do
|
74
|
-
it 'generates a value IS NOT NULL query' do
|
75
|
-
@s.name_not_null = true
|
76
|
-
expect(@s.result.selector).to eq({ 'name' => { '$ne' => nil } })
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'generates a value IS NULL query when assigned false' do
|
80
|
-
@s.name_not_null = false
|
81
|
-
expect(@s.result.selector).to eq({ 'name' => nil })
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
describe 'present' do
|
86
|
-
it %q[generates a value IS NOT NULL AND value != '' query] do
|
87
|
-
@s.name_present = true
|
88
|
-
expect(@s.result.selector).to eq({ '$and' => [ { 'name' => { '$ne' => nil } }, { 'name' => { '$ne' => '' } } ] })
|
89
|
-
end
|
90
|
-
|
91
|
-
it %q[generates a value IS NULL OR value = '' query when assigned false] do
|
92
|
-
@s.name_present = false
|
93
|
-
expect(@s.result.selector).to eq({ '$or' => [ { 'name' => nil }, { 'name' => '' } ] })
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
describe 'blank' do
|
98
|
-
it %q[generates a value IS NULL OR value = '' query] do
|
99
|
-
@s.name_blank = true
|
100
|
-
expect(@s.result.selector).to eq({ '$or' => [ { 'name' => nil}, { 'name' => '' } ] })
|
101
|
-
end
|
102
|
-
|
103
|
-
it %q[generates a value IS NOT NULL AND value != '' query when assigned false] do
|
104
|
-
@s.name_blank = false
|
105
|
-
expect(@s.result.selector).to eq({ '$and' => [ { 'name' => { '$ne' => nil}}, { 'name' => { '$ne' => '' }} ] })
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
describe 'gt' do
|
110
|
-
it 'generates an greater than for time' do
|
111
|
-
time = Time.now
|
112
|
-
@s.created_at_gt = time
|
113
|
-
expect(@s.result.selector).to eq({ "created_at" => { '$gt' => time } })
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
describe 'lt' do
|
118
|
-
it 'generates an greater than for time' do
|
119
|
-
time = Time.now
|
120
|
-
@s.created_at_lt = time
|
121
|
-
expect(@s.result.selector).to eq({ "created_at" => { '$lt' => time } })
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
describe 'gteq' do
|
126
|
-
it 'generates an greater than for time' do
|
127
|
-
time = Time.now
|
128
|
-
@s.created_at_gteq = time
|
129
|
-
expect(@s.result.selector).to eq({ "created_at" => { '$gte' => time } })
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
describe 'lteq' do
|
134
|
-
it 'generates an greater than for time' do
|
135
|
-
time = Time.now
|
136
|
-
@s.created_at_lteq = time
|
137
|
-
expect(@s.result.selector).to eq({ "created_at" => { '$lte' => time } })
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
describe 'starts_with' do
|
142
|
-
it 'generates an starts_with' do
|
143
|
-
@s.name_start = 'ric'
|
144
|
-
expect(@s.result.selector).to eq({ "name" => /\Aric/i })
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
describe 'ends_with' do
|
149
|
-
it 'generates an ends_with' do
|
150
|
-
@s.name_end = 'ric'
|
151
|
-
expect(@s.result.selector).to eq({ "name" => /ric\Z/i })
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|