package com.google.jstestdriver.idea.assertFramework.jasmine; import com.google.jstestdriver.idea.assertFramework.jasmine.jsSrc.JasmineAdapterSrcMarker; import com.google.jstestdriver.idea.assertFramework.support.AbstractAddAdapterSupportInspection; import com.google.jstestdriver.idea.util.JsPsiUtils; import com.google.jstestdriver.idea.util.VfsUtils; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.openapi.vfs.VirtualFile; import java.util.List; public class JasmineAdapterSupportProvider extends AbstractAddAdapterSupportInspection { @Override public String getAssertFrameworkName() { return "Jasmine"; } @Override public List<VirtualFile> getAdapterSourceFiles() { String[] relativePaths = new String[] {"jasmine.js", "JasmineAdapter.js"}; return VfsUtils.findVirtualFilesByResourceNames(JasmineAdapterSrcMarker.class, relativePaths); } @Override protected boolean isNeededSymbol(String methodName, JSExpression[] arguments) { return isJasmineSymbol(methodName, arguments); } private static boolean isJasmineSymbol(String referencedName, JSExpression[] arguments) { if (arguments.length == 0) { return false; } if ("describe".equals(referencedName) && JsPsiUtils.isStringElement(arguments[0])) { if (arguments.length == 2 && JsPsiUtils.isFunctionExpressionElement(arguments[1])) { return true; } } if ("it".equals(referencedName) && JsPsiUtils.isStringElement(arguments[0])) { if (arguments.length == 2 && JsPsiUtils.isFunctionExpressionElement(arguments[1])) { return true; } } return false; } }