@apteco/ngth
Version:
ng-bullet successor to help speed up angular testing
109 lines (103 loc) • 3.19 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]);
}
};
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;
});
};
class ComponentFixtureWrapper {
constructor(fixture) {
this.fixture = fixture;
}
get component() {
return this.fixture.componentInstance;
}
get debugElement() {
return this.fixture.debugElement;
}
get element() {
return this.debugElement.nativeElement;
}
detectChanges() {
this.fixture.detectChanges();
}
}
const createComponent = (component) => {
return new ComponentFixtureWrapper(TestBed.createComponent(component));
};
const createStableComponent = async (component) => {
const fixtureWrapper = createComponent(component);
fixtureWrapper.detectChanges();
await fixtureWrapper.fixture.whenStable();
fixtureWrapper.detectChanges();
return fixtureWrapper;
};
/*
* Public API Surface of ngth
*/
/**
* Generated bundle index. Do not edit.
*/
export { ComponentFixtureWrapper, configureSuite, createComponent, createStableComponent };
//# sourceMappingURL=apteco-ngth.mjs.map