marty 1.2.8 → 1.2.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2610538f904b7fcf434d0543e100dbd861578723
4
- data.tar.gz: 412cabe5e809b1c7bb44ffcb272bb4f0b6664b9d
3
+ metadata.gz: 6f9329ef429a6180b90811a7f0f438395a06a51f
4
+ data.tar.gz: 53eb8d02f9e32fb11f44f8a091a037d7758349b5
5
5
  SHA512:
6
- metadata.gz: 221af9e171749a9f470c5ecda41782a416fb76797887d04a6951a88ced0f32259fd865605f54be701df7b56007d97badc12687167234e857de88e6e0591b2939
7
- data.tar.gz: 4ffdd8ba934c805e0e663829bd083854a8e93ad6fe94cf6524a85e28057d251183cc4bee0c6b2032a4878173a49c4bfe97b948d1d58e04b856afda4af4127091
6
+ metadata.gz: cb21b47adbdc2a81981d9b1334e6e1e9ab93d989bcaa51c166ed20e99b2b9ead53d0725497fd5e43879d99029255ecfd189adadf0a69367061610a9e426fc675
7
+ data.tar.gz: 738b139779f6d7a000b210b998a2c485fda2d47ffee0d9e463678fa41498290ccb8662d8af54b9c3b18c7c43ac52fef0e9464ff6de0819ac0c940b6466121629
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- marty (1.2.8)
4
+ marty (1.2.9)
5
5
  axlsx (= 3.0.0pre)
6
6
  coderay
7
7
  delorean_lang (~> 0.3.33)
@@ -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 { |r| r.send(j)[c]||"" }
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, v|
112
- v.blank? || v == '---' ? r.send(j).delete(c) : r.send(j)[c] = 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 h[:type]
218
- when :datetime; c.format = 'Y-m-d H:i'
219
- when :date; c.format = 'Y-m-d'
220
- else c.type = h[:type] || :string
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, h[:enum])
239
+ enum_array(c, vals)
226
240
  else
227
- enum_column(c, h[:enum])
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::DeloreanRuleView.jsonb_field_getter(meth, namestr)
234
- c.setter = Marty::DeloreanRuleView.jsonb_field_setter(meth, namestr)
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, klass)
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: klass::VALUES + ['---'],
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[:default].blank? || self.simple_guards.include?(k)
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
- # print q.to_sql
111
+ #print q.to_sql
112
112
  q.order(:name)
113
113
  end
114
114
 
@@ -1,3 +1,3 @@
1
1
  module Marty
2
- VERSION = "1.2.8"
2
+ VERSION = "1.2.9"
3
3
  end
@@ -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'
@@ -27,7 +27,8 @@ class Gemini::XyzRule < Marty::DeloreanRule
27
27
  "g_string" => { type: :string,
28
28
  width: 100},
29
29
  "g_bool" => { type: :boolean,
30
- width: 100},
30
+ width: 100,
31
+ null: false},
31
32
  "g_range1" => { type: :range,
32
33
  width: 100},
33
34
  "g_range2" => { type: :range,
@@ -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"
@@ -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(8)
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"=>{"g_has_default"=>
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
- fill_in(:g_string, with: "Hi Mom")
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"=>{"g_date"=>"2017-1-1",
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, "G string")
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, "G string", "eee")
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, "G string")
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, 8, 0)
297
- gvs = mrv.col_values(:grids, 8, 0)
298
- rvs = mrv.col_values(:results, 8, 0)
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""}"
@@ -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 ? {"g_bool" =>@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(3)
181
- expect(lookup.map{|l|l.name}.to_set).to eq(Set["Rule2","Rule2a","Rule2b"])
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"=>75,
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(4)
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(5)
241
+ expect(lookup.to_a.count).to eq(6)
231
242
  expect(lookup.pluck(:name).to_set).to eq(Set["Rule1", "Rule2", "Rule2a",
232
- "Rule2b", "Rule3"])
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.8
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-01 00:00:00.000000000 Z
17
+ date: 2018-03-09 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: pg