1/* 2 * Copyright (C) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15import { TabPaneHisysEvents } from '../../../../../../src/trace/component/trace/sheet/hisysevent/TabPaneHisysEvents'; 16import { LitPageTable } from '../../../../../../src/base-ui/table/LitPageTable'; 17 18jest.mock('../../../../../../src/trace/component/trace/base/TraceRow', () => { 19 return {}; 20}); 21const sqlite = require('../../../../../../src/trace/database/sql/Perf.sql'); 22jest.mock('../../../../../../src/trace/database/sql/Perf.sql'); 23const clockSqlite = require('../../../../../../src/trace/database/sql/Clock.sql'); 24jest.mock('../../../../../../src/trace/database/sql/Clock.sql'); 25window.ResizeObserver = 26 window.ResizeObserver || 27 jest.fn().mockImplementation(() => ({ 28 disconnect: jest.fn(), 29 observe: jest.fn(), 30 unobserve: jest.fn(), 31 })); 32 33describe('TabPaneHisysEvents Test', () => { 34 let hiSysEvent = sqlite.queryHiSysEventTabData; 35 let eventTabData = [ 36 { 37 id: 1, 38 domain: "domain", 39 eventName: "eventName", 40 eventType: "eventType", 41 tz: "", 42 pid: 567, 43 tid: 45, 44 uid: 98, 45 info: "", 46 level: "MINOR", 47 seq: 92803, 48 contents: "{'LEVEL':126}", 49 startTs: 2588, 50 dur: 2584, 51 depth: 0 52 }, 53 ]; 54 hiSysEvent.mockResolvedValue(eventTabData); 55 let MockRealTime = clockSqlite.queryRealTime; 56 let Realtime = [ 57 { 58 ts: 1000, 59 clock_name: 'realtime', 60 }, 61 { 62 ts: 2000, 63 clock_name: 'boottime', 64 }]; 65 MockRealTime.mockResolvedValue(Realtime); 66 67 it('TabPaneHisysEvents01 ', function () { 68 let tabPaneHisysEvents = new TabPaneHisysEvents(); 69 let tabData = { 70 hiSysEvents: [{ 71 id: 1, 72 domain: 'DISPLAY', 73 eventName: 'AMBIENT_LIGHT', 74 eventType: 2, 75 ts: 2797000000, 76 tz: '23925', 77 pid: 23925, 78 tid: 24086, 79 uid: 5523, 80 info: '', 81 level: 'MINOR', 82 seq: '92839', 83 contents: '{"LEVEL":126}', 84 dur: 0, 85 depth: 0, 86 }] 87 }; 88 tabPaneHisysEvents.hiSysEventTable = new LitPageTable(); 89 tabPaneHisysEvents.data = tabData.hiSysEvents; 90 expect(tabPaneHisysEvents.data).toBeUndefined(); 91 }); 92 it('TabPaneHisysEvents02 ', function () { 93 let tabPaneHisysEvents = new TabPaneHisysEvents(); 94 const domainValue = 'DISPLAY'; 95 const tagElement = tabPaneHisysEvents.buildTag(domainValue); 96 expect(tagElement.className).toBe('tagElement'); 97 expect(tagElement.id).toBe(domainValue); 98 const tag = tagElement.querySelector('.tag'); 99 expect(tag.innerHTML).toBe(domainValue); 100 const closeButton = tagElement.querySelector('lit-icon'); 101 expect(closeButton.getAttribute('name')).toBe('close-light'); 102 expect(closeButton.style.color).toBe('rgb(255, 255, 255)'); 103 }); 104 it('TabPaneHisysEvents03', () => { 105 let tabPaneHisysEvents = new TabPaneHisysEvents(); 106 tabPaneHisysEvents.refreshEventsTitle = jest.fn(); 107 expect(tabPaneHisysEvents.updateData()).toBeUndefined(); 108 }); 109 it('TabPaneHisysEvents04', () => { 110 let tabPaneHisysEvents = new TabPaneHisysEvents(); 111 expect(tabPaneHisysEvents.filterData()).toBeTruthy(); 112 }); 113 it('TabPaneHisysEvents05', () => { 114 let tabPaneHisysEvents = new TabPaneHisysEvents(); 115 expect(tabPaneHisysEvents.updateDetail()).toBeUndefined(); 116 }); 117 it('TabPaneHisysEvents06', () => { 118 let tabPaneHisysEvents = new TabPaneHisysEvents(); 119 let hisysEventSource = [ 120 {key: 'A', sort: 1}, 121 {key: 'B', sort: 2}, 122 {key: 'C', sort: 3}, 123 ] 124 let hiSysEventTable = {recycleDataSource: []}; 125 tabPaneHisysEvents.sortByColumn.call({hisysEventSource, hiSysEventTable}, {key: 'key', sort: 1, type: 'number'}); 126 expect(hisysEventSource).toEqual([ 127 {key: 'A', sort: 1}, 128 {key: 'B', sort: 2}, 129 {key: 'C', sort: 3}, 130 ]); 131 expect(hiSysEventTable.recycleDataSource).toEqual([ 132 {key: 'A', sort: 1}, 133 {key: 'B', sort: 2}, 134 {key: 'C', sort: 3}, 135 ]); 136 }); 137 it('TabPaneHisysEvents07', () => { 138 let tabPaneHisysEvents = new TabPaneHisysEvents(); 139 tabPaneHisysEvents.baseTime = ''; 140 tabPaneHisysEvents.currentDetailList = [{ 141 key: 'key', 142 value: 'value' 143 }]; 144 tabPaneHisysEvents.realTime = 0; 145 tabPaneHisysEvents.changeInput = document.createElement('input'); 146 tabPaneHisysEvents.detailsTbl = document.createElement('table'); 147 tabPaneHisysEvents.slicerTrack = document.createElement('div'); 148 tabPaneHisysEvents.boxDetails = document.createElement('div'); 149 tabPaneHisysEvents.detailbox = document.createElement('div'); 150 const data = { 151 contents: JSON.stringify({ 152 key1: 'value1', 153 key2: 'value2', 154 INPUT_TIME: '1234567890' 155 }) 156 }; 157 tabPaneHisysEvents.convertData(data); 158 expect(tabPaneHisysEvents.baseTime).toBe('1234567890000000000'); 159 expect(tabPaneHisysEvents.changeInput.value).toBe('1234567890000000000'); 160 expect(tabPaneHisysEvents.slicerTrack.style.visibility).toBe('visible'); 161 expect(tabPaneHisysEvents.detailsTbl.style.paddingLeft).toBe('20px'); 162 expect(tabPaneHisysEvents.boxDetails.style.width).toBe('65%'); 163 expect(tabPaneHisysEvents.detailbox.style.display).toBe('block'); 164 expect(tabPaneHisysEvents.detailsTbl.recycleDataSource).toEqual([ 165 {key: 'key', value: 'value'}, 166 {key: 'key1', value: 'value1'}, 167 {key: 'key2', value: 'value2'}, 168 {key: 'INPUT_TIME', value: '1234567890000000000'} 169 ]); 170 }); 171 it('TabPaneHisysEvents08 ', function () { 172 let tabPaneHisysEvents = new TabPaneHisysEvents(); 173 let changeInput = { 174 value: '', 175 }; 176 let mockUpdateDetail = jest.fn(); 177 changeInput.value = 'abc'; 178 tabPaneHisysEvents.changeInputEvent.call({changeInput: changeInput, updateDetail: mockUpdateDetail}); 179 expect(changeInput.value).toEqual('abc'); 180 }); 181}); 182