UNPKG

console-fail-test

Version:

Gently fails test runs if the console was used during them. 📢

1 lines • 2.96 kB
{"version":3,"sources":["../src/cft.ts"],"sourcesContent":["import { createComplaint } from \"./complaining/index.js\";\nimport { consoleMethodNames } from \"./console.js\";\nimport { setDefaults } from \"./defaults.js\";\nimport { selectTestFramework } from \"./environments/selectTestFramework.js\";\nimport { TestComplaint } from \"./environments/testEnvironmentTypes.js\";\nimport { selectSpyFactory } from \"./spies/selectSpyFactory.js\";\nimport { MethodSpy, SpyCallArgs } from \"./spies/spyTypes.js\";\nimport { CftRequest } from \"./types.js\";\n\nconst defaultReportComplaint = ({ error }: TestComplaint) => {\n\tthrow error;\n};\n\nexport const cft = (rawRequest?: Partial<CftRequest>) => {\n\tconst request = setDefaults(rawRequest);\n\tconst spyFactory = selectSpyFactory(request);\n\tconst testFramework = selectTestFramework(request);\n\tconst methodSpies: Record<string, MethodSpy> = {};\n\tconst relevantMethodNames = consoleMethodNames.filter(\n\t\t(name) => !request.console[name],\n\t);\n\n\t// Before each test, we spy on the console's methods\n\ttestFramework.beforeEach(() => {\n\t\tfor (const methodName of relevantMethodNames) {\n\t\t\tmethodSpies[methodName] = spyFactory(console, methodName);\n\t\t}\n\t});\n\n\t// After each test, we collect the spied method calls, reporting on any found\n\ttestFramework.afterEach(\n\t\t({ reportComplaint = defaultReportComplaint } = {}) => {\n\t\t\tconst methodsWithCalls: [keyof Console, SpyCallArgs[]][] = [];\n\n\t\t\tfor (const methodName of relevantMethodNames) {\n\t\t\t\tconst spy = methodSpies[methodName];\n\t\t\t\tconst methodCalls = spy.getCalls();\n\t\t\t\tconst filteredCalls =\n\t\t\t\t\ttestFramework.mapSpyCalls?.({ methodCalls, methodName }) ??\n\t\t\t\t\tmethodCalls;\n\n\t\t\t\tspy.restore();\n\n\t\t\t\tif (filteredCalls.length !== 0) {\n\t\t\t\t\tmethodsWithCalls.push([methodName, filteredCalls]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (methodsWithCalls.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treportComplaint(createComplaint(methodsWithCalls));\n\t\t},\n\t);\n};\n"],"mappings":"AAAA,SAAS,uBAAuB;AAChC,SAAS,0BAA0B;AACnC,SAAS,mBAAmB;AAC5B,SAAS,2BAA2B;AAEpC,SAAS,wBAAwB;AAIjC,MAAM,yBAAyB,CAAC,EAAE,MAAM,MAAqB;AAC5D,QAAM;AACP;AAEO,MAAM,MAAM,CAAC,eAAqC;AACxD,QAAM,UAAU,YAAY,UAAU;AACtC,QAAM,aAAa,iBAAiB,OAAO;AAC3C,QAAM,gBAAgB,oBAAoB,OAAO;AACjD,QAAM,cAAyC,CAAC;AAChD,QAAM,sBAAsB,mBAAmB;AAAA,IAC9C,CAAC,SAAS,CAAC,QAAQ,QAAQ,IAAI;AAAA,EAChC;AAGA,gBAAc,WAAW,MAAM;AAC9B,eAAW,cAAc,qBAAqB;AAC7C,kBAAY,UAAU,IAAI,WAAW,SAAS,UAAU;AAAA,IACzD;AAAA,EACD,CAAC;AAGD,gBAAc;AAAA,IACb,CAAC,EAAE,kBAAkB,uBAAuB,IAAI,CAAC,MAAM;AACtD,YAAM,mBAAqD,CAAC;AAE5D,iBAAW,cAAc,qBAAqB;AAC7C,cAAM,MAAM,YAAY,UAAU;AAClC,cAAM,cAAc,IAAI,SAAS;AACjC,cAAM,gBACL,cAAc,cAAc,EAAE,aAAa,WAAW,CAAC,KACvD;AAED,YAAI,QAAQ;AAEZ,YAAI,cAAc,WAAW,GAAG;AAC/B,2BAAiB,KAAK,CAAC,YAAY,aAAa,CAAC;AAAA,QAClD;AAAA,MACD;AAEA,UAAI,iBAAiB,WAAW,GAAG;AAClC;AAAA,MACD;AAEA,sBAAgB,gBAAgB,gBAAgB,CAAC;AAAA,IAClD;AAAA,EACD;AACD;","names":[]}