@@ -100,7 +100,7 @@ fn test_raw_switch_rule_basic() {
100
100
assert_eq ! ( rule. operator, SwitchRuleOperator :: Equal ) ;
101
101
assert_eq ! ( rule. value, Some ( Variant :: String ( "Hello" . to_string( ) ) ) ) ;
102
102
assert_eq ! ( rule. value_type, Some ( SwitchPropertyType :: Str ) ) ;
103
- assert_eq ! ( rule. value2, None ) ;
103
+ assert_eq ! ( rule. value2, Variant :: Null ) ;
104
104
assert_eq ! ( rule. value2_type, None ) ;
105
105
assert ! ( !rule. regex_case) ;
106
106
}
@@ -120,7 +120,7 @@ fn test_raw_switch_rule_between() {
120
120
assert_eq ! ( rule. operator, SwitchRuleOperator :: Between ) ;
121
121
assert_eq ! ( rule. value, Some ( Variant :: Number ( serde_json:: Number :: from( 3 ) ) ) ) ;
122
122
assert_eq ! ( rule. value_type, Some ( SwitchPropertyType :: Num ) ) ;
123
- assert_eq ! ( rule. value2, Some ( Variant :: Number ( serde_json:: Number :: from( 5 ) ) ) ) ;
123
+ assert_eq ! ( rule. value2, Variant :: Number ( serde_json:: Number :: from( 5 ) ) ) ;
124
124
assert_eq ! ( rule. value2_type, Some ( SwitchPropertyType :: Num ) ) ;
125
125
}
126
126
@@ -378,7 +378,7 @@ fn test_switch_node_evaluate_rules_between_with_prev() {
378
378
assert_eq ! ( rules[ 0 ] . operator, SwitchRuleOperator :: Between ) ;
379
379
assert_eq ! ( rules[ 0 ] . value_type, SwitchPropertyType :: Num ) ;
380
380
assert_eq ! ( rules[ 0 ] . value2_type, Some ( SwitchPropertyType :: Prev ) ) ;
381
- assert_eq ! ( rules[ 0 ] . value2, Some ( RedPropertyValue :: null( ) ) ) ;
381
+ assert_eq ! ( rules[ 0 ] . value2, RedPropertyValue :: null( ) ) ;
382
382
}
383
383
384
384
#[ test]
@@ -508,7 +508,7 @@ fn test_raw_switch_rule_minimal() {
508
508
assert_eq ! ( rule. operator, SwitchRuleOperator :: IsNull ) ;
509
509
assert_eq ! ( rule. value, None ) ;
510
510
assert_eq ! ( rule. value_type, None ) ;
511
- assert_eq ! ( rule. value2, None ) ;
511
+ assert_eq ! ( rule. value2, Variant :: Null ) ;
512
512
assert_eq ! ( rule. value2_type, None ) ;
513
513
assert ! ( !rule. regex_case) ;
514
514
}
@@ -622,3 +622,23 @@ async fn test_it_should_check_input_against_a_previous_value_2nd_option() {
622
622
assert_eq ! ( msgs[ 0 ] [ "payload" ] , 20 . into( ) ) ;
623
623
assert_eq ! ( msgs[ 1 ] [ "payload" ] , 25 . into( ) ) ;
624
624
}
625
+
626
+ #[ tokio:: test( flavor = "multi_thread" , worker_threads = 4 ) ]
627
+ async fn test_should_check_if_input_is_indeed_false ( ) {
628
+ let flows_json = json ! ( [
629
+ { "id" : "100" , "type" : "tab" } ,
630
+ { "id" : "1" , "z" : "100" , "type" : "switch" , "name" : "switchNode" , "property" : "payload" ,
631
+ "rules" : [ { "t" : false } ] , "checkall" : true , "outputs" : 1 , "wires" : [ [ "2" ] ] } ,
632
+ { "id" : "2" , "z" : "100" , "type" : "test-once" }
633
+ ] ) ;
634
+ let msgs_to_inject_json = json ! ( [
635
+ [ "1" , { "payload" : false } ] ,
636
+ ] ) ;
637
+
638
+ let engine = crate :: runtime:: engine:: build_test_engine ( flows_json) . unwrap ( ) ;
639
+ let msgs_to_inject = Vec :: < ( ElementId , Msg ) > :: deserialize ( msgs_to_inject_json) . unwrap ( ) ;
640
+ let msgs = engine. run_once_with_inject ( 1 , std:: time:: Duration :: from_secs_f64 ( 0.5 ) , msgs_to_inject) . await . unwrap ( ) ;
641
+
642
+ assert_eq ! ( msgs. len( ) , 1 ) ;
643
+ assert_eq ! ( msgs[ 0 ] [ "payload" ] , false . into( ) ) ;
644
+ }
0 commit comments