Skip to content

Commit 07a388c

Browse files
committed
fix unit tests
1 parent d273cbb commit 07a388c

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

example/reference/connector.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -1338,7 +1338,12 @@ func evalExpression(
13381338
root map[string]any,
13391339
item map[string]any,
13401340
) (bool, error) {
1341-
switch expression := expr.Interface().(type) {
1341+
exprT, err := expr.InterfaceT()
1342+
if err != nil {
1343+
return false, err
1344+
}
1345+
1346+
switch expression := exprT.(type) {
13421347
case *schema.ExpressionAnd:
13431348
for _, exp := range expression.Expressions {
13441349
ok, err := evalExpression(collectionRelationships, variables, state, exp, root, item)

schema/extend.go

+17-4
Original file line numberDiff line numberDiff line change
@@ -1654,7 +1654,7 @@ func (j *Expression) FromValue(input map[string]any) error {
16541654
return fmt.Errorf("field expressions in Expression: expected array, got %v", rawExpressions)
16551655
}
16561656

1657-
var expressions []Expression
1657+
expressions := []Expression{}
16581658
for i, rawItem := range rawExpressionsArray {
16591659
if rawItem == nil {
16601660
continue
@@ -1814,7 +1814,9 @@ func (j Expression) AsAnd() (*ExpressionAnd, error) {
18141814
}
18151815
expressions, ok := rawExpressions.([]Expression)
18161816
if !ok {
1817-
return nil, fmt.Errorf("invalid ExpressionAnd.expression type; expected: []Expression, got: %+v", rawExpressions)
1817+
if err := mapstructure.Decode(rawExpressions, &expressions); err != nil {
1818+
return nil, fmt.Errorf("invalid ExpressionAnd.expression type; expected: []Expression, got: %v", rawExpressions)
1819+
}
18181820
}
18191821

18201822
return &ExpressionAnd{
@@ -1829,6 +1831,7 @@ func (j Expression) AsOr() (*ExpressionOr, error) {
18291831
if err != nil {
18301832
return nil, err
18311833
}
1834+
18321835
if t != ExpressionTypeOr {
18331836
return nil, fmt.Errorf("invalid Expression type; expected: %s, got: %s", ExpressionTypeOr, t)
18341837
}
@@ -1837,9 +1840,12 @@ func (j Expression) AsOr() (*ExpressionOr, error) {
18371840
if !ok {
18381841
return nil, errors.New("ExpressionOr.expression is required")
18391842
}
1843+
18401844
expressions, ok := rawExpressions.([]Expression)
18411845
if !ok {
1842-
return nil, fmt.Errorf("invalid ExpressionOr.expression type; expected: []Expression, got: %+v", rawExpressions)
1846+
if err := mapstructure.Decode(rawExpressions, &expressions); err != nil {
1847+
return nil, fmt.Errorf("invalid ExpressionOr.expression type; expected: []Expression, got: %v", rawExpressions)
1848+
}
18431849
}
18441850

18451851
return &ExpressionOr{
@@ -1862,9 +1868,12 @@ func (j Expression) AsNot() (*ExpressionNot, error) {
18621868
if !ok {
18631869
return nil, errors.New("ExpressionNot.expression is required")
18641870
}
1871+
18651872
expression, ok := rawExpression.(Expression)
18661873
if !ok {
1867-
return nil, fmt.Errorf("invalid ExpressionNot.expression type; expected: Expression, got: %+v", rawExpression)
1874+
if err := mapstructure.Decode(rawExpression, &expression); err != nil {
1875+
return nil, fmt.Errorf("invalid ExpressionNot.expression type; expected: Expression, got: %+v", rawExpression)
1876+
}
18681877
}
18691878

18701879
return &ExpressionNot{
@@ -1879,6 +1888,7 @@ func (j Expression) AsUnaryComparisonOperator() (*ExpressionUnaryComparisonOpera
18791888
if err != nil {
18801889
return nil, err
18811890
}
1891+
18821892
if t != ExpressionTypeUnaryComparisonOperator {
18831893
return nil, fmt.Errorf("invalid Expression type; expected: %s, got: %s", ExpressionTypeUnaryComparisonOperator, t)
18841894
}
@@ -1887,6 +1897,7 @@ func (j Expression) AsUnaryComparisonOperator() (*ExpressionUnaryComparisonOpera
18871897
if !ok {
18881898
return nil, errors.New("ExpressionUnaryComparisonOperator.operator is required")
18891899
}
1900+
18901901
operator, ok := rawOperator.(UnaryComparisonOperator)
18911902
if !ok {
18921903
operatorStr, ok := rawOperator.(string)
@@ -1901,6 +1912,7 @@ func (j Expression) AsUnaryComparisonOperator() (*ExpressionUnaryComparisonOpera
19011912
if !ok {
19021913
return nil, errors.New("ExpressionUnaryComparisonOperator.column is required")
19031914
}
1915+
19041916
column, ok := rawColumn.(ComparisonTarget)
19051917
if !ok {
19061918
return nil, fmt.Errorf("invalid ExpressionUnaryComparisonOperator.column type; expected: ComparisonTarget, got: %v", rawColumn)
@@ -2000,6 +2012,7 @@ func (j Expression) InterfaceT() (ExpressionEncoder, error) {
20002012
if err != nil {
20012013
return nil, err
20022014
}
2015+
20032016
switch t {
20042017
case ExpressionTypeAnd:
20052018
return j.AsAnd()

0 commit comments

Comments
 (0)