@apteco/ngth
Version:
ng-bullet successor to help speed up angular testing
69 lines • 8.58 kB
JavaScript
import { getTestBed, TestBed, } from '@angular/core/testing';
const resetProviders = (moduleDef) => {
if (!moduleDef) {
return;
}
if (!moduleDef.providers) {
return;
}
moduleDef.providers.forEach((provider) => {
if (!provider || !provider.useValue) {
return;
}
const instance = provider.useValue;
if (instance && instance.resetProvider) {
instance.resetProvider();
}
Object.keys(instance).forEach((property) => {
if (instance[property] &&
instance[property].calls &&
instance[property].calls.reset) {
instance[property].calls.reset();
}
});
});
};
const cleanUpStyles = () => {
const head = document.getElementsByTagName('head')[0];
const styles = head.getElementsByTagName('style');
for (let i = 0; i < styles.length; i++) {
head.removeChild(styles[i]);
}
};
export const configureSuite = (configure) => {
const testBed = getTestBed();
const originalResetTestModule = TestBed.resetTestingModule;
const originalConfigureTestingModule = TestBed.configureTestingModule;
let moduleMetadata;
beforeAll(() => {
TestBed.resetTestingModule();
TestBed.resetTestingModule = () => TestBed;
TestBed.configureTestingModule = (moduleDef) => {
moduleMetadata = moduleDef;
return originalConfigureTestingModule(moduleMetadata);
};
});
if (configure) {
beforeAll((done) => (async () => {
configure();
await TestBed.compileComponents();
})()
.then(done)
.catch(done.fail));
}
afterEach(() => {
testBed['_activeFixtures'].forEach((fixture) => {
fixture.destroy();
});
testBed['_instantiated'] = false;
testBed['_testModuleRef'] = null;
resetProviders(moduleMetadata);
});
afterAll(() => {
cleanUpStyles();
TestBed.resetTestingModule = originalResetTestModule;
TestBed.resetTestingModule();
TestBed.configureTestingModule = originalConfigureTestingModule;
});
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdGVzdC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3RoL3NyYy9saWIvbmctdGVzdC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFVBQVUsRUFDVixPQUFPLEdBRVIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixNQUFNLGNBQWMsR0FBRyxDQUFDLFNBQThCLEVBQUUsRUFBRTtJQUN4RCxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ2QsT0FBTztLQUNSO0lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7UUFDeEIsT0FBTztLQUNSO0lBRUQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUN2QyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUNuQyxPQUFPO1NBQ1I7UUFDRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDdEMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN6QyxJQUNFLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xCLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLO2dCQUN4QixRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFDOUI7Z0JBQ0EsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNsQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDekIsTUFBTSxJQUFJLEdBQW9CLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxNQUFNLE1BQU0sR0FFSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM3QjtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFNBQXNCLEVBQUUsRUFBRTtJQUN2RCxNQUFNLE9BQU8sR0FBWSxVQUFVLEVBQUUsQ0FBQztJQUN0QyxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztJQUMzRCxNQUFNLDhCQUE4QixHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztJQUN0RSxJQUFJLGNBQThDLENBQUM7SUFFbkQsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDM0MsT0FBTyxDQUFDLHNCQUFzQixHQUFHLENBQUMsU0FBNkIsRUFBRSxFQUFFO1lBQ2pFLGNBQWMsR0FBRyxTQUFTLENBQUM7WUFDM0IsT0FBTyw4QkFBOEIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksU0FBUyxFQUFFO1FBQ2IsU0FBUyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDekIsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNWLFNBQVMsRUFBRSxDQUFDO1lBQ1osTUFBTSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsRUFBRTthQUNELElBQUksQ0FBQyxJQUFJLENBQUM7YUFDVixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNwQixDQUFDO0tBQ0g7SUFFRCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBOEIsRUFBRSxFQUFFO1lBQ3BFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDakMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDWixhQUFhLEVBQUUsQ0FBQztRQUNoQixPQUFPLENBQUMsa0JBQWtCLEdBQUcsdUJBQXVCLENBQUM7UUFDckQsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLHNCQUFzQixHQUFHLDhCQUE4QixDQUFDO0lBQ2xFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50Rml4dHVyZSxcbiAgZ2V0VGVzdEJlZCxcbiAgVGVzdEJlZCxcbiAgVGVzdE1vZHVsZU1ldGFkYXRhLFxufSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuXG5jb25zdCByZXNldFByb3ZpZGVycyA9IChtb2R1bGVEZWY/OiBUZXN0TW9kdWxlTWV0YWRhdGEpID0+IHtcbiAgaWYgKCFtb2R1bGVEZWYpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFtb2R1bGVEZWYucHJvdmlkZXJzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbW9kdWxlRGVmLnByb3ZpZGVycy5mb3JFYWNoKChwcm92aWRlcikgPT4ge1xuICAgIGlmICghcHJvdmlkZXIgfHwgIXByb3ZpZGVyLnVzZVZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluc3RhbmNlID0gcHJvdmlkZXIudXNlVmFsdWU7XG4gICAgaWYgKGluc3RhbmNlICYmIGluc3RhbmNlLnJlc2V0UHJvdmlkZXIpIHtcbiAgICAgIGluc3RhbmNlLnJlc2V0UHJvdmlkZXIoKTtcbiAgICB9XG4gICAgT2JqZWN0LmtleXMoaW5zdGFuY2UpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGluc3RhbmNlW3Byb3BlcnR5XSAmJlxuICAgICAgICBpbnN0YW5jZVtwcm9wZXJ0eV0uY2FsbHMgJiZcbiAgICAgICAgaW5zdGFuY2VbcHJvcGVydHldLmNhbGxzLnJlc2V0XG4gICAgICApIHtcbiAgICAgICAgaW5zdGFuY2VbcHJvcGVydHldLmNhbGxzLnJlc2V0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufTtcblxuY29uc3QgY2xlYW5VcFN0eWxlcyA9ICgpID0+IHtcbiAgY29uc3QgaGVhZDogSFRNTEhlYWRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgY29uc3Qgc3R5bGVzOlxuICAgIHwgSFRNTENvbGxlY3Rpb25PZjxIVE1MU3R5bGVFbGVtZW50PlxuICAgIHwgW10gPSBoZWFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGhlYWQucmVtb3ZlQ2hpbGQoc3R5bGVzW2ldKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvbmZpZ3VyZVN1aXRlID0gKGNvbmZpZ3VyZT86ICgpID0+IHZvaWQpID0+IHtcbiAgY29uc3QgdGVzdEJlZDogVGVzdEJlZCA9IGdldFRlc3RCZWQoKTtcbiAgY29uc3Qgb3JpZ2luYWxSZXNldFRlc3RNb2R1bGUgPSBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZTtcbiAgY29uc3Qgb3JpZ2luYWxDb25maWd1cmVUZXN0aW5nTW9kdWxlID0gVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlO1xuICBsZXQgbW9kdWxlTWV0YWRhdGE6IFRlc3RNb2R1bGVNZXRhZGF0YSB8IHVuZGVmaW5lZDtcblxuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlKCk7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUgPSAoKSA9PiBUZXN0QmVkO1xuICAgIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSA9IChtb2R1bGVEZWY6IFRlc3RNb2R1bGVNZXRhZGF0YSkgPT4ge1xuICAgICAgbW9kdWxlTWV0YWRhdGEgPSBtb2R1bGVEZWY7XG4gICAgICByZXR1cm4gb3JpZ2luYWxDb25maWd1cmVUZXN0aW5nTW9kdWxlKG1vZHVsZU1ldGFkYXRhKTtcbiAgICB9O1xuICB9KTtcblxuICBpZiAoY29uZmlndXJlKSB7XG4gICAgYmVmb3JlQWxsKChkb25lOiBEb25lRm4pID0+XG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25maWd1cmUoKTtcbiAgICAgICAgYXdhaXQgVGVzdEJlZC5jb21waWxlQ29tcG9uZW50cygpO1xuICAgICAgfSkoKVxuICAgICAgICAudGhlbihkb25lKVxuICAgICAgICAuY2F0Y2goZG9uZS5mYWlsKVxuICAgICk7XG4gIH1cblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIHRlc3RCZWRbJ19hY3RpdmVGaXh0dXJlcyddLmZvckVhY2goKGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55PikgPT4ge1xuICAgICAgZml4dHVyZS5kZXN0cm95KCk7XG4gICAgfSk7XG4gICAgdGVzdEJlZFsnX2luc3RhbnRpYXRlZCddID0gZmFsc2U7XG4gICAgdGVzdEJlZFsnX3Rlc3RNb2R1bGVSZWYnXSA9IG51bGw7XG4gICAgcmVzZXRQcm92aWRlcnMobW9kdWxlTWV0YWRhdGEpO1xuICB9KTtcblxuICBhZnRlckFsbCgoKSA9PiB7XG4gICAgY2xlYW5VcFN0eWxlcygpO1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gb3JpZ2luYWxSZXNldFRlc3RNb2R1bGU7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUoKTtcbiAgICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUgPSBvcmlnaW5hbENvbmZpZ3VyZVRlc3RpbmdNb2R1bGU7XG4gIH0pO1xufTtcbiJdfQ==