UNPKG

eslint-plugin-sonarjs

Version:
47 lines (46 loc) 2.03 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Supertest = void 0; const index_js_1 = require("./index.js"); const typescript_1 = __importDefault(require("typescript")); var Supertest; (function (Supertest) { function isImported(context) { return ((0, index_js_1.getRequireCalls)(context).some(r => r.arguments[0].type === 'Literal' && r.arguments[0].value === 'supertest') || (0, index_js_1.getImportDeclarations)(context).some(i => i.source.value === 'supertest')); } Supertest.isImported = isImported; function isAssertion(context, node) { const fqn = extractFQNForCallExpression(context, node); return isFQNAssertion(fqn); } Supertest.isAssertion = isAssertion; function isTSAssertion(services, node) { if (node.kind !== typescript_1.default.SyntaxKind.CallExpression) { return false; } const fqn = (0, index_js_1.getFullyQualifiedNameTS)(services, node); return isFQNAssertion(fqn); } Supertest.isTSAssertion = isTSAssertion; function isFQNAssertion(fqn) { if (!fqn) { return false; } const names = fqn.split('.'); /** * supertest assertions look like `[supertest instance](...).[HTTP verb](...).expect(...)`, typically: * `supertest(application).get('/foo').expect(200)` * hence only the first and third values matter, the second one being an HTTP verb irrelevant for assertion detection */ return names.length >= 3 && names[0] === 'supertest' && names[2] === 'expect'; } function extractFQNForCallExpression(context, node) { if (node.type !== 'CallExpression') { return undefined; } return (0, index_js_1.getFullyQualifiedName)(context, node); } })(Supertest || (exports.Supertest = Supertest = {}));