shallow-render
Version:
Shallow rendering test utility for Angular
72 lines • 3.26 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.InvalidModuleError = void 0;
exports.mockModule = mockModule;
const core_1 = require("@angular/core");
const get_ng_module_annotations_1 = require("./get-ng-module-annotations");
const mock_provider_1 = require("./mock-provider");
const ng_mock_1 = require("./ng-mock");
const type_checkers_1 = require("./type-checkers");
const custom_error_1 = require("../models/custom-error");
const mock_of_directive_1 = require("./mock-of.directive");
class InvalidModuleError extends custom_error_1.CustomError {
constructor(mod) {
super(`Don't know how to mock module: ${mod}`);
}
}
exports.InvalidModuleError = InvalidModuleError;
const collapseModuleWithProviders = (mod) => {
if (Array.isArray(mod)) {
return mod.map(collapseModuleWithProviders);
}
else if ((0, type_checkers_1.isModuleWithProviders)(mod)) {
return collapseModuleWithProviders(mod.ngModule);
}
return mod;
};
function mockModule(mod, setup) {
const cached = setup.mockCache.find(mod);
if (cached) {
return cached;
}
const replacementModule = setup.moduleReplacements.get(mod) || setup.moduleReplacements.get(mod.ngModule);
if (replacementModule) {
return setup.mockCache.add(mod, replacementModule);
}
if (Array.isArray(mod)) {
return setup.mockCache.add(mod, mod.map(i => mockModule(i, setup))); // Recursion
}
else if ((0, type_checkers_1.isModuleWithProviders)(mod)) {
// If we have a moduleWithProviders, make sure we return the same
return {
ngModule: mockModule(mod.ngModule, setup), // Recursion
providers: mod.providers && mod.providers.map(p => (0, mock_provider_1.mockProvider)(p, setup)),
};
}
else if (typeof mod !== 'function') {
throw new InvalidModuleError(mod);
}
const modClass = mod;
const { imports, declarations, exports, providers, schemas } = (0, get_ng_module_annotations_1.getNgModuleAnnotations)(modClass);
const mockedModule = {
imports: (0, ng_mock_1.ngMock)(imports, setup),
declarations: (0, ng_mock_1.ngMock)(declarations, setup),
exports: collapseModuleWithProviders((0, ng_mock_1.ngMock)(exports, setup)),
providers: providers.map(p => (0, mock_provider_1.mockProvider)(p, setup)),
schemas,
};
let MockModule = class MockModule {
};
MockModule = __decorate([
(0, mock_of_directive_1.MockOf)(modClass),
(0, core_1.NgModule)(mockedModule)
], MockModule);
return setup.mockCache.add(mod, MockModule);
}
//# sourceMappingURL=mock-module.js.map