Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ValidDescribeCallbackRule = rule.Rule{ Name: "jest/valid-describe-callback", Run: func(ctx rule.RuleContext, options any) rule.RuleListeners { return rule.RuleListeners{ ast.KindCallExpression: func(node *ast.Node) { jestFnCall := utils.ParseJestFnCall(node, ctx) if jestFnCall == nil || jestFnCall.Kind != utils.JestFnTypeDescribe { return } argumentLength := len(node.AsCallExpression().Arguments.Nodes) switch argumentLength { case 0: ctx.ReportNode(node, buildErrorNameAndCallbackMessage()) case 1: ctx.ReportNode(node.AsCallExpression().Arguments.Nodes[0], buildErrorNameAndCallbackMessage()) default: switch node.AsCallExpression().Arguments.Nodes[1].Kind { case ast.KindArrowFunction: { arrowFuncExpression := node.AsCallExpression().Arguments.Nodes[1] if ast.IsAsyncFunction(arrowFuncExpression) { ctx.ReportNode(arrowFuncExpression, buildErrorNoAsyncDescribeCallbackMessage()) } arrowFn := arrowFuncExpression.AsArrowFunction() if !slices.Contains(jestFnCall.Members, "each") && len(arrowFn.Parameters.Nodes) > 0 { ctx.ReportNode(arrowFn.Parameters.Nodes[0], buildErrorUnexpectedDescribeArgumentMessage()) } body := arrowFn.Body if body != nil { if body.Kind == ast.KindBlock { if ret := findFirstReturnStatement(body.AsBlock().Statements.Nodes); ret != nil { ctx.ReportNode(ret, buildErrorUnexpectedReturnInDescribeMessage()) } } else { ctx.ReportNode(body, buildErrorUnexpectedReturnInDescribeMessage()) } } } case ast.KindFunctionExpression: { funcExpression := node.AsCallExpression().Arguments.Nodes[1] if ast.IsAsyncFunction(funcExpression) { ctx.ReportNode(funcExpression, buildErrorNoAsyncDescribeCallbackMessage()) } if !slices.Contains(jestFnCall.Members, "each") && len(funcExpression.AsFunctionExpression().Parameters.Nodes) > 0 { ctx.ReportNode(funcExpression.AsFunctionExpression().Parameters.Nodes[0], buildErrorUnexpectedDescribeArgumentMessage()) } body := funcExpression.AsFunctionExpression().Body if body != nil { returnStatement := findFirstReturnStatement(body.AsBlock().Statements.Nodes) if returnStatement != nil { ctx.ReportNode(returnStatement, buildErrorUnexpectedReturnInDescribeMessage()) } } } default: ctx.ReportNode(node.AsCallExpression().Arguments.Nodes[1], buildErrorSecondArgumentMustBeFunctionMessage()) } } }, } }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.