UNPKG

@apteco/ngth

Version:

ng-bullet successor to help speed up angular testing

69 lines 8.58 kB
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==