@suites/unit
Version:
<p align="center"> <img width="200" src="https://raw.githubusercontent.com/suites-dev/suites/master/logo.png" alt="Logo" /> </p>
80 lines (79 loc) • 3.85 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.testBedBuilderFactory = exports.SuitesDIAdapters = exports.SuitesDoublesAdapters = exports.AdapterNotFoundError = void 0;
const console = __importStar(require("console"));
const types_common_1 = require("@suites/types.common");
const core_unit_1 = require("@suites/core.unit");
const package_resolver_1 = require("./package-resolver");
class AdapterNotFoundError extends types_common_1.SuitesError {
constructor(message) {
super(types_common_1.SuitesErrorCode.ADAPTER_NOT_FOUND, 'No compatible adapter found', message);
this.name = 'AdapterNotFoundError';
}
}
exports.AdapterNotFoundError = AdapterNotFoundError;
exports.SuitesDoublesAdapters = {
jest: '@suites/doubles.jest',
sinon: '@suites/doubles.sinon',
vitest: '@suites/doubles.vitest',
bun: '@suites/doubles.bun',
deno: '@suites/doubles.deno',
node: '@suites/doubles.node',
};
exports.SuitesDIAdapters = {
nestjs: '@suites/di.nestjs',
inversify: '@suites/di.inversify',
tsyringe: '@suites/di.tsyringe',
};
function testBedBuilderFactory(diAdapters, doublesAdapters, targetClass) {
return {
create: (testbedBuilderType) => {
const diPackageResolver = new package_resolver_1.PackageResolver(diAdapters);
const diAdapter = diPackageResolver
.resolveCorrespondingAdapter()
.then((adapter) => adapter)
.catch(() => {
throw new AdapterNotFoundError(`It seems that there is an issue with the adapter package needed to integrate Suites
with your dependency injection framework. To resolve this issue, please install the
correct Suites adapter package that is compatible with your dependency injection framework.
For more details, refer to our docs website: https://suites.dev/docs`);
});
const doublesPackageResolver = new package_resolver_1.PackageResolver(doublesAdapters);
const doublesAdapter = doublesPackageResolver
.resolveCorrespondingAdapter()
.then((adapter) => adapter)
.catch(() => {
throw new AdapterNotFoundError(`It seems that there is an issue with the adapter package needed to integrate Suites
with your mocking library. To resolve this issue, please install the
correct Suites adapter package that is compatible with mocking library.
For more details, refer to our docs website: https://suites.dev/docs`);
});
const unitMocker = new core_unit_1.UnitMocker(doublesAdapter.then((adapter) => adapter.mock), diAdapter);
return new testbedBuilderType(doublesAdapter, unitMocker, targetClass, console);
},
};
}
exports.testBedBuilderFactory = testBedBuilderFactory;