2023-02-02 09:51:11 +08:00
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 = {
2023-02-17 15:28:43 +08:00
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 : 1173511643475208200 , eventSeverity : 'critical' , eventKey : '114.114.114.114 dns error' , eventType : 'dns error' } , { eventId : 1173504415263352800 , eventSeverity : 'high' , eventKey : '116.178.78.241 http error' , eventType : 'http error' } , { eventId : 1173492761289025500 , eventSeverity : 'medium' , eventKey : '223.6.6.6 dns error' , eventType : 'dns error' } , { eventId : 1173489002890651600 , eventSeverity : 'low' , eventKey : '114.114.114.114 dns error' , eventType : 'dns error' } , { eventId : 1173482380537620500 , eventSeverity : 'info' , eventKey : '1.1.1.2 dns error' , eventType : 'http error' } , { eventId : 1173482380537620500 , 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' }
2023-02-02 09:51:11 +08:00
}
// 下钻
const mockGet1 = {
2023-02-17 15:28:43 +08:00
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 : 1132790825086844900 , eventSeverity : 'critical' , eventType : 'http error' , startTime : 1672802700 } , { eventId : 1132132403379142700 , eventSeverity : 'high' , eventType : 'dns error' , startTime : 1672763400 } , { eventId : 1131441760155689000 , eventSeverity : 'low' , eventType : 'dns error' , startTime : 1672722300 } , { eventId : 1131411523384598500 , eventSeverity : 'medium' , eventType : 'http error' , startTime : 1672720500 } , { eventId : 1131390214323789800 , eventSeverity : 'info' , eventType : 'dns error' , startTime : 1672719300 } , { eventId : 1131306200132968400 , 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' }
2023-02-02 09:51:11 +08:00
}
const query = {
2023-02-17 15:28:43 +08:00
curTab : 'country' ,
dimensionType : 'ip' ,
fourthMenu : '116.178.214.84' ,
fourthPanel : '8' ,
networkOverviewBeforeTab : 'ip' ,
panelName : '116.178.214.84' ,
2023-02-02 09:51:11 +08:00
queryCondition : "common_client_ip='116.178.214.84' OR common_server_ip='116.178.214.84'" ,
2023-02-17 15:28:43 +08:00
t : '1675236779453' ,
tabIndex : '1' ,
tabOperationBeforeType : '' ,
tabOperationType : '4' ,
thirdMenu : 'network.ips' ,
thirdPanel : '12'
2023-02-02 09:51:11 +08:00
}
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 ) )
} )
} )