From: Nizamudeen A Date: Fri, 9 Jun 2023 14:06:41 +0000 (+0530) Subject: mgr/dashboard: adapt jest unit tests to angular 14 X-Git-Tag: v19.0.0~601^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=08a32ec4ef79c32b3182d327a79fdfbb3376164d;p=ceph-ci.git mgr/dashboard: adapt jest unit tests to angular 14 Important change would be the introduction of `TypedFormControl` which is now more stricter in typing the FormControl and FormGroups as well. Right now the dashboard has many number of untypedforms which by default is migrated to an `UntypedFormControl` class when I ran the angular upgrade script Fixes: https://tracker.ceph.com/issues/61641 Signed-off-by: Nizamudeen A --- diff --git a/src/pybind/mgr/dashboard/frontend/package-lock.json b/src/pybind/mgr/dashboard/frontend/package-lock.json index 5fe68f3dc9f..206d5a06b07 100644 --- a/src/pybind/mgr/dashboard/frontend/package-lock.json +++ b/src/pybind/mgr/dashboard/frontend/package-lock.json @@ -56,7 +56,6 @@ "@angular/compiler-cli": "14.3.0", "@angular/language-service": "14.3.0", "@applitools/eyes-cypress": "3.22.5", - "@apteco/ngth": "1.5.0", "@compodoc/compodoc": "1.1.18", "@cypress/browserify-preprocessor": "3.0.2", "@types/brace-expansion": "1.1.0", @@ -1070,19 +1069,6 @@ "node": ">=8.9.0" } }, - "node_modules/@apteco/ngth": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@apteco/ngth/-/ngth-1.5.0.tgz", - "integrity": "sha512-LBpdybaZbc5PFj8ifNIf6dXGeoQ8tlPhfbN2skcM12ojAe8qH2ymHx9f/ZggVs+KyBuVQLVuJ++jzukG13wryw==", - "dev": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/common": "14.0.7", - "@angular/core": "14.0.7" - } - }, "node_modules/@assemblyscript/loader": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", @@ -31908,15 +31894,6 @@ "throat": "5.0.0" } }, - "@apteco/ngth": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@apteco/ngth/-/ngth-1.5.0.tgz", - "integrity": "sha512-LBpdybaZbc5PFj8ifNIf6dXGeoQ8tlPhfbN2skcM12ojAe8qH2ymHx9f/ZggVs+KyBuVQLVuJ++jzukG13wryw==", - "dev": true, - "requires": { - "tslib": "^2.3.0" - } - }, "@assemblyscript/loader": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", diff --git a/src/pybind/mgr/dashboard/frontend/package.json b/src/pybind/mgr/dashboard/frontend/package.json index 51b14dd60e1..efd9f3cfedc 100644 --- a/src/pybind/mgr/dashboard/frontend/package.json +++ b/src/pybind/mgr/dashboard/frontend/package.json @@ -90,7 +90,6 @@ "@angular/compiler-cli": "14.3.0", "@angular/language-service": "14.3.0", "@applitools/eyes-cypress": "3.22.5", - "@apteco/ngth": "1.5.0", "@compodoc/compodoc": "1.1.18", "@cypress/browserify-preprocessor": "3.0.2", "@types/brace-expansion": "1.1.0", diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.spec.ts index e993468c80d..59aac442728 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.spec.ts @@ -167,7 +167,7 @@ describe('IscsiTargetFormComponent', () => { httpTesting.expectOne('ui-api/iscsi/settings').flush(SETTINGS); httpTesting.expectOne('ui-api/iscsi/portals').flush(PORTALS); httpTesting.expectOne('ui-api/iscsi/version').flush(VERSION); - httpTesting.expectOne('api/block/image?offset=0&limit=-1&search=&sort=+name').flush(RBD_LIST); + httpTesting.expectOne('api/block/image?offset=0&limit=-1&search=&sort=%2Bname').flush(RBD_LIST); httpTesting.expectOne('api/iscsi/target').flush(LIST_TARGET); httpTesting.verify(); }); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/api/host.service.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/host.service.spec.ts index 52ce44e30ae..49b48cd6cfc 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/api/host.service.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/host.service.spec.ts @@ -31,7 +31,7 @@ describe('HostService', () => { let result: any[] = [{}, {}]; const hostContext = new CdTableFetchDataContext(() => undefined); service.list(hostContext.toParams(), 'true').subscribe((resp) => (result = resp)); - const req = httpTesting.expectOne('api/host?offset=0&limit=10&search=&sort=+name&facts=true'); + const req = httpTesting.expectOne('api/host?offset=0&limit=10&search=&sort=%2Bname&facts=true'); expect(req.request.method).toBe('GET'); req.flush([{ foo: 1 }, { bar: 2 }]); tick(); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rbd.service.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rbd.service.spec.ts index 5bafc9e63d3..25b8733d079 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rbd.service.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rbd.service.spec.ts @@ -59,7 +59,9 @@ describe('RbdService', () => { /* tslint:disable:no-empty */ const context = new CdTableFetchDataContext(() => {}); service.list(context.toParams()).subscribe(); - const req = httpTesting.expectOne('api/block/image?offset=0&limit=10&search=&sort=+name'); + const req = httpTesting.expectOne((req) => { + return 'api/block/image?offset=0&limit=-1&search=&sort=+name' && req.method === 'GET'; + }); expect(req.request.method).toBe('GET'); }); diff --git a/src/pybind/mgr/dashboard/frontend/src/testing/unit-test-helper.ts b/src/pybind/mgr/dashboard/frontend/src/testing/unit-test-helper.ts index 12bef83cc58..ca74ee21eca 100644 --- a/src/pybind/mgr/dashboard/frontend/src/testing/unit-test-helper.ts +++ b/src/pybind/mgr/dashboard/frontend/src/testing/unit-test-helper.ts @@ -6,7 +6,6 @@ import { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/t import { NgbModal, NgbNav, NgbNavItem, NgbNavLink } from '@ng-bootstrap/ng-bootstrap'; import _ from 'lodash'; -import { configureSuite } from '@apteco/ngth'; import { of } from 'rxjs'; import { InventoryDevice } from '~/app/ceph/cluster/inventory/inventory-devices/inventory-device.model'; @@ -31,15 +30,18 @@ import { } from '~/app/shared/models/prometheus-alerts'; export function configureTestBed(configuration: any, entryComponents?: any) { - configureSuite(() => { + beforeEach(async () => { if (entryComponents) { // Declare entryComponents without having to add them to a module // This is needed since Jest doesn't yet support not declaring entryComponents - TestBed.configureTestingModule(configuration).overrideModule(BrowserDynamicTestingModule, { - set: { entryComponents: entryComponents } - }); + await TestBed.configureTestingModule(configuration).overrideModule( + BrowserDynamicTestingModule, + { + set: { entryComponents: entryComponents } + } + ); } else { - TestBed.configureTestingModule(configuration); + await TestBed.configureTestingModule(configuration); } }); }