lion/packages-node/providence-analytics/test-helpers/setup-analyzer-test.js
2023-11-08 19:01:20 +01:00

50 lines
1.6 KiB
JavaScript

const { InputDataService } = require('../src/program/core/InputDataService.js');
const { QueryService } = require('../src/program/core/QueryService.js');
const { restoreMockedProjects } = require('./mock-project-helpers.js');
const { mockWriteToJson, restoreWriteToJson } = require('./mock-report-service-helpers.js');
const {
suppressNonCriticalLogs,
restoreSuppressNonCriticalLogs,
} = require('./mock-log-service-helpers.js');
const { memoizeConfig } = require('../src/program/utils/memoize.js');
/**
* @typedef {import('../src/program/types/core').QueryResult} QueryResult
* @returns {QueryResult[]}
*/
function setupAnalyzerTest() {
/** @type {QueryResult[]} */
const queryResults = [];
const originalReferenceProjectPaths = InputDataService.referenceProjectPaths;
const cacheDisabledQInitialValue = QueryService.cacheDisabled;
const cacheDisabledIInitialValue = memoizeConfig.isCacheDisabled;
before(() => {
QueryService.cacheDisabled = true;
memoizeConfig.isCacheDisabled = true;
suppressNonCriticalLogs();
});
after(() => {
QueryService.cacheDisabled = cacheDisabledQInitialValue;
memoizeConfig.isCacheDisabled = cacheDisabledIInitialValue;
restoreSuppressNonCriticalLogs();
});
beforeEach(() => {
InputDataService.referenceProjectPaths = [];
mockWriteToJson(queryResults);
});
afterEach(() => {
InputDataService.referenceProjectPaths = originalReferenceProjectPaths;
restoreWriteToJson(queryResults);
restoreMockedProjects();
});
return queryResults;
}
module.exports = { setupAnalyzerTest };