marty 1.2.8 → 1.2.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/app/components/marty/base_rule_view.rb +29 -14
- data/app/components/marty/extras/layout.rb +3 -2
- data/app/models/marty/base_rule.rb +3 -3
- data/lib/marty/version.rb +1 -1
- data/spec/dummy/app/models/gemini/my_rule.rb +12 -1
- data/spec/dummy/app/models/gemini/xyz_rule.rb +2 -1
- data/spec/dummy/config/locales/en.yml +6 -1
- data/spec/features/rule_spec.rb +34 -14
- data/spec/fixtures/csv/rule/MyRule.csv +2 -1
- data/spec/models/rule_spec.rb +24 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f9329ef429a6180b90811a7f0f438395a06a51f
|
4
|
+
data.tar.gz: 53eb8d02f9e32fb11f44f8a091a037d7758349b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb21b47adbdc2a81981d9b1334e6e1e9ab93d989bcaa51c166ed20e99b2b9ead53d0725497fd5e43879d99029255ecfd189adadf0a69367061610a9e426fc675
|
7
|
+
data.tar.gz: 738b139779f6d7a000b210b998a2c485fda2d47ffee0d9e463678fa41498290ccb8662d8af54b9c3b18c7c43ac52fef0e9464ff6de0819ac0c940b6466121629
|
data/Gemfile.lock
CHANGED
@@ -103,13 +103,19 @@ class Marty::BaseRuleView < Marty::McflyGridPanel
|
|
103
103
|
}
|
104
104
|
end
|
105
105
|
|
106
|
-
def self.jsonb_field_getter(j, c)
|
107
|
-
lambda
|
106
|
+
def self.jsonb_field_getter(j, c, nullbool=nil)
|
107
|
+
lambda do |r|
|
108
|
+
rv = r.send(j)[c]
|
109
|
+
v = nullbool ? (rv == true ? 'True' :
|
110
|
+
rv == false ? 'False' : rv) : rv
|
111
|
+
v || ""
|
112
|
+
end
|
108
113
|
end
|
109
114
|
|
110
|
-
def self.jsonb_field_setter(j, c)
|
111
|
-
lambda do |r,
|
112
|
-
v
|
115
|
+
def self.jsonb_field_setter(j, c, bool=nil)
|
116
|
+
lambda do |r, rv|
|
117
|
+
v = bool ? rv.to_s.downcase == 'true' : rv
|
118
|
+
rv == '' || rv == '---' ? r.send(j).delete(c) : r.send(j)[c] = v
|
113
119
|
end
|
114
120
|
end
|
115
121
|
|
@@ -212,26 +218,35 @@ class Marty::BaseRuleView < Marty::McflyGridPanel
|
|
212
218
|
|
213
219
|
def self.field_maker(namestr, h, meth)
|
214
220
|
name = namestr.to_sym
|
221
|
+
nullbool = h[:type] == :boolean && (h[:null] == true || !h.include?(:null))
|
215
222
|
attribute name do |c|
|
216
223
|
c.width = h[:width] || 150
|
217
|
-
case
|
218
|
-
when :
|
219
|
-
|
220
|
-
|
224
|
+
case
|
225
|
+
when h[:type] == :datetime
|
226
|
+
c.format = 'Y-m-d H:i'
|
227
|
+
when h[:type] == :date
|
228
|
+
c.format = 'Y-m-d'
|
229
|
+
when nullbool
|
230
|
+
c.type = :string
|
231
|
+
enum_column(c, ['True', 'False'])
|
232
|
+
else
|
233
|
+
c.type = h[:type] || :string
|
221
234
|
end
|
222
235
|
c.label = h[:label] if h[:label]
|
223
|
-
if h[:enum]
|
236
|
+
if h[:enum] || (h[:type] == :string && h[:values].present?)
|
237
|
+
vals = h[:enum] || h[:values]
|
224
238
|
if h[:multi]
|
225
|
-
enum_array(c,
|
239
|
+
enum_array(c, vals)
|
226
240
|
else
|
227
|
-
enum_column(c,
|
241
|
+
enum_column(c, vals)
|
228
242
|
end
|
229
243
|
end
|
230
244
|
# for some unexplained reason the getter/setter need the full
|
231
245
|
# class qualification
|
232
246
|
if h[:type] != :range
|
233
|
-
c.getter = Marty::
|
234
|
-
c.setter = Marty::
|
247
|
+
c.getter = Marty::BaseRuleView.jsonb_field_getter(meth, namestr, nullbool)
|
248
|
+
c.setter = Marty::BaseRuleView.jsonb_field_setter(meth, namestr,
|
249
|
+
h[:type]==:boolean)
|
235
250
|
c.filter_with = lambda do |rel, value, op|
|
236
251
|
v = ActiveRecord::Base.connection.quote(value)[1..-2]
|
237
252
|
rel.where("#{meth}->>'#{namestr}' like '%#{v}%'")
|
@@ -73,13 +73,14 @@ module Layout
|
|
73
73
|
######################################################################
|
74
74
|
# PG ENUM field handling
|
75
75
|
|
76
|
-
def enum_column(c,
|
76
|
+
def enum_column(c, class_or_array)
|
77
|
+
vals = class_or_array.is_a?(Array) ? class_or_array : class_or_array::VALUES
|
77
78
|
editor_config = {
|
78
79
|
trigger_action: :all,
|
79
80
|
xtype: :combo,
|
80
81
|
|
81
82
|
# hacky: extjs has issues with forceSelection true and clearing combos
|
82
|
-
store:
|
83
|
+
store: vals + ['---'],
|
83
84
|
|
84
85
|
# we can dynamically add enums (i.e. they're not in VALUES) --
|
85
86
|
# turn off forced selection.
|
@@ -17,7 +17,7 @@ class Marty::BaseRule < Marty::Base
|
|
17
17
|
types << :date if Date.parse(v) rescue nil
|
18
18
|
types << :datetime if DateTime.parse(v) rescue nil
|
19
19
|
types << :range if chkrange(v) rescue nil
|
20
|
-
types << :boolean if [true, false].include?(v)
|
20
|
+
types << :boolean if [true, false, 'True', 'False'].include?(v)
|
21
21
|
types
|
22
22
|
end
|
23
23
|
def check(name, h)
|
@@ -72,7 +72,7 @@ class Marty::BaseRule < Marty::Base
|
|
72
72
|
|
73
73
|
before_create do
|
74
74
|
self.class.guard_info.each do |k,v|
|
75
|
-
next if v
|
75
|
+
next if !v.include?(:default) || self.simple_guards.include?(k)
|
76
76
|
self.simple_guards[k] = v[:default]
|
77
77
|
end
|
78
78
|
end
|
@@ -108,7 +108,7 @@ class Marty::BaseRule < Marty::Base
|
|
108
108
|
|
109
109
|
q = q.where("(#{isn} #{filts})")
|
110
110
|
end
|
111
|
-
|
111
|
+
#print q.to_sql
|
112
112
|
q.order(:name)
|
113
113
|
end
|
114
114
|
|
data/lib/marty/version.rb
CHANGED
@@ -22,13 +22,24 @@ class Gemini::MyRule < Marty::DeloreanRule
|
|
22
22
|
values: ["Hi Mom", "abc", "def", "zzz"],
|
23
23
|
width: 100},
|
24
24
|
"g_bool" => { type: :boolean,
|
25
|
+
width: 100,
|
26
|
+
null: false},
|
27
|
+
"g_nullbool" => { type: :boolean,
|
25
28
|
width: 100},
|
26
29
|
"g_range" => { type: :range,
|
27
30
|
width: 100},
|
28
31
|
"g_integer" => { type: :integer,
|
29
32
|
width: 100},
|
30
33
|
"g_has_default" => { type: :string,
|
31
|
-
default: "string default"}
|
34
|
+
default: "string default"},
|
35
|
+
"g_bool_def" => { type: :boolean,
|
36
|
+
width: 100,
|
37
|
+
default: true,
|
38
|
+
null: false},
|
39
|
+
"g_nbool_def" => { type: :boolean,
|
40
|
+
default: false,
|
41
|
+
width: 100},
|
42
|
+
}
|
32
43
|
end
|
33
44
|
def self.results_cfg_var
|
34
45
|
'RULEOPTS_MYRULE'
|
@@ -9,7 +9,12 @@ en:
|
|
9
9
|
g_array: "Array Guard"
|
10
10
|
g_single: "Single Guard"
|
11
11
|
g_bool: "Bool Guard"
|
12
|
+
g_string: "String list Guard"
|
13
|
+
g_has_default: "Defaulted String"
|
14
|
+
g_nullbool: "NullBool Guard"
|
12
15
|
g_range: "Range Guard"
|
13
16
|
g_range1: "Range Guard 1"
|
14
17
|
g_range2: "Range Guard 2"
|
15
|
-
other_flag: "Other"
|
18
|
+
other_flag: "Other"
|
19
|
+
g_bool_def: "Bool def Guard"
|
20
|
+
g_nbool_def: "NBool def Guard"
|
data/spec/features/rule_spec.rb
CHANGED
@@ -94,7 +94,7 @@ feature 'rule view', js: true do
|
|
94
94
|
time_fill_in(1, '08:03:01')
|
95
95
|
press("OK")
|
96
96
|
wait_for_ajax
|
97
|
-
expect(mrv.row_count()).to eq(
|
97
|
+
expect(mrv.row_count()).to eq(9)
|
98
98
|
expect(mrv.get_row_vals(1)).to include({"name"=>"abc",
|
99
99
|
"rule_type"=>"SimpleRule",
|
100
100
|
"start_dt"=>"2013-01-01T19:03:01.000Z",
|
@@ -104,8 +104,12 @@ feature 'rule view', js: true do
|
|
104
104
|
"g_single"=>"",
|
105
105
|
"g_string"=>"",
|
106
106
|
"g_bool"=>nil,
|
107
|
+
"g_nullbool"=>"",
|
108
|
+
"g_bool_def"=>nil,
|
109
|
+
"g_nbool_def"=>"False",
|
107
110
|
"g_range"=>nil,
|
108
111
|
"g_integer"=>nil,
|
112
|
+
"g_has_default"=>"string default",
|
109
113
|
"computed_guards"=>"",
|
110
114
|
"grids"=>"",
|
111
115
|
"results"=>"",
|
@@ -116,7 +120,10 @@ feature 'rule view', js: true do
|
|
116
120
|
"name"=>"abc",
|
117
121
|
"engine"=>"Gemini::MyRuleScriptSet",
|
118
122
|
"rule_type"=>"SimpleRule",
|
119
|
-
"simple_guards"=>{"
|
123
|
+
"simple_guards"=>{"g_bool"=>false,
|
124
|
+
"g_bool_def"=>false,
|
125
|
+
"g_nbool_def"=>false,
|
126
|
+
"g_has_default"=>
|
120
127
|
"string default"},
|
121
128
|
"computed_guards"=>{},
|
122
129
|
"grids"=>{},
|
@@ -125,14 +132,11 @@ feature 'rule view', js: true do
|
|
125
132
|
# type validation (string with values list)
|
126
133
|
mrv.select_row(1)
|
127
134
|
press("Edit")
|
128
|
-
fill_in(:g_string, with: "12345")
|
129
|
-
press("OK")
|
130
|
-
wait_for_ajax
|
131
|
-
expect(page).to have_content("Bad value '12345' for 'g_string'")
|
132
135
|
# type validation (range)
|
133
|
-
|
136
|
+
netzke_find("String list Guard", 'combobox').select_values("Hi Mom")
|
134
137
|
click_checkbox("Bool Guard")
|
135
138
|
click_checkbox("Other")
|
139
|
+
netzke_find("NullBool Guard", 'combobox').select_values("False")
|
136
140
|
netzke_find('Array Guard', 'combobox').select_values("G1V1,G1V3")
|
137
141
|
netzke_find('Single Guard', 'combobox').select_values("G2V2")
|
138
142
|
fill_in(:g_integer, with: 123)
|
@@ -144,6 +148,7 @@ feature 'rule view', js: true do
|
|
144
148
|
fill_in(:g_range, with: "<=100")
|
145
149
|
netzke_find('Grid1', 'combobox').select_values("DataGrid1")
|
146
150
|
netzke_find('Grid2', 'combobox').select_values("DataGrid2")
|
151
|
+
fill_in("Defaulted String", with: "12345")
|
147
152
|
press("OK")
|
148
153
|
wait_for_ajax
|
149
154
|
exp = {"name"=>"abc",
|
@@ -155,12 +160,16 @@ feature 'rule view', js: true do
|
|
155
160
|
"g_single"=>"G2V2",
|
156
161
|
"g_string"=>"Hi Mom",
|
157
162
|
"g_bool"=>true,
|
163
|
+
"g_nullbool"=>"False",
|
158
164
|
"g_range"=>"<=100",
|
159
165
|
"g_integer"=>123,
|
166
|
+
"g_has_default"=>"12345",
|
160
167
|
"computed_guards"=>"",
|
161
168
|
"grids"=>"{\"grid1\":\"DataGrid1\",\"grid2\":\"DataGrid2\"}",
|
162
169
|
"results"=>"",
|
163
170
|
}
|
171
|
+
r = Gemini::MyRule.lookup('infinity','abc')
|
172
|
+
expect(r.as_json["simple_guards"]["g_nullbool"]).to eq(false)
|
164
173
|
expect(mrv.get_row_vals(1)).to include(exp)
|
165
174
|
# grid edits
|
166
175
|
press("Edit")
|
@@ -169,6 +178,15 @@ feature 'rule view', js: true do
|
|
169
178
|
wait_for_ajax
|
170
179
|
expect(mrv.get_row_vals(1)).to include(exp+{"grids"=>
|
171
180
|
"{\"grid1\":\"DataGrid1\"}"})
|
181
|
+
press("Edit")
|
182
|
+
netzke_find("NullBool Guard", 'combobox').select_values("---")
|
183
|
+
press("OK")
|
184
|
+
wait_for_ajax
|
185
|
+
expect(mrv.get_row_vals(1)).to include(exp+{"g_nullbool"=>"",
|
186
|
+
"grids"=>
|
187
|
+
"{\"grid1\":\"DataGrid1\"}"})
|
188
|
+
r = Gemini::MyRule.lookup('infinity','abc')
|
189
|
+
expect(r.as_json["simple_guards"]).not_to include('g_nullbool')
|
172
190
|
# computed fields
|
173
191
|
press("Edit")
|
174
192
|
fill_in(:computed_guards, with: 'sadf asdf ljsf')
|
@@ -220,6 +238,7 @@ feature 'rule view', js: true do
|
|
220
238
|
press("OK")
|
221
239
|
r = Gemini::XyzRule.get_matches('infinity', {}, {"g_range1"=> 150,
|
222
240
|
"g_range2"=> 35})
|
241
|
+
|
223
242
|
expect(r.to_a.count).to eq(1)
|
224
243
|
exp = {"user_id"=>1,
|
225
244
|
"o_user_id"=>nil,
|
@@ -227,7 +246,8 @@ feature 'rule view', js: true do
|
|
227
246
|
"engine"=>"Gemini::XyzRuleScriptSet",
|
228
247
|
"rule_type"=>"ZRule",
|
229
248
|
"start_dt"=>DateTime.parse("2017-1-1 08:01:00"),
|
230
|
-
"simple_guards"=>{"
|
249
|
+
"simple_guards"=>{"g_bool"=>false,
|
250
|
+
"g_date"=>"2017-1-1",
|
231
251
|
"g_range1"=>"[100,200)",
|
232
252
|
"g_range2"=>"[30,40)",
|
233
253
|
"g_string"=>"aaa",
|
@@ -242,13 +262,13 @@ feature 'rule view', js: true do
|
|
242
262
|
expect(r.first.as_json).to include(exp)
|
243
263
|
expect(xrv.col_values(:g_string, 5, 0)).to eq(["aaa", "bbb", "ccc",
|
244
264
|
"ddd", "eee"])
|
245
|
-
click_column(xrv, "
|
265
|
+
click_column(xrv, "String list Guard")
|
246
266
|
expect(xrv.col_values(:g_string, 5, 0)).to eq(["eee", "ddd", "ccc",
|
247
267
|
"bbb", "aaa"])
|
248
|
-
column_filter(xrv, "
|
268
|
+
column_filter(xrv, "String list Guard", "eee")
|
249
269
|
rc = xrv.row_count
|
250
270
|
expect(xrv.col_values(:g_string,rc,0)).to eq(["eee"])
|
251
|
-
column_filter_toggle(xrv, "
|
271
|
+
column_filter_toggle(xrv, "String list Guard")
|
252
272
|
rc = xrv.row_count
|
253
273
|
expect(xrv.col_values(:g_string,rc,0)).to eq(["eee", "ddd", "ccc",
|
254
274
|
"bbb", "aaa"])
|
@@ -293,9 +313,9 @@ feature 'rule view', js: true do
|
|
293
313
|
go_to_my_rules
|
294
314
|
wait_for_ajax
|
295
315
|
|
296
|
-
names = mrv.col_values(:name,
|
297
|
-
gvs = mrv.col_values(:grids,
|
298
|
-
rvs = mrv.col_values(:results,
|
316
|
+
names = mrv.col_values(:name, 9, 0)
|
317
|
+
gvs = mrv.col_values(:grids, 9, 0)
|
318
|
+
rvs = mrv.col_values(:results, 9, 0)
|
299
319
|
expect(JSON.parse(gvs[names.index('abc')])).to eq(g1h)
|
300
320
|
expect(JSON.parse(gvs[names.index('Rule2b')])).to eq(g1h +
|
301
321
|
{"grid2"=>"DataGrid2"})
|
@@ -1,5 +1,5 @@
|
|
1
1
|
name,rule_type,start_dt,end_dt,other_flag,simple_guards,computed_guards,grids,results
|
2
|
-
Rule1,SimpleRule,2017-1-1 12:00:00,2017-4-1,,"{""g_has_default"":""different"",""g_array"":[""G1V1"",""G1V3""],""g_single"":""G2V2"",""g_string"":""Hi Mom"",""g_bool"":true,""g_range"":""[50,)"",""g_integer"":10}",,,"{""simple_result"":""\""a value\""""}"
|
2
|
+
Rule1,SimpleRule,2017-1-1 12:00:00,2017-4-1,,"{""g_has_default"":""different"",""g_array"":[""G1V1"",""G1V3""],""g_single"":""G2V2"",""g_string"":""Hi Mom"",""g_bool"":true,""g_bool_def"":false,""g_nbool_def"":true,""g_range"":""[50,)"",""g_integer"":10}",,,"{""simple_result"":""\""a value\""""}"
|
3
3
|
Rule2,SimpleRule,2017-2-1 14:00:00,2017-4-1,true,"{""g_array"":[""G1V2""],""g_single"":""G2V3"",""g_string"":""abc"",""g_bool"":true,""g_range"":""(,50]"",""g_integer"":11}",,,"{
|
4
4
|
""simple_result"":""\""b value\"" # with comment "",
|
5
5
|
""sr2"":""true # with comment"",
|
@@ -9,6 +9,7 @@ Rule2,SimpleRule,2017-2-1 14:00:00,2017-4-1,true,"{""g_array"":[""G1V2""],""g_si
|
|
9
9
|
""stringwithhash"": ""\"" string that contains a # character\""""}"
|
10
10
|
Rule2a,SimpleRule,2017-2-1 14:00:00,2017-4-1,true,"{""g_array"":[""G1V2""],""g_single"":""G2V3"",""g_string"":""abc"",""g_bool"":true,""g_range"":""(,50]"",""g_integer"":99}",,,"{""simple_result"":""\""b value\"""", ""sr2"":""true"", ""sr3"": ""123""}"
|
11
11
|
Rule2b,SimpleRule,2017-2-1 14:00:00,2017-4-1,true,"{""g_array"":[""G1V2""],""g_single"":""G2V3"",""g_string"":""abc"",""g_bool"":true,""g_range"":""(,50]"",""g_integer"":999}",,"{""grid1"":""DataGrid1"",""grid2"":""DataGrid2""}",
|
12
|
+
Rule2c,SimpleRule,2017-2-1 14:00:00,2017-4-1,true,"{""g_array"":[""G1V2""],""g_single"":""G2V3"",""g_string"":""abc"",""g_bool"":false,""g_range"":""(,50]"",""g_integer"":10}",,"{""grid1"":""DataGrid1"",""grid2"":""DataGrid2""}",
|
12
13
|
Rule3,ComplexRule,2017-3-1 00:00:00,2017-4-1,false,"{""g_array"":[""G1V2"",""G1V3""],""g_string"":""def"",""g_integer"":11}","{""cguard1"":""1==1"",""cguard2"":""param2 == 'abc'""}","{""grid1"":""DataGrid1"",""grid2"":""DataGrid2""}","{""simple_result"":""\""c value\"""",""computed_value"":""if paramb then param1 / (grid1_grid_result||1) else (grid2_grid_result||1) / param1""}"
|
13
14
|
Rule4,ComplexRule,2017-4-1 15:00:01,2017-5-1,,"{""g_array"":[""G1V2"",""G1V3""],""g_string"":""Hi Mom"",""g_integer"":11}","{""cguard1"":""1==1"",""cguard2"":""param2 == \""abc\""""}","{""grid1"":""DataGrid1"",""grid2"":""DataGrid2""}","{""computed_name_grid"":""\""DataGrid\""+\""X\"""", ""simple_result"":""computed_name_grid"",""grid_sum"":""computed_name_grid_result + (grid1_grid_result||0)+(grid2_grid_result||0)""}"
|
14
15
|
Rule5,ComplexRule,2017-4-2 15:00:01,2017-5-1,,"{""g_string"":""zzz"",""g_integer"":3757,""g_has_default"":""foo""}","{""cguard1"":""1==1""}",,"{""flavor"": ""[\""cherry\"",\""lemon\""][param2]"",""other_grid"": ""\""DataGrid4\"""",""final_value"": ""other_grid_result * 3""}"
|
data/spec/models/rule_spec.rb
CHANGED
@@ -33,7 +33,8 @@ module Marty::RuleSpec
|
|
33
33
|
guards = (@g_array ? {"g_array" =>@g_array} : {}) +
|
34
34
|
(@g_single ? {"g_single" =>@g_single} : {}) +
|
35
35
|
(@g_string ? {"g_string" =>@g_string} : {}) +
|
36
|
-
(@g_bool
|
36
|
+
(@g_bool.nil? ? {} : {"g_bool" => @g_bool}) +
|
37
|
+
(@g_nullbool.nil? ? {} : {"g_nullbool" => @g_nullbool}) +
|
37
38
|
(@g_range ? {"g_range" =>@g_range} : {}) +
|
38
39
|
(@g_integer ? {"g_integer" =>@g_integer} : {})
|
39
40
|
Gemini::MyRule.create!(name: "testrule",
|
@@ -116,6 +117,7 @@ module Marty::RuleSpec
|
|
116
117
|
["Rule2", "string default"],
|
117
118
|
["Rule2a", "string default"],
|
118
119
|
["Rule2b", "string default"],
|
120
|
+
["Rule2c", "string default"],
|
119
121
|
["Rule3", "string default"],
|
120
122
|
["Rule4", "string default"],
|
121
123
|
["Rule5", "foo"]].sort)
|
@@ -177,14 +179,22 @@ module Marty::RuleSpec
|
|
177
179
|
{'rule_type'=>'SimpleRule',
|
178
180
|
'other_flag'=>true},
|
179
181
|
{})
|
180
|
-
expect(lookup.to_a.count).to eq(
|
181
|
-
expect(lookup.map{|l|l.name}.to_set).to eq(Set["Rule2","Rule2a",
|
182
|
+
expect(lookup.to_a.count).to eq(4)
|
183
|
+
expect(lookup.map{|l|l.name}.to_set).to eq(Set["Rule2","Rule2a",
|
184
|
+
"Rule2b", "Rule2c"])
|
182
185
|
lookup = Gemini::MyRule.get_matches('infinity',
|
183
186
|
{'rule_type'=>'ComplexRule',
|
184
187
|
'other_flag'=>false},
|
185
188
|
{})
|
186
189
|
expect(lookup.to_a.count).to eq(1)
|
187
190
|
expect(lookup.first.name).to eq("Rule3")
|
191
|
+
# bool false matches bool nil
|
192
|
+
lookup = Gemini::MyRule.get_matches('infinity',
|
193
|
+
{'rule_type'=>'ComplexRule',
|
194
|
+
'other_flag'=>false},
|
195
|
+
{'g_bool'=>false})
|
196
|
+
expect(lookup.to_a.count).to eq(1)
|
197
|
+
expect(lookup.first.name).to eq("Rule3")
|
188
198
|
lookup = Gemini::MyRule.get_matches('infinity',
|
189
199
|
{'rule_type'=>'ComplexRule'},
|
190
200
|
{'g_string'=>'def'})
|
@@ -218,18 +228,19 @@ module Marty::RuleSpec
|
|
218
228
|
expect(lookup.first.name).to eq("Rule1")
|
219
229
|
lookup = Gemini::MyRule.get_matches('infinity',
|
220
230
|
{'rule_type'=>'SimpleRule'},
|
221
|
-
{'g_bool'=>false, "g_range"=>
|
231
|
+
{'g_bool'=>false, "g_range"=>25,
|
222
232
|
'g_integer'=>10})
|
223
|
-
expect(lookup).to eq(
|
233
|
+
expect(lookup.to_a.count).to eq(1)
|
234
|
+
expect(lookup.first.name).to eq("Rule2c")
|
224
235
|
lookup = Gemini::MyRule.get_matches('infinity',
|
225
236
|
{'rule_type'=>'SimpleRule'}, {})
|
226
|
-
expect(lookup.to_a.count).to eq(
|
237
|
+
expect(lookup.to_a.count).to eq(5)
|
227
238
|
lookup = Gemini::MyRule.get_matches('infinity',
|
228
239
|
{'rule_dt'=>"2017-3-1 02:00:00"},
|
229
240
|
{})
|
230
|
-
expect(lookup.to_a.count).to eq(
|
241
|
+
expect(lookup.to_a.count).to eq(6)
|
231
242
|
expect(lookup.pluck(:name).to_set).to eq(Set["Rule1", "Rule2", "Rule2a",
|
232
|
-
|
243
|
+
"Rule2b", "Rule2c", "Rule3"])
|
233
244
|
lookup = Gemini::MyRule.get_matches('infinity',
|
234
245
|
{'rule_dt'=>"2017-4-1 16:00:00"},
|
235
246
|
{})
|
@@ -241,6 +252,11 @@ module Marty::RuleSpec
|
|
241
252
|
lookup = Gemini::MyRule.get_matches('infinity',
|
242
253
|
{'rule_dt'=>"2017-5-1 00:00:01"}, {})
|
243
254
|
expect(lookup.to_a).to eq([])
|
255
|
+
lookup = Gemini::MyRule.get_matches('infinity', {},
|
256
|
+
{"g_bool_def"=>false,
|
257
|
+
"g_nbool_def"=>true})
|
258
|
+
expect(lookup.to_a.count).to eq(1)
|
259
|
+
expect(lookup.pluck(:name).first).to eq("Rule1")
|
244
260
|
end
|
245
261
|
end
|
246
262
|
context "rule compute" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arman Bostani
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2018-03-
|
17
|
+
date: 2018-03-09 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: pg
|