diff --git a/modules/ui/src/app/mocks/reports.mock.ts b/modules/ui/src/app/mocks/reports.mock.ts index eb70b0b58..e1422a36c 100644 --- a/modules/ui/src/app/mocks/reports.mock.ts +++ b/modules/ui/src/app/mocks/reports.mock.ts @@ -28,6 +28,19 @@ export const HISTORY = [ started: '2023-07-23T10:11:00.123Z', finished: '2023-07-23T10:17:10.123Z', }, + { + mac_addr: null, + status: 'compliant', + device: { + manufacturer: 'Delta', + model: '03-DIN-SRC', + mac_addr: '01:02:03:04:05:08', + firmware: '1.2.2', + }, + report: 'https://api.testrun.io/report.pdf', + started: '2023-06-23T10:11:00.123Z', + finished: '2023-06-23T10:17:10.123Z', + }, ] as TestrunStatus[]; export const HISTORY_AFTER_REMOVE = [ @@ -44,6 +57,19 @@ export const HISTORY_AFTER_REMOVE = [ started: '2023-06-23T10:11:00.123Z', finished: '2023-06-23T10:17:10.123Z', }, + { + mac_addr: null, + status: 'compliant', + device: { + manufacturer: 'Delta', + model: '03-DIN-SRC', + mac_addr: '01:02:03:04:05:08', + firmware: '1.2.2', + }, + report: 'https://api.testrun.io/report.pdf', + started: '2023-06-23T10:11:00.123Z', + finished: '2023-06-23T10:17:10.123Z', + }, ]; export const FORMATTED_HISTORY = [ @@ -79,6 +105,22 @@ export const FORMATTED_HISTORY = [ deviceInfo: 'Delta 03-DIN-SRC', duration: '06m 10s', }, + { + mac_addr: null, + status: 'compliant', + device: { + manufacturer: 'Delta', + model: '03-DIN-SRC', + mac_addr: '01:02:03:04:05:08', + firmware: '1.2.2', + }, + report: 'https://api.testrun.io/report.pdf', + started: '2023-06-23T10:11:00.123Z', + finished: '2023-06-23T10:17:10.123Z', + deviceFirmware: '1.2.2', + deviceInfo: 'Delta 03-DIN-SRC', + duration: '06m 10s', + }, ]; export const FILTERS = { diff --git a/modules/ui/src/app/model/testrun-status.ts b/modules/ui/src/app/model/testrun-status.ts index 59fb1e80f..89db865f9 100644 --- a/modules/ui/src/app/model/testrun-status.ts +++ b/modules/ui/src/app/model/testrun-status.ts @@ -16,7 +16,7 @@ import { Device } from './device'; export interface TestrunStatus { - mac_addr: string; + mac_addr: string | null; status: string; device: IDevice; started: string | null; diff --git a/modules/ui/src/app/pages/reports/reports.component.spec.ts b/modules/ui/src/app/pages/reports/reports.component.spec.ts index 580b3a5c4..c59cbedfb 100644 --- a/modules/ui/src/app/pages/reports/reports.component.spec.ts +++ b/modules/ui/src/app/pages/reports/reports.component.spec.ts @@ -276,7 +276,8 @@ describe('ReportsComponent', () => { const data = HISTORY[0]; component.removeDevice(data); expect(mockReportsStore.deleteReport).toHaveBeenCalledWith({ - mac_addr: data.device.mac_addr, + mac_addr: data.mac_addr, + deviceMacAddr: data.device.mac_addr, started: data.started, }); }); diff --git a/modules/ui/src/app/pages/reports/reports.component.ts b/modules/ui/src/app/pages/reports/reports.component.ts index 5531bb42c..32c171ff6 100644 --- a/modules/ui/src/app/pages/reports/reports.component.ts +++ b/modules/ui/src/app/pages/reports/reports.component.ts @@ -165,6 +165,7 @@ export class ReportsComponent implements OnInit, OnDestroy { removeDevice(data: TestrunStatus) { this.store.deleteReport({ mac_addr: data.mac_addr, + deviceMacAddr: data.device.mac_addr, started: data.started, }); this.focusNextButton(); diff --git a/modules/ui/src/app/pages/reports/reports.store.spec.ts b/modules/ui/src/app/pages/reports/reports.store.spec.ts index 248b918c0..6e6d1656a 100644 --- a/modules/ui/src/app/pages/reports/reports.store.spec.ts +++ b/modules/ui/src/app/pages/reports/reports.store.spec.ts @@ -181,8 +181,9 @@ describe('ReportsStore', () => { store.refreshState(); reportsStore.deleteReport({ - mac_addr: '00:1e:42:35:73:c4', - started: '2023-06-22T10:11:00.123Z', + mac_addr: '01:02:03:04:05:07', + deviceMacAddr: '01:02:03:04:05:07', + started: '2023-07-23T10:11:00.123Z', }); expect(store.dispatch).toHaveBeenCalledWith( @@ -190,6 +191,23 @@ describe('ReportsStore', () => { ); done(); }); + + it('should update store after remove with null mac_addr', done => { + mockService.deleteReport.and.returnValue(of(true)); + store.overrideSelector(selectReports, [...HISTORY_AFTER_REMOVE]); + store.refreshState(); + + reportsStore.deleteReport({ + mac_addr: null, + deviceMacAddr: '01:02:03:04:05:08', + started: '2023-06-23T10:11:00.123Z', + }); + + expect(store.dispatch).toHaveBeenCalledWith( + setReports({ reports: [HISTORY_AFTER_REMOVE[0]] }) + ); + done(); + }); }); describe('updateSort', () => { diff --git a/modules/ui/src/app/pages/reports/reports.store.ts b/modules/ui/src/app/pages/reports/reports.store.ts index 249a4174a..39db74fd2 100644 --- a/modules/ui/src/app/pages/reports/reports.store.ts +++ b/modules/ui/src/app/pages/reports/reports.store.ts @@ -113,19 +113,22 @@ export class ReportsStore extends ComponentStore { }); deleteReport = this.effect<{ - mac_addr: string; + mac_addr: string | null; + deviceMacAddr: string; started: string | null; }>(trigger$ => { return trigger$.pipe( - exhaustMap(({ mac_addr, started }) => { - return this.testRunService.deleteReport(mac_addr, started || '').pipe( - withLatestFrom(this.history$), - tap(([remove, current]) => { - if (remove) { - this.removeReport(mac_addr, started, current); - } - }) - ); + exhaustMap(({ mac_addr, deviceMacAddr, started }) => { + return this.testRunService + .deleteReport(mac_addr || deviceMacAddr, started || '') + .pipe( + withLatestFrom(this.history$), + tap(([remove, current]) => { + if (remove) { + this.removeReport(mac_addr, deviceMacAddr, started, current); + } + }) + ); }) ); }); @@ -215,13 +218,17 @@ export class ReportsStore extends ComponentStore { }); private removeReport( - mac_addr: string, + mac_addr: string | null, + deviceMacAddr: string, started: string | null, current: TestrunStatus[] ) { const history = [...current]; const idx = history.findIndex( - report => report.mac_addr === mac_addr && report.started === started + report => + report.mac_addr === mac_addr && + report.device.mac_addr === deviceMacAddr && + report.started === started ); if (typeof idx === 'number') { history.splice(idx, 1);