From 1e47520bcf7b48db707d6af2b11eac9857ed601e Mon Sep 17 00:00:00 2001 From: Aaron Steinfeld Date: Sun, 6 Dec 2020 09:04:56 -0500 Subject: [PATCH] test: update tests to support more recent style --- .vscode/launch.json | 2 +- angular.json | 4 +- jest.config.debug.js | 11 +++ jest.config.js | 5 -- .../hyperdash-angular/jest.config.debug.js | 11 --- .../default-configuration.service.test.ts | 24 +++--- .../model-json-editor.component.test.ts | 4 +- .../model/model-editor.component.test.ts | 4 +- .../injectable-wrappers.test.ts | 80 +++++++++---------- .../model-event-installer.service.test.ts | 4 +- .../src/module/dashboard-core.module.test.ts | 2 +- .../dashboard-model.directive.test.ts | 22 ++--- .../dashboard-renderer.service.test.ts | 38 ++++----- .../src/rendering/dashboard.component.test.ts | 4 +- .../example-dash.component.test.ts | 36 +++++---- src/tsconfig.app.json | 9 --- tsconfig.app.json | 9 +++ tsconfig.json | 5 +- src/tsconfig.spec.json => tsconfig.spec.json | 6 +- 19 files changed, 142 insertions(+), 138 deletions(-) create mode 100644 jest.config.debug.js delete mode 100644 projects/hyperdash-angular/jest.config.debug.js delete mode 100644 src/tsconfig.app.json create mode 100644 tsconfig.app.json rename src/tsconfig.spec.json => tsconfig.spec.json (58%) diff --git a/.vscode/launch.json b/.vscode/launch.json index 137b6375..0a0b1664 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -6,7 +6,7 @@ "name": "vscode-jest-tests", "request": "launch", "program": "${workspaceFolder}/node_modules/jest/bin/jest", - "args": ["--runInBand", "--config", "${workspaceFolder}/projects/hyperdash-angular/jest.config.debug.js"], + "args": ["--runInBand", "--config", "${workspaceFolder}/jest.config.debug.js"], "cwd": "${workspaceFolder}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen" diff --git a/angular.json b/angular.json index 7d390a1b..7035bb5e 100644 --- a/angular.json +++ b/angular.json @@ -22,7 +22,7 @@ "index": "src/index.html", "main": "src/main.ts", "polyfills": "src/polyfills.ts", - "tsConfig": "src/tsconfig.app.json", + "tsConfig": "tsconfig.app.json", "assets": ["src/favicon.ico", "src/assets"], "styles": ["src/styles.scss"], "scripts": [] @@ -84,7 +84,7 @@ "lint": { "builder": "@angular-devkit/build-angular:tslint", "options": { - "tsConfig": ["src/tsconfig.app.json", "src/tsconfig.spec.json"], + "tsConfig": ["tsconfig.app.json", "tsconfig.spec.json"], "exclude": ["**/node_modules/**"] } } diff --git a/jest.config.debug.js b/jest.config.debug.js new file mode 100644 index 00000000..92bc3c35 --- /dev/null +++ b/jest.config.debug.js @@ -0,0 +1,11 @@ +module.exports = { + preset: 'jest-preset-angular', + modulePathIgnorePatterns: ['/dist/'], + watchPathIgnorePatterns: ['test-results'], + moduleNameMapper: { + '^lodash-es$': 'lodash', + '^@hypertrace/hyperdash-angular$': '/projects/hyperdash-angular/src/public_api.ts' + }, + setupFilesAfterEnv: ['/node_modules/@angular-builders/jest/dist/jest-config/setup.js'], + testMatch: ['/**/+(*.)+(spec|test).+(ts|js)?(x)'] +}; diff --git a/jest.config.js b/jest.config.js index 036392fb..1978be1c 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,9 +1,4 @@ module.exports = { - globals: { - 'ts-jest': { - tsConfig: '/src/tsconfig.spec.json' - } - }, reporters: [ 'default', [ diff --git a/projects/hyperdash-angular/jest.config.debug.js b/projects/hyperdash-angular/jest.config.debug.js deleted file mode 100644 index a59f4691..00000000 --- a/projects/hyperdash-angular/jest.config.debug.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - rootDir: '../..', - modulePathIgnorePatterns: ['BOGUS'], // Need to reset from app project, but empty is merged - moduleNameMapper: { - '^lodash-es$': 'lodash' - }, - preset: 'jest-preset-angular', - setupFilesAfterEnv: ['/node_modules/@angular-builders/jest/dist/jest-config/setup.js'], - testMatch: ['/projects/hyperdash-angular/**/+(*.)+(spec|test).+(ts|js)?(x)'], - watchPathIgnorePatterns: ['test-results'] -}; diff --git a/projects/hyperdash-angular/src/configuration/default-configuration.service.test.ts b/projects/hyperdash-angular/src/configuration/default-configuration.service.test.ts index bda3ddb1..4b59e1ce 100644 --- a/projects/hyperdash-angular/src/configuration/default-configuration.service.test.ts +++ b/projects/hyperdash-angular/src/configuration/default-configuration.service.test.ts @@ -33,8 +33,8 @@ describe('Default configuration service', () => { ] }); - defaultConfigurationService = TestBed.get(DefaultConfigurationService); - logger = TestBed.get(LoggerService); + defaultConfigurationService = TestBed.inject(DefaultConfigurationService); + logger = TestBed.inject(LoggerService); const errorSpy = jest.spyOn(logger, 'error'); errorSpy.mockImplementation( message => @@ -49,10 +49,10 @@ describe('Default configuration service', () => { }); test('correctly configures deserialization', () => { - const deserializationManager = TestBed.get(DeserializationManagerService) as DeserializationManagerService; - const modelLibrary = TestBed.get(ModelLibraryService) as ModelLibraryService; + const deserializationManager = TestBed.inject(DeserializationManagerService); + const modelLibrary = TestBed.inject(ModelLibraryService); - (TestBed.get(ModelPropertyValidatorService) as ModelPropertyValidatorService).setStrictSchema(false); + TestBed.inject(ModelPropertyValidatorService).setStrictSchema(false); const testModel = class ModelClass { public constructor(public prop: unknown) {} }; @@ -97,8 +97,8 @@ describe('Default configuration service', () => { }); test('correctly configures deserialization and setting of variables', () => { - const deserializationManager = TestBed.get(DeserializationManagerService) as DeserializationManagerService; - const modelLibrary = TestBed.get(ModelLibraryService) as ModelLibraryService; + const deserializationManager = TestBed.inject(DeserializationManagerService); + const modelLibrary = TestBed.inject(ModelLibraryService); const testModel = class ModelClass { public constructor(public prop?: number) {} @@ -121,7 +121,7 @@ describe('Default configuration service', () => { expect(deserializedModel).toEqual(new testModel()); - (TestBed.get(VariableManagerService) as VariableManagerService).set('test', 42, deserializedModel); + TestBed.inject(VariableManagerService).set('test', 42, deserializedModel); expect(deserializedModel).toEqual(new testModel(42)); }); @@ -135,9 +135,9 @@ describe('Default configuration service', () => { }); test('correctly configures serialization', () => { - const serializationManager = TestBed.get(SerializationManagerService) as SerializationManagerService; - const modelLibrary = TestBed.get(ModelLibraryService) as ModelLibraryService; - const modelManager = TestBed.get(ModelManagerService) as ModelManagerService; + const serializationManager = TestBed.inject(SerializationManagerService); + const modelLibrary = TestBed.inject(ModelLibraryService); + const modelManager = TestBed.inject(ModelManagerService); const testModel = class { public constructor(public prop?: unknown[]) {} @@ -170,7 +170,7 @@ describe('Default configuration service', () => { }); test('registers provided property types', () => { - const propertyTypeLibrary = TestBed.get(ModelPropertyTypeLibraryService) as ModelPropertyTypeLibraryService; + const propertyTypeLibrary = TestBed.inject(ModelPropertyTypeLibraryService); propertyTypeLibrary.registerPropertyType = jest.fn(); defaultConfigurationService.configure(); expect(propertyTypeLibrary.registerPropertyType).toHaveBeenCalledWith({ type: 'test-property' }); diff --git a/projects/hyperdash-angular/src/editor/model-json/model-json-editor.component.test.ts b/projects/hyperdash-angular/src/editor/model-json/model-json-editor.component.test.ts index ecc2cf6f..a68424ff 100644 --- a/projects/hyperdash-angular/src/editor/model-json/model-json-editor.component.test.ts +++ b/projects/hyperdash-angular/src/editor/model-json/model-json-editor.component.test.ts @@ -69,7 +69,7 @@ describe('Model JSON editor component', () => { imports: [DashboardEditorModule, TestDashboardModule] }); - (TestBed.get(DefaultConfigurationService) as DefaultConfigurationService).configure(); + TestBed.inject(DefaultConfigurationService).configure(); host = TestBed.createComponent(HostComponent); host.detectChanges(); }); @@ -124,7 +124,7 @@ describe('Model JSON editor component', () => { test('destroys models when a new json object is provided', () => { const destroySpy = jest.fn(); - (TestBed.get(ModelDestroyedEventService) as ModelDestroyedEventService).getObservable().subscribe(destroySpy); + TestBed.inject(ModelDestroyedEventService).getObservable().subscribe(destroySpy); host.componentInstance.modelJson = { type: 'test-model', diff --git a/projects/hyperdash-angular/src/editor/model/model-editor.component.test.ts b/projects/hyperdash-angular/src/editor/model/model-editor.component.test.ts index 7a5cc656..d69a2bf2 100644 --- a/projects/hyperdash-angular/src/editor/model/model-editor.component.test.ts +++ b/projects/hyperdash-angular/src/editor/model/model-editor.component.test.ts @@ -43,11 +43,11 @@ describe('Model editor component', () => { imports: [DashboardEditorModule, moduleWithEntryComponents(PropEditorComponent)] }); - mockModelEditorService = TestBed.get(ModelEditorService); + mockModelEditorService = TestBed.inject(ModelEditorService); mockModelEditorService.getRenderData = jest.fn().mockReturnValue([ { component: PropEditorComponent, - injector: TestBed.get(Injector) + injector: TestBed.inject(Injector) } ]); diff --git a/projects/hyperdash-angular/src/injectable-wrappers/injectable-wrappers.test.ts b/projects/hyperdash-angular/src/injectable-wrappers/injectable-wrappers.test.ts index 28859d91..f13ae88f 100644 --- a/projects/hyperdash-angular/src/injectable-wrappers/injectable-wrappers.test.ts +++ b/projects/hyperdash-angular/src/injectable-wrappers/injectable-wrappers.test.ts @@ -78,40 +78,40 @@ import { VariableManagerService } from './variable-manager.service'; describe('Injectable wrappers', () => { test('should correctly register providers', () => { - expect(TestBed.get(ModelLibraryService) instanceof ModelLibrary).toBeTruthy(); - expect(TestBed.get(RendererLibraryService) instanceof RendererLibrary).toBeTruthy(); - expect(TestBed.get(ModelDeserializerService) instanceof ModelDeserializer).toBeTruthy(); - expect(TestBed.get(ArrayDeserializerService) instanceof ArrayDeserializer).toBeTruthy(); - expect(TestBed.get(ObjectDeserializerService) instanceof ObjectDeserializer).toBeTruthy(); - expect(TestBed.get(PrimitiveDeserializerService) instanceof PrimitiveDeserializer).toBeTruthy(); - expect(TestBed.get(DeserializationManagerService) instanceof DeserializationManager).toBeTruthy(); - expect(TestBed.get(ModelManagerService) instanceof ModelManager).toBeTruthy(); - expect(TestBed.get(DashboardManagerService) instanceof DashboardManager).toBeTruthy(); - expect(TestBed.get(DataSourceManagerService) instanceof DataSourceManagerService).toBeTruthy(); - expect(TestBed.get(LoggerService) instanceof Logger).toBeTruthy(); - expect(TestBed.get(ModelPropertyTypeLibraryService) instanceof ModelPropertyTypeLibrary).toBeTruthy(); - expect(TestBed.get(VariableManagerService) instanceof VariableManager).toBeTruthy(); - expect(TestBed.get(VariableDeserializerService) instanceof VariableDeserializer).toBeTruthy(); - expect(TestBed.get(DashboardEventManagerService) instanceof DashboardEventManager).toBeTruthy(); - expect(TestBed.get(DefaultModelApiBuilderService) instanceof DefaultModelApiBuilder).toBeTruthy(); - expect(TestBed.get(ModelCreatedEventService) instanceof ModelCreatedEvent).toBeTruthy(); - expect(TestBed.get(ModelDestroyedEventService) instanceof ModelDestroyedEvent).toBeTruthy(); - expect(TestBed.get(ModelPropertyValidatorService) instanceof ModelPropertyValidator).toBeTruthy(); - expect(TestBed.get(ModelChangedEventService) instanceof ModelChangedEvent).toBeTruthy(); - expect(TestBed.get(ThemeManagerService) instanceof ThemeManager).toBeTruthy(); - expect(TestBed.get(ModelEventInstallerService) instanceof ModelEventInstaller).toBeTruthy(); - expect(TestBed.get(ModelSerializerService) instanceof ModelSerializer).toBeTruthy(); - expect(TestBed.get(ArraySerializerService) instanceof ArraySerializer).toBeTruthy(); - expect(TestBed.get(ObjectSerializerService) instanceof ObjectSerializer).toBeTruthy(); - expect(TestBed.get(PrimitiveSerializerService) instanceof PrimitiveSerializer).toBeTruthy(); - expect(TestBed.get(SerializationManagerService) instanceof SerializationManager).toBeTruthy(); - expect(TestBed.get(VariableSerializerService) instanceof VariableSerializer).toBeTruthy(); - expect(TestBed.get(EditorLibraryService) instanceof EditorLibrary).toBeTruthy(); - expect(TestBed.get(EditorApiFactoryService) instanceof EditorApiFactory).toBeTruthy(); - expect(TestBed.get(ModelPropertyTypeService) instanceof ModelPropertyType).toBeTruthy(); - expect(TestBed.get(DataRefreshEventService) instanceof DataRefreshEvent).toBeTruthy(); - expect(TestBed.get(TimeRangeChangedEventService) instanceof TimeRangeChangedEvent).toBeTruthy(); - expect(TestBed.get(TimeRangeManagerService) instanceof TimeRangeManager).toBeTruthy(); + expect(TestBed.inject(ModelLibraryService) instanceof ModelLibrary).toBeTruthy(); + expect(TestBed.inject(RendererLibraryService) instanceof RendererLibrary).toBeTruthy(); + expect(TestBed.inject(ModelDeserializerService) instanceof ModelDeserializer).toBeTruthy(); + expect(TestBed.inject(ArrayDeserializerService) instanceof ArrayDeserializer).toBeTruthy(); + expect(TestBed.inject(ObjectDeserializerService) instanceof ObjectDeserializer).toBeTruthy(); + expect(TestBed.inject(PrimitiveDeserializerService) instanceof PrimitiveDeserializer).toBeTruthy(); + expect(TestBed.inject(DeserializationManagerService) instanceof DeserializationManager).toBeTruthy(); + expect(TestBed.inject(ModelManagerService) instanceof ModelManager).toBeTruthy(); + expect(TestBed.inject(DashboardManagerService) instanceof DashboardManager).toBeTruthy(); + expect(TestBed.inject(DataSourceManagerService) instanceof DataSourceManagerService).toBeTruthy(); + expect(TestBed.inject(LoggerService) instanceof Logger).toBeTruthy(); + expect(TestBed.inject(ModelPropertyTypeLibraryService) instanceof ModelPropertyTypeLibrary).toBeTruthy(); + expect(TestBed.inject(VariableManagerService) instanceof VariableManager).toBeTruthy(); + expect(TestBed.inject(VariableDeserializerService) instanceof VariableDeserializer).toBeTruthy(); + expect(TestBed.inject(DashboardEventManagerService) instanceof DashboardEventManager).toBeTruthy(); + expect(TestBed.inject(DefaultModelApiBuilderService) instanceof DefaultModelApiBuilder).toBeTruthy(); + expect(TestBed.inject(ModelCreatedEventService) instanceof ModelCreatedEvent).toBeTruthy(); + expect(TestBed.inject(ModelDestroyedEventService) instanceof ModelDestroyedEvent).toBeTruthy(); + expect(TestBed.inject(ModelPropertyValidatorService) instanceof ModelPropertyValidator).toBeTruthy(); + expect(TestBed.inject(ModelChangedEventService) instanceof ModelChangedEvent).toBeTruthy(); + expect(TestBed.inject(ThemeManagerService) instanceof ThemeManager).toBeTruthy(); + expect(TestBed.inject(ModelEventInstallerService) instanceof ModelEventInstaller).toBeTruthy(); + expect(TestBed.inject(ModelSerializerService) instanceof ModelSerializer).toBeTruthy(); + expect(TestBed.inject(ArraySerializerService) instanceof ArraySerializer).toBeTruthy(); + expect(TestBed.inject(ObjectSerializerService) instanceof ObjectSerializer).toBeTruthy(); + expect(TestBed.inject(PrimitiveSerializerService) instanceof PrimitiveSerializer).toBeTruthy(); + expect(TestBed.inject(SerializationManagerService) instanceof SerializationManager).toBeTruthy(); + expect(TestBed.inject(VariableSerializerService) instanceof VariableSerializer).toBeTruthy(); + expect(TestBed.inject(EditorLibraryService) instanceof EditorLibrary).toBeTruthy(); + expect(TestBed.inject(EditorApiFactoryService) instanceof EditorApiFactory).toBeTruthy(); + expect(TestBed.inject(ModelPropertyTypeService) instanceof ModelPropertyType).toBeTruthy(); + expect(TestBed.inject(DataRefreshEventService) instanceof DataRefreshEvent).toBeTruthy(); + expect(TestBed.inject(TimeRangeChangedEventService) instanceof TimeRangeChangedEvent).toBeTruthy(); + expect(TestBed.inject(TimeRangeManagerService) instanceof TimeRangeManager).toBeTruthy(); }); test('support model decorators', () => { @@ -119,7 +119,7 @@ describe('Injectable wrappers', () => { class TestModelDecoratorClass {} expect( - (TestBed.get(ModelLibraryService) as ModelLibrary).lookupModelMetadata(TestModelDecoratorClass) + (TestBed.inject(ModelLibraryService) as ModelLibrary).lookupModelMetadata(TestModelDecoratorClass) ).toMatchObject({ type: 'test-model-decorator' }); @@ -129,7 +129,7 @@ describe('Injectable wrappers', () => { class TestLateModelDecoratorClass {} expect( - (TestBed.get(ModelLibraryService) as ModelLibrary).lookupModelMetadata(TestLateModelDecoratorClass) + (TestBed.inject(ModelLibraryService) as ModelLibrary).lookupModelMetadata(TestLateModelDecoratorClass) ).toMatchObject({ type: 'test-late-model-decorator' }); @@ -141,7 +141,7 @@ describe('Injectable wrappers', () => { @Renderer({ modelClass: modelClass }) class TestRendererDecoratorClass {} - expect((TestBed.get(RendererLibraryService) as RendererLibrary).lookupRenderer(modelClass)).toBe( + expect((TestBed.inject(RendererLibraryService) as RendererLibrary).lookupRenderer(modelClass)).toBe( TestRendererDecoratorClass ); @@ -151,7 +151,7 @@ describe('Injectable wrappers', () => { @Renderer({ modelClass: secondModelClass }) class TestSecondRendererDecoratorClass {} - expect((TestBed.get(RendererLibraryService) as RendererLibrary).lookupRenderer(secondModelClass)).toBe( + expect((TestBed.inject(RendererLibraryService) as RendererLibrary).lookupRenderer(secondModelClass)).toBe( TestSecondRendererDecoratorClass ); }); @@ -180,7 +180,7 @@ describe('Injectable wrappers', () => { public booleanProp?: boolean; } - expect((TestBed.get(EditorLibraryService) as EditorLibrary).getEditorData(TestModelClass)).toMatchObject({ + expect((TestBed.inject(EditorLibraryService) as EditorLibrary).getEditorData(TestModelClass)).toMatchObject({ title: 'Test Model', subeditors: [ { @@ -193,7 +193,7 @@ describe('Injectable wrappers', () => { @ModelPropertyEditor({ propertyType: BOOLEAN_PROPERTY.type }) class LateTestEditorClass {} - expect((TestBed.get(EditorLibraryService) as EditorLibrary).getEditorData(TestModelClass)).toMatchObject({ + expect((TestBed.inject(EditorLibraryService) as EditorLibrary).getEditorData(TestModelClass)).toMatchObject({ title: 'Test Model', subeditors: [ { diff --git a/projects/hyperdash-angular/src/injectable-wrappers/model-event-installer.service.test.ts b/projects/hyperdash-angular/src/injectable-wrappers/model-event-installer.service.test.ts index 970eb4b2..f6f30a3e 100644 --- a/projects/hyperdash-angular/src/injectable-wrappers/model-event-installer.service.test.ts +++ b/projects/hyperdash-angular/src/injectable-wrappers/model-event-installer.service.test.ts @@ -15,11 +15,11 @@ describe('Model event installer service', () => { TestBed.configureTestingModule({ providers: [{ provide: eventKeyInjectionToken, useValue: eventKey }] }); - modelEventInstallerService = TestBed.get(ModelEventInstallerService); + modelEventInstallerService = TestBed.inject(ModelEventInstallerService); }); test('should support injecting event keys', () => { - const dashEventManagerService: DashboardEventManagerService = TestBed.get(DashboardEventManagerService); + const dashEventManagerService: DashboardEventManagerService = TestBed.inject(DashboardEventManagerService); dashEventManagerService.publishEvent = jest.fn(); class TestModelClass { diff --git a/projects/hyperdash-angular/src/module/dashboard-core.module.test.ts b/projects/hyperdash-angular/src/module/dashboard-core.module.test.ts index 1d6f3888..2334c96d 100644 --- a/projects/hyperdash-angular/src/module/dashboard-core.module.test.ts +++ b/projects/hyperdash-angular/src/module/dashboard-core.module.test.ts @@ -28,6 +28,6 @@ describe('Dashboard core module', () => { ] }); - expect(TestBed.get(MODEL_PROPERTY_TYPES)).toContainEqual([testPropType, testPropType2, PropertyTypeProvider]); + expect(TestBed.inject(MODEL_PROPERTY_TYPES)).toContainEqual([testPropType, testPropType2, PropertyTypeProvider]); }); }); diff --git a/projects/hyperdash-angular/src/rendering/dashboard-model.directive.test.ts b/projects/hyperdash-angular/src/rendering/dashboard-model.directive.test.ts index 86fc8d88..67cff066 100644 --- a/projects/hyperdash-angular/src/rendering/dashboard-model.directive.test.ts +++ b/projects/hyperdash-angular/src/rendering/dashboard-model.directive.test.ts @@ -1,5 +1,5 @@ import { Component, Input } from '@angular/core'; -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { DashboardModelDirective } from './dashboard-model.directive'; import { DashboardRendererService } from './dashboard-renderer.service'; @@ -7,17 +7,19 @@ describe('DashboardModelDirective', () => { let dashboardRendererService: DashboardRendererService; let host: ComponentFixture; - beforeEach(async(() => { - TestBed.configureTestingModule({ - providers: [{ provide: DashboardRendererService, useValue: {} }], - declarations: [HostComponent, DashboardModelDirective] - }).compileComponents(); + beforeEach( + waitForAsync(() => { + TestBed.configureTestingModule({ + providers: [{ provide: DashboardRendererService, useValue: {} }], + declarations: [HostComponent, DashboardModelDirective] + }).compileComponents(); - dashboardRendererService = TestBed.get(DashboardRendererService); - dashboardRendererService.renderInViewContainer = jest.fn(); + dashboardRendererService = TestBed.inject(DashboardRendererService); + dashboardRendererService.renderInViewContainer = jest.fn(); - host = TestBed.createComponent(HostComponent); - })); + host = TestBed.createComponent(HostComponent); + }) + ); test('passes initial value to renderer service', () => { expect(dashboardRendererService.renderInViewContainer).not.toHaveBeenCalled(); diff --git a/projects/hyperdash-angular/src/rendering/dashboard-renderer.service.test.ts b/projects/hyperdash-angular/src/rendering/dashboard-renderer.service.test.ts index 82a6564d..a28a0b8b 100644 --- a/projects/hyperdash-angular/src/rendering/dashboard-renderer.service.test.ts +++ b/projects/hyperdash-angular/src/rendering/dashboard-renderer.service.test.ts @@ -1,5 +1,5 @@ import { Component, Inject, ViewChild, ViewContainerRef } from '@angular/core'; -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { ModelApi } from '@hypertrace/hyperdash'; import { ReplaySubject } from 'rxjs'; @@ -21,24 +21,26 @@ describe('Dashboard Renderer Service', () => { return model; }; - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [HostComponent], - imports: [moduleWithEntryComponents(RendererComponent)] - }).compileComponents(); - - dashboardRendererService = TestBed.get(DashboardRendererService); - modelManager = TestBed.get(ModelManagerService) as ModelManagerService; - modelManager.registerModelApiBuilder({ - matches: () => true, - // tslint:disable-next-line: no-object-literal-type-assertion - build: () => ({} as ModelApi) - }); - const rendererLibrary = TestBed.get(RendererLibraryService); - rendererLibrary.lookupRenderer = jest.fn().mockReturnValue(RendererComponent); + beforeEach( + waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [HostComponent], + imports: [moduleWithEntryComponents(RendererComponent)] + }).compileComponents(); + + dashboardRendererService = TestBed.inject(DashboardRendererService); + modelManager = TestBed.inject(ModelManagerService); + modelManager.registerModelApiBuilder({ + matches: () => true, + // tslint:disable-next-line: no-object-literal-type-assertion + build: () => ({} as ModelApi) + }); + const rendererLibrary = TestBed.inject(RendererLibraryService); + rendererLibrary.lookupRenderer = jest.fn().mockReturnValue(RendererComponent); - host = TestBed.createComponent(HostComponent); - })); + host = TestBed.createComponent(HostComponent); + }) + ); test('can render', () => { dashboardRendererService.renderInViewContainer(createModel('Renderer'), host.componentInstance.viewContainerRef); diff --git a/projects/hyperdash-angular/src/rendering/dashboard.component.test.ts b/projects/hyperdash-angular/src/rendering/dashboard.component.test.ts index 33cd9fc4..d427497d 100644 --- a/projects/hyperdash-angular/src/rendering/dashboard.component.test.ts +++ b/projects/hyperdash-angular/src/rendering/dashboard.component.test.ts @@ -53,7 +53,7 @@ describe('Dashboard Component', () => { declarations: [HostComponent, DashboardComponent, mockDashDirective] }); - dashboardManagerService = TestBed.get(DashboardManagerService); + dashboardManagerService = TestBed.inject(DashboardManagerService); dashboardManagerService.create = jest.fn().mockImplementation(val => ({ root: val, destroy: jest.fn() })); host = TestBed.createComponent(HostComponent); @@ -130,7 +130,7 @@ describe('Dashboard Component', () => { expect(componentChangeDetector.markForCheck).not.toHaveBeenCalled(); // Trigger a model change event - const modelChanged = TestBed.get(ModelChangedEventService) as ModelChangedEventService; + const modelChanged = TestBed.inject(ModelChangedEventService); modelChanged.publishChange(host.componentInstance.dashboard!.root); expect(componentChangeDetector.markForCheck).toHaveBeenCalled(); diff --git a/src/example-dash/example-dash.component.test.ts b/src/example-dash/example-dash.component.test.ts index 4f993544..d1c27074 100644 --- a/src/example-dash/example-dash.component.test.ts +++ b/src/example-dash/example-dash.component.test.ts @@ -1,5 +1,5 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { async, fakeAsync, TestBed, tick } from '@angular/core/testing'; +import { fakeAsync, TestBed, tick, waitForAsync } from '@angular/core/testing'; import { FormsModule } from '@angular/forms'; import { DashboardCoreModule, @@ -12,22 +12,24 @@ import { ExampleDashModule } from './example-dash.module'; import { GraphQlDataSourceModule } from './graphql-data-source.module'; describe('example dash component', () => { - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ExampleDashComponent], - imports: [ - ExampleDashModule, - DashboardCoreModule, - DashboardEditorModule, - FormsModule, - GraphQlDataSourceModule, - HttpClientTestingModule - ], - providers: [{ provide: LoggerService, useValue: { warn: jest.fn() } }] - }).compileComponents(); - - (TestBed.get(DefaultConfigurationService) as DefaultConfigurationService).configure(); - })); + beforeEach( + waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ExampleDashComponent], + imports: [ + ExampleDashModule, + DashboardCoreModule, + DashboardEditorModule, + FormsModule, + GraphQlDataSourceModule, + HttpClientTestingModule + ], + providers: [{ provide: LoggerService, useValue: { warn: jest.fn() } }] + }).compileComponents(); + + TestBed.inject(DefaultConfigurationService).configure(); + }) + ); test('can detect clicks inside the dashboard', () => { const fixture = TestBed.createComponent(ExampleDashComponent); diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json deleted file mode 100644 index 057bc4b5..00000000 --- a/src/tsconfig.app.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../tsconfig.base.json", - "compilerOptions": { - "outDir": "../out-tsc/app", - "types": [] - }, - "files": ["main.ts", "polyfills.ts"], - "include": ["src/**/*.d.ts"] -} diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 00000000..81e534ed --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": ["src/main.ts", "src/polyfills.ts"], + "include": ["src/**/*.d.ts"] +} diff --git a/tsconfig.json b/tsconfig.json index df43d1df..63304e49 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,10 @@ "files": [], "references": [ { - "path": "./src/tsconfig.app.json" + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" }, { "path": "./projects/hyperdash-angular/tsconfig.lib.json" diff --git a/src/tsconfig.spec.json b/tsconfig.spec.json similarity index 58% rename from src/tsconfig.spec.json rename to tsconfig.spec.json index e93497b8..c557d644 100644 --- a/src/tsconfig.spec.json +++ b/tsconfig.spec.json @@ -1,10 +1,10 @@ { - "extends": "../tsconfig.base.json", + "extends": "./tsconfig.base.json", "compilerOptions": { - "outDir": "../out-tsc/spec", + "outDir": "./out-tsc/spec", "types": ["jest", "webpack-env"], "module": "commonjs" }, - "files": ["polyfills.ts"], + "files": ["src/polyfills.ts"], "include": ["**/*.spec.ts", "**/*.test.ts"] }