This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
cyber-narrator-cn-ui/test/views/charts2/charts/linkMonitor/LinkBlock.test.js

164 lines
6.8 KiB
JavaScript
Raw Normal View History

2023-02-02 18:14:20 +08:00
import linkBlock from '@/views/charts2/charts/linkMonitor/LinkBlock'
import { mount } from '@vue/test-utils'
import axios from 'axios'
2023-02-27 16:01:25 +08:00
import { mockData, linkInfoData } from './MockData/LinkBlock'
const mockGet1 = mockData.common.data1
const mockGet2 = mockData.common.data2
2023-02-02 18:14:20 +08:00
const linkInfo = JSON.stringify(linkInfoData)
const timeFilter = {
dateRangeValue: -1,
startTime: 1673244000000,
endTime: 1673247600000
}
var wrapper = null
/**
* 进行axios请求并挂载vue实例
2023-02-27 16:01:25 +08:00
*
2023-02-02 18:14:20 +08:00
*/
2023-02-27 16:01:25 +08:00
function axiosPostAndMounted (list1, list2) {
2023-02-02 18:14:20 +08:00
require('vue-router').useRoute.mockReturnValue({ query: {} })
2023-02-27 16:01:25 +08:00
const data1 = list1 || mockGet1
const data2 = list2 || mockGet2
2023-02-02 18:14:20 +08:00
// 模拟axios返回数据
axios.get.mockImplementation(url => {
switch (url) {
case '/interface/link/overview/analysis':
2023-02-27 16:01:25 +08:00
return Promise.resolve(data1)
2023-02-02 18:14:20 +08:00
case '/interface/link/overview/nextHopAnalysis':
2023-02-27 16:01:25 +08:00
return Promise.resolve(data2)
2023-02-02 18:14:20 +08:00
}
})
// 模拟localStorage获取数据
// eslint-disable-next-line no-proto
2023-02-27 16:01:25 +08:00
jest.spyOn(localStorage.__proto__, 'getItem').mockImplementation(() => linkInfo)
2023-02-02 18:14:20 +08:00
// 加载vue组件获得实例
wrapper = mount(linkBlock, {
propsData: {
timeFilter
}
})
}
describe('views/charts2/charts/linkMonitor/LinkBlock.vue测试', () => {
test('测试链路蜂窝图和下一跳蜂窝图从大到小排列', async () => {
axiosPostAndMounted()
// 延迟等待渲染。使用wrapper.vm.$nextTick有时不管用例如组件中使用了setTimeout的时候
await new Promise(resolve => setTimeout(() => {
const linkBlockTotal0 = wrapper.get('[test-id="linkBlockTotal0"]')
const linkBlockTotal1 = wrapper.get('[test-id="linkBlockTotal1"]')
const linkBlockTotal2 = wrapper.get('[test-id="linkBlockTotal2"]')
const linkBlockTotal3 = wrapper.get('[test-id="linkBlockTotal3"]')
const linkBlockTotal4 = wrapper.get('[test-id="linkBlockTotal4"]')
const linkBlockTotal5 = wrapper.get('[test-id="linkBlockTotal5"]')
const linkBlockTotal6 = wrapper.get('[test-id="linkBlockTotal6"]')
const linkBlockTotal7 = wrapper.get('[test-id="linkBlockTotal7"]')
const linkBlockTotal8 = wrapper.get('[test-id="linkBlockTotal8"]')
const linkBlockTotal9 = wrapper.get('[test-id="linkBlockTotal9"]')
expect(linkBlockTotal0.text()).toBe('13.88 Mbps')
expect(linkBlockTotal1.text()).toBe('11.99 Mbps')
expect(linkBlockTotal2.text()).toBe('11.86 Mbps')
expect(linkBlockTotal3.text()).toBe('10.56 Mbps')
expect(linkBlockTotal4.text()).toBe('10.49 Mbps')
expect(linkBlockTotal5.text()).toBe('10.31 Mbps')
expect(linkBlockTotal6.text()).toBe('10.19 Mbps')
expect(linkBlockTotal7.text()).toBe('10.14 Mbps')
expect(linkBlockTotal8.text()).toBe('9.85 Mbps')
expect(linkBlockTotal9.text()).toBe('9.54 Mbps')
const nextHopTotal0 = wrapper.get('[test-id="nextHopTotal0"]')
const nextHopTotal1 = wrapper.get('[test-id="nextHopTotal1"]')
const nextHopTotal2 = wrapper.get('[test-id="nextHopTotal2"]')
expect(nextHopTotal0.text()).toBe('67.97 Mbps')
expect(nextHopTotal1.text()).toBe('30.35 Mbps')
expect(nextHopTotal2.text()).toBe('10.49 Mbps')
resolve()
}, 200))
})
2023-02-27 16:01:25 +08:00
test('链路蜂窝图和下一跳蜂窝图均无数据', async () => {
const list1 = mockData.empty.data1
const list2 = mockData.empty.data2
2023-02-02 18:14:20 +08:00
2023-02-27 16:01:25 +08:00
axiosPostAndMounted(list1, list2)
2023-02-02 18:14:20 +08:00
await new Promise(resolve => setTimeout(() => {
2023-02-27 16:01:25 +08:00
const linkBlockNoData = wrapper.get('[test-id="linkBlockNoData"]')
const nextHpNoData = wrapper.get('[test-id="nextHpNoData"]')
2023-02-02 18:14:20 +08:00
2023-02-27 16:01:25 +08:00
expect(linkBlockNoData.text()).toBe('npm.noData')
expect(nextHpNoData.text()).toBe('npm.noData')
2023-02-02 18:14:20 +08:00
resolve()
}, 200))
})
2023-02-27 16:01:25 +08:00
test('链路蜂窝图上行流量大数值', async () => {
const list1 = mockData.boundary.data1
2023-02-02 18:14:20 +08:00
2023-02-27 16:01:25 +08:00
axiosPostAndMounted(list1)
2023-02-02 18:14:20 +08:00
await new Promise(resolve => setTimeout(() => {
const linkBlockTotal0 = wrapper.get('[test-id="linkBlockTotal0"]')
const linkBlockEgressUsage0 = wrapper.get('[test-id="linkBlockEgressUsage0"]')
2023-02-27 16:01:25 +08:00
const linkBlockEgressUsage1 = wrapper.get('[test-id="linkBlockEgressUsage1"]')
const linkBlockEgressUsage2 = wrapper.get('[test-id="linkBlockEgressUsage2"]')
const linkBlockEgressUsage3 = wrapper.get('[test-id="linkBlockEgressUsage3"]')
const linkBlockEgressUsage4 = wrapper.get('[test-id="linkBlockEgressUsage4"]')
const linkBlockEgressUsage5 = wrapper.get('[test-id="linkBlockEgressUsage5"]')
const linkBlockEgressUsage6 = wrapper.get('[test-id="linkBlockEgressUsage6"]')
const linkBlockEgressUsage7 = wrapper.get('[test-id="linkBlockEgressUsage7"]')
const linkBlockEgressUsage8 = wrapper.get('[test-id="linkBlockEgressUsage8"]')
const linkBlockEgressUsage9 = wrapper.get('[test-id="linkBlockEgressUsage9"]')
// 超大流量时total显示
2023-02-02 18:14:20 +08:00
expect(linkBlockTotal0.text()).toBe('100 Gbps')
2023-02-27 16:01:25 +08:00
// 超大上行流量,上行占比情况
2023-02-02 18:14:20 +08:00
expect(linkBlockEgressUsage0.text()).toBe('100.00%')
2023-02-27 16:01:25 +08:00
expect(linkBlockEgressUsage1.text()).toBe('100.00%')
expect(linkBlockEgressUsage2.text()).toBe('100.00%')
expect(linkBlockEgressUsage3.text()).toBe('100.00%')
expect(linkBlockEgressUsage4.text()).toBe('100.00%')
expect(linkBlockEgressUsage5.text()).toBe('100.00%')
expect(linkBlockEgressUsage6.text()).toBe('100.00%')
expect(linkBlockEgressUsage7.text()).toBe('100.00%')
expect(linkBlockEgressUsage8.text()).toBe('100.00%')
expect(linkBlockEgressUsage9.text()).toBe('100.00%')
resolve()
}, 200))
})
test('下一跳蜂窝图下行流量大数值', async () => {
const list1 = mockData.common.data1
const list2 = mockData.boundary.data2
axiosPostAndMounted(list1, list2)
await new Promise(resolve => setTimeout(() => {
const nextHopTotal0 = wrapper.get('[test-id="nextHopTotal0"]')
const nextHopIngressUsage0 = wrapper.get('[test-id="nextHopIngressUsage0"]')
const nextHopIngressUsage1 = wrapper.get('[test-id="nextHopIngressUsage1"]')
const nextHopIngressUsage2 = wrapper.get('[test-id="nextHopIngressUsage2"]')
const nextHopEgressUsage0 = wrapper.get('[test-id="nextHopEgressUsage0"]')
const nextHopEgressUsage1 = wrapper.get('[test-id="nextHopEgressUsage1"]')
const nextHopEgressUsage2 = wrapper.get('[test-id="nextHopEgressUsage2"]')
// 超大流量时total显示
expect(nextHopTotal0.text()).toBe('30 Tbps')
// 超大上行流量,上行、下行占比情况
expect(nextHopEgressUsage0.text()).toBe('0%')
expect(nextHopEgressUsage1.text()).toBe('0%')
expect(nextHopEgressUsage2.text()).toBe('0%')
expect(nextHopIngressUsage0.text()).toBe('100.00%')
expect(nextHopIngressUsage1.text()).toBe('100.00%')
expect(nextHopIngressUsage2.text()).toBe('100.00%')
2023-02-02 18:14:20 +08:00
resolve()
}, 200))
})
})