@Override protected boolean isSuitableElement( @NotNull JSFile jsFile, @NotNull JSCallExpression callExpression) { JstdTestFileStructure structure = JstdTestFileStructureBuilder.getInstance().fetchCachedTestFileStructure(jsFile); String name = structure.getNameByPsiElement(callExpression.getMethodExpression()); return name != null; }
@NotNull @Override public JstdTestFileStructure buildTestFileStructure(@NotNull JSFile jsFile) { JstdTestFileStructure jsTestFileStructure = new JstdTestFileStructure(jsFile); List<JSStatement> statements = JsPsiUtils.listStatementsInExecutionOrder(jsFile); for (JSStatement statement : statements) { fillJsTestFileStructure(jsTestFileStructure, statement); } jsTestFileStructure.postProcess(); return jsTestFileStructure; }
@Nullable private static JstdTestCaseStructure createTestCaseStructure( @NotNull JstdTestFileStructure jsTestFileStructure, @NotNull JSCallExpression testCaseCallExpression) { JSReferenceExpression referenceExpression = ObjectUtils.tryCast( testCaseCallExpression.getMethodExpression(), JSReferenceExpression.class); if (referenceExpression != null) { String referenceName = referenceExpression.getReferencedName(); if (TEST_CASE_NAME.equals(referenceName) || ASYNC_TEST_CASE_NAME.equals(referenceName)) { JSExpression[] arguments = JsPsiUtils.getArguments(testCaseCallExpression); if (arguments.length >= 1) { String testCaseName = JsPsiUtils.extractStringValue(arguments[0]); if (testCaseName != null) { JSObjectLiteralExpression testsObjectLiteral = null; if (arguments.length >= 2) { testsObjectLiteral = JsPsiUtils.extractObjectLiteralExpression(arguments[1]); } JstdTestCaseStructure testCaseStructure = new JstdTestCaseStructure( jsTestFileStructure, testCaseName, testCaseCallExpression, testsObjectLiteral); jsTestFileStructure.addTestCaseStructure(testCaseStructure); if (testsObjectLiteral != null) { fillTestCaseStructureByObjectLiteral(testCaseStructure, testsObjectLiteral); } return testCaseStructure; } } } } return null; }