import {DeviceStatusPipe} from './device-status.pipe'; import {MetricsStatusThreshold} from '../core/config/app.config'; import {DeviceModel} from '../core/models/device-model'; describe('DeviceStatusPipe', () => { it('create an instance', () => { const pipe = new DeviceStatusPipe(); expect(pipe).toBeTruthy(); }); describe('#deviceStatusForModelWithThreshold', () => { it('if healthy device, should be passing', () => { expect(DeviceStatusPipe.deviceStatusForModelWithThreshold( {device_status: 0} as DeviceModel, true, MetricsStatusThreshold.Both )).toBe('passed') }); it('if device with no smart data, should be unknown', () => { expect(DeviceStatusPipe.deviceStatusForModelWithThreshold( {device_status: 0} as DeviceModel, false, MetricsStatusThreshold.Both )).toBe('unknown') }); const testCases = [ { 'deviceStatus': 10000, // invalid status 'hasSmartResults': false, 'threshold': MetricsStatusThreshold.Smart, 'includeReason': false, 'result': 'unknown' }, { 'deviceStatus': 1, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Smart, 'includeReason': false, 'result': 'failed' }, { 'deviceStatus': 1, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Scrutiny, 'includeReason': false, 'result': 'passed' }, { 'deviceStatus': 1, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Both, 'includeReason': false, 'result': 'failed' }, { 'deviceStatus': 2, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Smart, 'includeReason': false, 'result': 'passed' }, { 'deviceStatus': 2, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Scrutiny, 'includeReason': false, 'result': 'failed' }, { 'deviceStatus': 2, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Both, 'includeReason': false, 'result': 'failed' }, { 'deviceStatus': 3, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Smart, 'includeReason': false, 'result': 'failed' }, { 'deviceStatus': 3, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Scrutiny, 'includeReason': false, 'result': 'failed' }, { 'deviceStatus': 3, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Both, 'includeReason': false, 'result': 'failed' }, { 'deviceStatus': 3, 'hasSmartResults': false, 'threshold': MetricsStatusThreshold.Smart, 'includeReason': true, 'result': 'unknown' }, { 'deviceStatus': 3, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Smart, 'includeReason': true, 'result': 'failed: smart' }, { 'deviceStatus': 3, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Scrutiny, 'includeReason': true, 'result': 'failed: scrutiny' }, { 'deviceStatus': 3, 'hasSmartResults': true, 'threshold': MetricsStatusThreshold.Both, 'includeReason': true, 'result': 'failed: both' } ] testCases.forEach((test, index) => { it(`if device with status (${test.deviceStatus}), hasSmartResults(${test.hasSmartResults}) and threshold (${test.threshold}), should be ${test.result}`, () => { expect(DeviceStatusPipe.deviceStatusForModelWithThreshold( {device_status: test.deviceStatus} as DeviceModel, test.hasSmartResults, test.threshold, test.includeReason )).toBe(test.result) }); }); }); });