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/networkOverview/NetworkOverviewApps.test.js
2023-08-28 18:02:25 +08:00

458 lines
19 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import NetworkOverviewApps from '@/views/charts2/charts/networkOverview/NetworkOverviewApps'
import { mount } from '@vue/test-utils'
import axios from 'axios'
import ElementPlus from 'element-plus'
import { mockData } from './mockData/NetworkOverviewApps'
import common from '@/mixins/common'
import chartMixin from '@/views/charts2/chart-mixin'
const chart = mockData.common.chart
const linkInfo = 5
const timeFilter = {
dateRangeValue: -1,
startTime: 1675180800,
endTime: 1675353599
}
let wrapper = null
/**
* 进行axios请求并挂载vue实例
* 模拟localStorage获取数据
* ElementPlus
* @param Metric
*/
function axiosPostAndMounted (Metric, flag, data) {
require('vue-router').useRoute.mockReturnValue({ query: {} })
// eslint-disable-next-line no-proto
jest.spyOn(localStorage.__proto__, 'getItem').mockImplementation(() => linkInfo)
if (flag === 'empty') {
for (let i = 0; i < 8; i++) {
axios.get.mockResolvedValueOnce(data)
}
} else if (flag === 'boundary') {
data.forEach(item => {
axios.get.mockResolvedValueOnce(item)
})
} else {
mockData.common.mockGet.forEach(item => {
axios.get.mockResolvedValueOnce(item)
})
}
wrapper = mount(NetworkOverviewApps, {
propsData: {
timeFilter,
chart,
metric: Metric
},
global: {
plugins: [ElementPlus]
},
data () {
return {
isUnitTesting: true
}
},
mixins: [common, chartMixin]
})
}
describe('views/charts2/charts/networkOverview/NetworkOverviewApps.vue测试', () => {
test('Providers and Applications 列表信息 Metric:Bits/s', async () => {
axiosPostAndMounted()
await new Promise(resolve => setTimeout(async () => {
const testName0 = wrapper.get('[test-id="name0"]')
const testName1 = wrapper.get('[test-id="name1"]')
const testName2 = wrapper.get('[test-id="name6"]')
const testName3 = wrapper.get('[test-id="name7"]')
expect(testName0.text()).toEqual('douyin')
expect(testName1.text()).toEqual('kuaishou')
expect(testName2.text()).toEqual('Alibaba')
expect(testName3.text()).toEqual('Baidu')
//
const testIcon0 = wrapper.get('[test-id="icon0"]')
const testIcon1 = wrapper.get('[test-id="icon1"]')
const testIcon2 = wrapper.get('[test-id="icon6"]')
const testIcon3 = wrapper.get('[test-id="icon7"]')
expect(testIcon0.classes()).toContain('cn-icon-app2')
expect(testIcon1.classes()).toContain('cn-icon-app2')
expect(testIcon2.classes()).toContain('cn-icon-entity')
expect(testIcon3.classes()).toContain('cn-icon-entity')
//
const testrate0 = wrapper.get('[test-id="rate0"]')
const testrate1 = wrapper.get('[test-id="rate1"]')
const testrate2 = wrapper.get('[test-id="rate6"]')
const testrate3 = wrapper.get('[test-id="rate7"]')
expect(testrate0.text()).toEqual('34.15 M')
expect(testrate1.text()).toEqual('9.18 M')
expect(testrate2.text()).toEqual('4.74 M')
expect(testrate3.text()).toEqual('1.27 M')
const testPercent0 = wrapper.get('[test-id="percent0"]')
const testPercent1 = wrapper.get('[test-id="percent3"]')
const testPercent2 = wrapper.get('[test-id="percent6"]')
const testPercent3 = wrapper.get('[test-id="percent7"]')
expect(testPercent0.text()).toEqual('>500.00%')
expect(testPercent1.text()).toEqual('-9.82%')
expect(testPercent2.text()).toEqual('+23.87%')
expect(testPercent3.text()).toEqual('+16.63%')
const testTotal0 = wrapper.get('[test-id="total0"]')
const testTotal1 = wrapper.get('[test-id="total1"]')
const testTotal2 = wrapper.get('[test-id="total6"]')
const testTotal3 = wrapper.get('[test-id="total7"]')
expect(testTotal0.text()).toEqual('686.94 GB')
expect(testTotal1.text()).toEqual('184.70 GB')
expect(testTotal2.text()).toEqual('95.26 GB')
expect(testTotal3.text()).toEqual('25.53 GB')
// 模拟点击 add 新增
const testAdd0 = wrapper.find('[test-id="add"]')
await testAdd0.trigger('click')
expect(wrapper.vm.showAddApp).toBe(true)
await wrapper.vm.$nextTick()
// element drawer
// add provide 列表 图标
// const testProvideIcon0 = wrapper.get('[test-id="provide-icon0"]')
// const testAPPIcon0 = wrapper.get('[test-id="app-icon0"]')
const testProvide0 = wrapper.find('[test-id="provide0"]')
await testProvide0.trigger('click')
expect(testProvide0.classes()).toContain('provide-show')
const testProvideTitle0 = wrapper.get('[test-id="provide-title0"]')
expect(testProvideTitle0.text()).toEqual('Jingdong')
const testProvideRemark0 = wrapper.get('[test-id="provide-remark0"]')
expect(testProvideRemark0.text()).toEqual('JD.com, Inc., also known as Jingdong and formerly called 360buy, is a Chinese e-commerce company headquartered in Beijing. It is one of the two massive B2C online retailers in China by transaction volume and revenue, a member of the Fortune Global 500 and a major competitor to Alibaba-run Tmall.')
const testAppTypeTab1 = wrapper.find('[id="tab-1"]')
await testAppTypeTab1.trigger('click')
expect(parseFloat(wrapper.vm.appTypeTab)).toBe(1)
await wrapper.vm.$nextTick()
const testApp0 = wrapper.find('[test-id="app0"]')
await testApp0.trigger('click')
expect(testApp0.classes()).toContain('app-show')
const testAppTitle0 = wrapper.get('[test-id="app-title0"]')
expect(testAppTitle0.text()).toEqual('avoidr')
const testAppRemark0 = wrapper.get('[test-id="app-remark0"]')
expect(testAppRemark0.text()).toEqual('Avoidr is a free web proxy')
resolve()
}, 200))
})
test('Providers and Applications 列表信息 Metric:Packets/s', async () => {
axiosPostAndMounted('Packets/s')
await new Promise(resolve => setTimeout(async () => {
const testName0 = wrapper.get('[test-id="name0"]')
const testName1 = wrapper.get('[test-id="name1"]')
const testName2 = wrapper.get('[test-id="name6"]')
const testName3 = wrapper.get('[test-id="name7"]')
expect(testName0.text()).toEqual('douyin')
expect(testName1.text()).toEqual('kuaishou')
expect(testName2.text()).toEqual('Alibaba')
expect(testName3.text()).toEqual('Baidu')
//
const testIcon0 = wrapper.get('[test-id="icon0"]')
const testIcon1 = wrapper.get('[test-id="icon1"]')
const testIcon2 = wrapper.get('[test-id="icon6"]')
const testIcon3 = wrapper.get('[test-id="icon7"]')
const testIcon4 = wrapper.get('[test-id="icon2"]')
expect(testIcon0.classes()).toContain('cn-icon-app2')
expect(testIcon1.classes()).toContain('cn-icon-app2')
expect(testIcon4.classes()).toContain('cn-icon-app2')
expect(testIcon2.classes()).toContain('cn-icon-entity')
expect(testIcon3.classes()).toContain('cn-icon-entity')
//
const testrate0 = wrapper.get('[test-id="rate0"]')
const testrate1 = wrapper.get('[test-id="rate1"]')
const testrate2 = wrapper.get('[test-id="rate6"]')
const testrate3 = wrapper.get('[test-id="rate7"]')
const testrate4 = wrapper.get('[test-id="rate2"]')
expect(testrate0.text()).toEqual('31.33 K')
expect(testrate1.text()).toEqual('8.46 K')
expect(testrate2.text()).toEqual('5.01 K')
expect(testrate3.text()).toEqual('1.33 K')
expect(testrate4.text()).toEqual('-')
const testPercent0 = wrapper.get('[test-id="percent0"]')
const testPercent1 = wrapper.get('[test-id="percent3"]')
const testPercent2 = wrapper.get('[test-id="percent6"]')
const testPercent3 = wrapper.get('[test-id="percent7"]')
expect(testPercent0.text()).toEqual('+25.20%')
expect(testPercent1.text()).toEqual('+12.12%')
expect(testPercent2.text()).toEqual('+23.61%')
expect(testPercent3.text()).toEqual('+17.90%')
const testTotal0 = wrapper.get('[test-id="total0"]')
const testTotal1 = wrapper.get('[test-id="total1"]')
const testTotal2 = wrapper.get('[test-id="total6"]')
const testTotal3 = wrapper.get('[test-id="total7"]')
const testTotal4 = wrapper.get('[test-id="total2"]')
expect(testTotal0.text()).toEqual('676.80 M')
expect(testTotal1.text()).toEqual('182.71 M')
expect(testTotal2.text()).toEqual('108.16 M')
expect(testTotal3.text()).toEqual('28.83 M')
expect(testTotal4.text()).toEqual('-')
resolve()
}, 200))
})
test('Providers and Applications 列表信息 Metric:Sessions/s', async () => {
axiosPostAndMounted('Sessions/s')
await new Promise(resolve => setTimeout(async () => {
const testName0 = wrapper.get('[test-id="name0"]')
const testName1 = wrapper.get('[test-id="name1"]')
const testName2 = wrapper.get('[test-id="name6"]')
const testName3 = wrapper.get('[test-id="name7"]')
expect(testName0.text()).toEqual('douyin')
expect(testName1.text()).toEqual('kuaishou')
expect(testName2.text()).toEqual('Alibaba')
expect(testName3.text()).toEqual('Baidu')
//
const testIcon0 = wrapper.get('[test-id="icon0"]')
const testIcon1 = wrapper.get('[test-id="icon1"]')
const testIcon2 = wrapper.get('[test-id="icon6"]')
const testIcon3 = wrapper.get('[test-id="icon7"]')
expect(testIcon0.classes()).toContain('cn-icon-app2')
expect(testIcon1.classes()).toContain('cn-icon-app2')
expect(testIcon2.classes()).toContain('cn-icon-entity')
expect(testIcon3.classes()).toContain('cn-icon-entity')
//
const testrate0 = wrapper.get('[test-id="rate0"]')
const testrate1 = wrapper.get('[test-id="rate1"]')
const testrate2 = wrapper.get('[test-id="rate6"]')
const testrate3 = wrapper.get('[test-id="rate7"]')
expect(testrate0.text()).toEqual('30.96')
expect(testrate1.text()).toEqual('6.24')
expect(testrate2.text()).toEqual('-')
expect(testrate3.text()).toEqual('9.20')
const testPercent0 = wrapper.get('[test-id="percent0"]')
const testPercent1 = wrapper.get('[test-id="percent3"]')
const testPercent2 = wrapper.get('[test-id="percent6"]')
const testPercent3 = wrapper.get('[test-id="percent7"]')
expect(testPercent0.text()).toEqual('+23.64%')
expect(testPercent1.text()).toEqual('+100.00%')
expect(testPercent2.text()).toEqual('-100.00%')
expect(testPercent3.text()).toEqual('+25.00%')
const testTotal0 = wrapper.get('[test-id="total0"]')
const testTotal1 = wrapper.get('[test-id="total1"]')
const testTotal2 = wrapper.get('[test-id="total6"]')
const testTotal3 = wrapper.get('[test-id="total7"]')
expect(testTotal0.text()).toEqual('668.23 K')
expect(testTotal1.text()).toEqual('134.46 K')
expect(testTotal2.text()).toEqual('-')
expect(testTotal3.text()).toEqual('198.26 K')
resolve()
}, 200))
})
test('搜索功能:模糊匹配', async () => {
axiosPostAndMounted()
await new Promise(resolve => setTimeout(async () => {
// 模拟点击 add 新增
const testAdd0 = wrapper.find('[test-id="add"]')
await testAdd0.trigger('click')
expect(wrapper.vm.showAddApp).toBe(true)
await wrapper.vm.$nextTick()
const testSearchInput = wrapper.get('[test-id="search-input"]')
await wrapper.get('input[type="text"]').setValue('sina')
await testSearchInput.trigger('input')
await testAdd0.trigger('click')
expect(wrapper.vm.searcherApp).toEqual('sina')
const testAppTypeTab0 = wrapper.find('[id="tab-0"]')
await testAppTypeTab0.trigger('click')
expect(parseFloat(wrapper.vm.appTypeTab)).toBe(0)
const testProvideTitle0 = wrapper.get('[test-id="provide-title0"]')
expect(testProvideTitle0.text()).toEqual('Sina')
const testProvideRemark0 = wrapper.get('[test-id="provide-remark0"]')
expect(testProvideRemark0.text()).toEqual('Sina Corporation is a Chinese technology company. Sina operates four major business lines: Sina Weibo, Sina Mobile, Sina Online, and Sinanet. Sina has over 100 million registered users worldwide.')
const testAppTypeTab1 = wrapper.find('[id="tab-1"]')
await testAppTypeTab1.trigger('click')
expect(parseFloat(wrapper.vm.appTypeTab)).toBe(1)
const testAppTitle0 = wrapper.get('[test-id="app-title0"]')
expect(testAppTitle0.text()).toEqual('iapp')
const testAppRemark0 = wrapper.get('[test-id="app-remark0"]')
expect(testAppRemark0.text()).toEqual('News site about mobile applications')
resolve()
}, 300))
})
test('鼠标移入、移出、点击事件', async () => {
axiosPostAndMounted()
await new Promise(resolve => setTimeout(async () => {
// 模拟鼠标 移入 移出 显示隐藏更多 icon 图标
const testAppDataCard = wrapper.find('[test-id="app-data-card"]')
await testAppDataCard.trigger('mouseenter')
expect(wrapper.vm.appData[0].showMore).toBe(true)
await testAppDataCard.trigger('mouseleave')
expect(wrapper.vm.appData[0].showMore).toBe(false)
expect(wrapper.vm.appData[0].moreOptions).toBe(false)
// 模拟鼠标移入 移出 显示隐藏下拉内容
const testDark = wrapper.find('[test-id="mouseenter-dark"]')
await testDark.trigger('mouseenter')
expect(wrapper.vm.appData[0].moreOptions).toBe(true)
const testMouseleaveMore = wrapper.find('[test-id="mouseleave-more"]')
await testMouseleaveMore.trigger('mouseleave')
expect(wrapper.vm.appData[0].moreOptions).toBe(false)
// 模拟点击 add 新增
const testAdd0 = wrapper.find('[test-id="add"]')
await testAdd0.trigger('click')
expect(wrapper.vm.showAddApp).toBe(true)
await wrapper.vm.$nextTick()
// 模拟 cancel 取消
const testCancelAdd = wrapper.find('[test-id="cancel-app"]')
await testCancelAdd.trigger('click')
expect(wrapper.vm.showAddApp).toBe(false)
resolve()
}, 500))
})
test('Providers and Applications 列表信息 Metric:Bits/s无数据', async () => {
axiosPostAndMounted('Bits/s', 'empty', mockData.empty)
await new Promise(resolve => setTimeout(async () => {
const testName0 = wrapper.get('[test-id="name0"]')
const testName1 = wrapper.get('[test-id="name1"]')
const testName2 = wrapper.get('[test-id="name6"]')
const testName3 = wrapper.get('[test-id="name7"]')
expect(testName0.text()).toEqual('douyin')
expect(testName1.text()).toEqual('kuaishou')
expect(testName2.text()).toEqual('Alibaba')
expect(testName3.text()).toEqual('Baidu')
const testIcon0 = wrapper.get('[test-id="icon0"]')
const testIcon1 = wrapper.get('[test-id="icon1"]')
const testIcon2 = wrapper.get('[test-id="icon6"]')
const testIcon3 = wrapper.get('[test-id="icon7"]')
expect(testIcon0.classes()).toContain('cn-icon-app2')
expect(testIcon1.classes()).toContain('cn-icon-app2')
expect(testIcon2.classes()).toContain('cn-icon-entity')
expect(testIcon3.classes()).toContain('cn-icon-entity')
//
const testrate0 = wrapper.get('[test-id="rate0"]')
const testrate1 = wrapper.get('[test-id="rate1"]')
const testrate2 = wrapper.get('[test-id="rate6"]')
const testrate3 = wrapper.get('[test-id="rate7"]')
expect(testrate0.text()).toEqual('-')
expect(testrate1.text()).toEqual('-')
expect(testrate2.text()).toEqual('-')
expect(testrate3.text()).toEqual('-')
const testTotal0 = wrapper.get('[test-id="total0"]')
const testTotal1 = wrapper.get('[test-id="total1"]')
const testTotal2 = wrapper.get('[test-id="total6"]')
const testTotal3 = wrapper.get('[test-id="total7"]')
expect(testTotal0.text()).toEqual('-')
expect(testTotal1.text()).toEqual('-')
expect(testTotal2.text()).toEqual('-')
expect(testTotal3.text()).toEqual('-')
// 模拟点击 add 新增
const testAdd0 = wrapper.find('[test-id="add"]')
await testAdd0.trigger('click')
expect(wrapper.vm.showAddApp).toBe(true)
await wrapper.vm.$nextTick()
const noData = wrapper.get('[test-id="noData"]')
expect(noData.text()).toBe('npm.noData')
resolve()
}, 200))
})
test('Providers and Applications 列表信息 Metric:Packets/s 0或大数值', async () => {
axiosPostAndMounted('Packets/s', 'boundary', mockData.boundary.data)
await new Promise(resolve => setTimeout(async () => {
const testName0 = wrapper.get('[test-id="name0"]')
const testName1 = wrapper.get('[test-id="name1"]')
const testName2 = wrapper.get('[test-id="name6"]')
const testName3 = wrapper.get('[test-id="name7"]')
expect(testName0.text()).toEqual('douyin')
expect(testName1.text()).toEqual('kuaishou')
expect(testName2.text()).toEqual('Alibaba')
expect(testName3.text()).toEqual('Baidu')
const testIcon0 = wrapper.get('[test-id="icon0"]')
const testIcon1 = wrapper.get('[test-id="icon1"]')
const testIcon2 = wrapper.get('[test-id="icon6"]')
const testIcon3 = wrapper.get('[test-id="icon7"]')
const testIcon4 = wrapper.get('[test-id="icon2"]')
expect(testIcon0.classes()).toContain('cn-icon-app2')
expect(testIcon1.classes()).toContain('cn-icon-app2')
expect(testIcon4.classes()).toContain('cn-icon-app2')
expect(testIcon2.classes()).toContain('cn-icon-entity')
expect(testIcon3.classes()).toContain('cn-icon-entity')
const testrate0 = wrapper.get('[test-id="rate0"]')
const testrate1 = wrapper.get('[test-id="rate1"]')
const testrate2 = wrapper.get('[test-id="rate6"]')
const testrate3 = wrapper.get('[test-id="rate7"]')
const testrate4 = wrapper.get('[test-id="rate2"]')
expect(testrate0.text()).toEqual('31.33 G')
expect(testrate1.text()).toEqual('84.59 T')
expect(testrate2.text()).toEqual('500.75 K')
expect(testrate3.text()).toEqual('<0.01')
expect(testrate4.text()).toEqual('-')
const testPercent0 = wrapper.get('[test-id="percent0"]')
const testPercent1 = wrapper.get('[test-id="percent1"]')
const testPercent2 = wrapper.get('[test-id="percent6"]')
const testPercent3 = wrapper.get('[test-id="percent7"]')
expect(testPercent0.text()).toEqual('-87.48%')
expect(testPercent1.text()).toEqual('>500.00%')
expect(testPercent2.text()).toEqual('>500.00%')
expect(testPercent3.text()).toEqual('-100.00%')
const testTotal0 = wrapper.get('[test-id="total0"]')
const testTotal1 = wrapper.get('[test-id="total1"]')
const testTotal2 = wrapper.get('[test-id="total6"]')
const testTotal3 = wrapper.get('[test-id="total7"]')
const testTotal4 = wrapper.get('[test-id="total2"]')
expect(testTotal0.text()).toEqual('67.68 P')
expect(testTotal1.text()).toEqual('18.27 P')
expect(testTotal2.text()).toEqual('10.82 P')
expect(testTotal3.text()).toEqual('288.34 T')
expect(testTotal4.text()).toEqual('-')
resolve()
}, 300))
})
})