import NpmRecentEvents from '@/views/charts2/charts/npm/NpmRecentEvents' import { mount } from '@vue/test-utils' import axios from 'axios' import ElementPlus from 'element-plus' // 未下钻 const mockGet = { data: {"status":200,"code":200,"queryKey":"68d8aa5867b08b926b5bd38c36add9e5","success":true,"message":null,"statistics":{"elapsed":0,"rows_read":2,"result_size":550,"result_rows":5},"job":null,"formatType":"json","meta":[{"name":"event_id","type":"long","category":"Metric"},{"name":"event_severity","type":"string","category":"Metric"},{"name":"event_key","type":"string","category":"Metric"},{"name":"event_type","type":"string","category":"Metric"}],"data":{"resultType":"table","result":[{"eventId":1173511643475208192,"eventSeverity":"critical","eventKey":"114.114.114.114 dns error","eventType":"dns error"},{"eventId":1173504415263352832,"eventSeverity":"high","eventKey":"116.178.78.241 http error","eventType":"http error"},{"eventId":1173492761289025537,"eventSeverity":"medium","eventKey":"223.6.6.6 dns error","eventType":"dns error"},{"eventId":1173489002890651648,"eventSeverity":"low","eventKey":"114.114.114.114 dns error","eventType":"dns error"},{"eventId":1173482380537620480,"eventSeverity":"info","eventKey":"1.1.1.2 dns error","eventType":"http error"},{"eventId":1173482380537620481,"eventSeverity":"critical","eventKey":"1.1.1.2 dns error","eventType":"dns error"}]},"originalUrl":"http://192.168.44.55:9999?query=SELECT%20event_id%20AS%20event_id%2Cevent_severity%20AS%20event_severity%2C%20event_key%20AS%20event_key%2C%20event_type%20AS%20event_type%20FROM%20performance_event%20WHERE%20start_time%20%3E%3D%201675227528%20AND%20end_time%20%3C%201675231128%20ORDER%20BY%20start_time%20DESC%20%20LIMIT%208%20&format=json&option=real-time","msg":"OK"} } // 下钻 const mockGet1 = { data: {"status":200,"code":200,"queryKey":"fc0bd92bf3b48a37310d5c004d8b7a7b","success":true,"message":null,"statistics":{"elapsed":0,"rows_read":2,"result_size":689,"result_rows":7},"job":null,"formatType":"json","meta":[{"name":"event_id","type":"long","category":"Metric"},{"name":"event_severity","type":"string","category":"Metric"},{"name":"event_type","type":"string","category":"Metric"},{"name":"start_time","type":"long","category":"Metric"}],"data":{"resultType":"table","result":[{"eventId":1132790825086844928,"eventSeverity":"critical","eventType":"http error","startTime":1672802700},{"eventId":1132132403379142657,"eventSeverity":"high","eventType":"dns error","startTime":1672763400},{"eventId":1131441760155688960,"eventSeverity":"low","eventType":"dns error","startTime":1672722300},{"eventId":1131411523384598528,"eventSeverity":"medium","eventType":"http error","startTime":1672720500},{"eventId":1131390214323789824,"eventSeverity":"info","eventType":"dns error","startTime":1672719300},{"eventId":1131306200132968450,"eventSeverity":"critical","eventType":"http error","startTime":1672714200}]},"originalUrl":"http://192.168.44.55:9999?query=SELECT%20event_id%20AS%20event_id%2Cevent_severity%20AS%20event_severity%2C%20event_type%20AS%20event_type%2C%20start_time%20AS%20start_time%20FROM%20performance_event%20WHERE%20start_time%20%3E%3D%201672675200%20AND%20start_time%20%3C%201677513600%20AND%20server_ip%20%3D%20%27116.178.236.216%27%20ORDER%20BY%20start_time%20DESC&format=json&option=real-time","msg":"OK"} } const query = { curTab: "country", dimensionType: "ip", fourthMenu: "116.178.214.84", fourthPanel: "8", networkOverviewBeforeTab: "ip", panelName: "116.178.214.84", queryCondition: "common_client_ip='116.178.214.84' OR common_server_ip='116.178.214.84'", t: "1675236779453", tabIndex: "1", tabOperationBeforeType: "", tabOperationType: "4", thirdMenu: "network.ips", thirdPanel: "12" } const timeFilter = { dateRangeValue: -1, startTime: 1675043912, endTime: 1675047512 } describe('views/charts2/charts/npm/NpmRecentEvents.vue测试', () => { test('npm events 近期事件表格 未下钻', async () => { require('vue-router').useRoute.mockReturnValue({ query: {} }) // 模拟 axios 返回数据 axios.get.mockResolvedValue(mockGet) const wrapper = mount(NpmRecentEvents, { propsData: { timeFilter }, global: { plugins: [ElementPlus] } }) await new Promise(resolve => setTimeout(() => { const severity0 = wrapper.get('[test-id="eventSeverity-critical-0"]') const severity1 = wrapper.get('[test-id="eventSeverity-high-1"]') const severity2 = wrapper.get('[test-id="eventSeverity-medium-2"]') const severity3 = wrapper.get('[test-id="eventSeverity-low-3"]') const severity4 = wrapper.get('[test-id="eventSeverity-info-4"]') const severity5 = wrapper.get('[test-id="eventSeverity-critical-5"]') expect(severity0.text()).toEqual('critical') expect(severity1.text()).toEqual('high') expect(severity2.text()).toEqual('medium') expect(severity3.text()).toEqual('low') expect(severity4.text()).toEqual('info') expect(severity5.text()).toEqual('critical') expect(severity0.classes()).toContain('critical') expect(severity1.classes()).toContain('high') expect(severity2.classes()).toContain('medium') expect(severity3.classes()).toContain('low') expect(severity4.classes()).toContain('info') expect(severity5.classes()).toContain('critical') const eventKey0 = wrapper.get('[test-id="eventKey-114.114.114.114-0"]') const eventKey1 = wrapper.get('[test-id="eventKey-116.178.78.241-1"]') const eventKey2 = wrapper.get('[test-id="eventKey-223.6.6.6-2"]') const eventKey3 = wrapper.get('[test-id="eventKey-114.114.114.114-3"]') const eventKey4 = wrapper.get('[test-id="eventKey-1.1.1.2-4"]') expect(eventKey0.text()).toEqual('114.114.114.114') expect(eventKey1.text()).toEqual('116.178.78.241') expect(eventKey2.text()).toEqual('223.6.6.6') expect(eventKey3.text()).toEqual('114.114.114.114') expect(eventKey4.text()).toEqual('1.1.1.2') const eventType0 = wrapper.get('[test-id="eventType-dns error-0"]') const eventType1 = wrapper.get('[test-id="eventType-http error-1"]') const eventType2 = wrapper.get('[test-id="eventType-dns error-2"]') const eventType3 = wrapper.get('[test-id="eventType-dns error-3"]') const eventType4 = wrapper.get('[test-id="eventType-http error-4"]') expect(eventType0.text()).toEqual('dns error') expect(eventType1.text()).toEqual('http error') expect(eventType2.text()).toEqual('dns error') expect(eventType3.text()).toEqual('dns error') expect(eventType4.text()).toEqual('http error') resolve() }, 200)) }) test('npm events 近期事件表格 下钻', async () => { require('vue-router').useRoute.mockReturnValue({ query: query }) // 模拟 axios 返回数据 axios.get.mockResolvedValue(mockGet1) const wrapper = mount(NpmRecentEvents, { propsData: { timeFilter }, global: { plugins: [ElementPlus] } }) await new Promise(resolve => setTimeout(() => { const severity0 = wrapper.get('[test-id="eventSeverity-critical-0"]') const severity1 = wrapper.get('[test-id="eventSeverity-high-1"]') const severity2 = wrapper.get('[test-id="eventSeverity-low-2"]') const severity3 = wrapper.get('[test-id="eventSeverity-medium-3"]') const severity4 = wrapper.get('[test-id="eventSeverity-info-4"]') const severity5 = wrapper.get('[test-id="eventSeverity-critical-5"]') expect(severity0.text()).toEqual('critical') expect(severity1.text()).toEqual('high') expect(severity2.text()).toEqual('low') expect(severity3.text()).toEqual('medium') expect(severity4.text()).toEqual('info') expect(severity5.text()).toEqual('critical') expect(severity0.classes()).toContain('critical') expect(severity1.classes()).toContain('high') expect(severity2.classes()).toContain('low') expect(severity3.classes()).toContain('medium') expect(severity4.classes()).toContain('info') expect(severity5.classes()).toContain('critical') const eventType0 = wrapper.get('[test-id="eventType-http error-0"]') const eventType1 = wrapper.get('[test-id="eventType-dns error-1"]') const eventType2 = wrapper.get('[test-id="eventType-dns error-2"]') const eventType3 = wrapper.get('[test-id="eventType-http error-3"]') const eventType4 = wrapper.get('[test-id="eventType-dns error-4"]') expect(eventType0.text()).toEqual('http error') expect(eventType1.text()).toEqual('dns error') expect(eventType2.text()).toEqual('dns error') expect(eventType3.text()).toEqual('http error') expect(eventType4.text()).toEqual('dns error') const startTime0 = wrapper.get('[test-id="startTime-2023-01-04T11:25:00+08:00-0"]') const startTime1 = wrapper.get('[test-id="startTime-2023-01-04T00:30:00+08:00-1"]') const startTime2 = wrapper.get('[test-id="startTime-2023-01-03T13:05:00+08:00-2"]') const startTime3 = wrapper.get('[test-id="startTime-2023-01-03T12:35:00+08:00-3"]') const startTime4 = wrapper.get('[test-id="startTime-2023-01-03T12:15:00+08:00-4"]') expect(startTime0.text()).toEqual('2023-01-04T11:25:00+08:00') expect(startTime1.text()).toEqual('2023-01-04T00:30:00+08:00') expect(startTime2.text()).toEqual('2023-01-03T13:05:00+08:00') expect(startTime3.text()).toEqual('2023-01-03T12:35:00+08:00') expect(startTime4.text()).toEqual('2023-01-03T12:15:00+08:00') resolve() }, 300)) }) })