eslint-plugin-sonarjs
Version:
27 lines (26 loc) • 1.27 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isTSAssertion = isTSAssertion;
const typescript_1 = __importDefault(require("typescript"));
const HTTP_TESTING_CONTROLLER_METHODS = new Set(['expectOne', 'expectNone', 'verify']);
const HTTP_TESTING_CONTROLLER_NAME = 'HttpTestingController';
const HTTP_TESTING_CONTROLLER_MODULE_PATH = '@angular/common/http/testing';
function isTSAssertion(services, node) {
if (!typescript_1.default.isCallExpression(node) || !typescript_1.default.isPropertyAccessExpression(node.expression)) {
return false;
}
if (!HTTP_TESTING_CONTROLLER_METHODS.has(node.expression.name.text)) {
return false;
}
const typeChecker = services.program.getTypeChecker();
const symbol = typeChecker.getTypeAtLocation(node.expression.expression).symbol;
return (symbol?.getName() === HTTP_TESTING_CONTROLLER_NAME &&
(symbol.declarations?.some(declaration => declaration
.getSourceFile()
.fileName.replaceAll('\\', '/')
.includes(HTTP_TESTING_CONTROLLER_MODULE_PATH)) ??
false));
}