/* * Copyright (C) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { SpHiSysEnergyChart } from '../../../../src/trace/component/chart/SpHiSysEnergyChart'; import { LitPopover } from '../../../../src/base-ui/popover/LitPopoverV'; jest.mock('../../../../src/trace/component/SpSystemTrace', () => { return {}; }); jest.mock('../../../../src/js-heap/model/DatabaseStruct', () => { return {}; }); jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => { return {}; }); jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { return {}; }); const intersectionObserverMock = () => ({ observe: () => null, }); window.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock); window.ResizeObserver = window.ResizeObserver || jest.fn().mockImplementation(() => ({ disconnect: jest.fn(), observe: jest.fn(), unobserve: jest.fn(), })); const sqlite = require('../../../../src/trace/database/sql/SqlLite.sql'); jest.mock('../../../../src/trace/database/sql/SqlLite.sql'); const processSqlite = require('../../../../src/trace/database/sql/ProcessThread.sql'); jest.mock('../../../../src/trace/database/sql/ProcessThread.sql'); describe('SpHiSysEnergyChart Test', () => { let htmlElement: any = document.createElement('sp-system-trace'); let spHiSysEnergyChart = new SpHiSysEnergyChart(htmlElement); let htmlDivElement = document.createElement('div'); htmlDivElement.setAttribute('id', 'appNameList'); let anomalyData = sqlite.queryAnomalyData; anomalyData.mockResolvedValue([]); let maxStateValue = sqlite.queryMaxStateValue; let max = [ { maxValue: 200, type: 'state', }, { maxValue: 300, type: 'sensor', }, ]; maxStateValue.mockResolvedValue(max); let stateInitData = sqlite.queryStateInitValue; let stateInitInit = [{ eventName: '', keyName: '', }]; stateInitData.mockResolvedValue(stateInitInit); let MockExits = sqlite.queryEnergyEventExits; MockExits.mockResolvedValue(['trace_hisys_event']); let powerData = processSqlite.queryPowerData; let power = [ { startNS: 5999127351, eventName: 'POWER_IDE_AUDIO', appKey: 'APPNAME', eventValue: 'com.example.himusicdemo,com.example.himusicdemo_js,com.example.himusicdemo_app', }, { startNS: 1291120516, eventName: 'POWER_IDE_AUDIO', appKey: 'BACKGROUND_ENERGY', eventValue: '854,258,141', }, ]; powerData.mockResolvedValue(power); let stateData = sqlite.queryStateData; stateData.mockResolvedValue([]); let sysEventAppName = sqlite.queryEnergyAppName; let appName = [ { string_value: 'app_name', }, ]; sysEventAppName.mockResolvedValue(appName); let querySystemLocationData = sqlite.querySystemLocationData; let querySystemLockData = sqlite.querySystemLockData; let querySystemSchedulerData = sqlite.querySystemSchedulerData; let queryConfigSysEventAppName = sqlite.queryConfigEnergyAppName; let location = [ { ts: 100652222, eventName: 'GNSS_STATE', appKey: 'TYPE', Value: '1', }, { ts: 3333332224, eventName: 'GNSS_STATE', appKey: 'TAG', Value: '2', }, ]; let lock = [ { ts: 96555551, eventName: 'POWER_RUNNINGLOCK', appKey: 'TYPE', Value: '1', }, { ts: 333234222, eventName: 'POWER_RUNNINGLOCK', appKey: 'TAG', Value: '2', }, ]; let work = [ { ts: 100593835619, eventName: 'WORK_ADD', appKey: 'TYPE', Value: '1', }, { ts: 2315652241, eventName: 'WORK_STOP', appKey: 'TAG', Value: '2', }, ]; let process = [ { process_name: 'process1', }, ]; querySystemLocationData.mockResolvedValue(location); querySystemLockData.mockResolvedValue(lock); querySystemSchedulerData.mockResolvedValue(work); queryConfigSysEventAppName.mockResolvedValue(process); it('SpHiSysEnergyChartTest01', function () { spHiSysEnergyChart.init(); expect(SpHiSysEnergyChart.app_name).toBeUndefined(); }); it('SpHiSysEnergyChartTest04', function () { let result = [ { startNS: 33255112, eventName: 'POWER_IDE_AUDIO', appKey: 'APPNAME', eventValue: 'com.example.himusicdemo,com.example.himusicdemo_js,com.example.himusicdemo_app', }, { startNS: 5999127352, eventName: 'POWER_IDE_AUDIO', appKey: 'BACKGROUND_ENERGY', eventValue: '854,258,141', }, { startNS: 223224352, eventName: 'POWER_IDE_BLUETOOTH', appKey: 'APPNAME', eventValue: 'com.ohos.settings,bt_switch,bt_switch_js,bt_switch_app', }, { startNS: 86222222, eventName: 'POWER_IDE_BLUETOOTH', appKey: 'BACKGROUND_ENERGY', eventValue: '76,12,43,431', }, { startNS: 5999127382, eventName: 'POWER_IDE_CAMERA', appKey: 'APPNAME', eventValue: 'com.ohos.camera,com.ohos.camera_app,com.ohos.camera_js,com.ohos.camera_ts', }, { startNS: 264166822, eventName: 'POWER_IDE_CAMERA', appKey: 'BACKGROUND_ENERGY', eventValue: '375,475,255,963', }, ]; expect(spHiSysEnergyChart.getPowerData(result)).toBeTruthy(); }); it('SpHiSysEnergyChartTest05', function () { expect(spHiSysEnergyChart.getPowerData([])).toBeTruthy(); }); it('SpHiSysEnergyChartTest06', function () { expect(htmlDivElement.onclick).toBe(null); }); });