airport-qingdao-vue3/tests/pathConflictDisplay.test.mjs

94 lines
2.8 KiB
JavaScript

import assert from 'node:assert/strict'
import {
getPathConflictDisplayEnabled,
isNewPathConflictPayload,
normalizePathConflictMessage,
} from '../src/utils/pathConflictDisplay.mjs'
assert.equal(getPathConflictDisplayEnabled({}), true)
assert.equal(getPathConflictDisplayEnabled({ pathConflictDisplayEnabled: false }), false)
const status = normalizePathConflictMessage({
type: 'path_conflict_status',
payload: {
conflictPoint: { latitude: 36.1, longitude: 120.2 },
aircraftName: 'A01',
vehicleName: 'V01',
aircraftDistanceToConflictMeters: 120,
vehicleDistanceToConflictMeters: 80,
aircraftAlertThresholdMeters: 200,
vehicleAlertThresholdMeters: 100,
vehicleMovingTowardConflictPoint: true,
directionLockStatus: 'DIRECTION_LOCKED',
calculationStatus: 'MONITORING',
directionLockReason: '',
object1ForwardDistanceMeters: 118,
object2ForwardDistanceMeters: 78,
},
})
assert.equal(status.kind, 'status')
assert.equal(status.title, '计算中')
assert.deepEqual(status.conflictPoint, { latitude: 36.1, longitude: 120.2 })
assert.equal(status.key, 'A01::V01')
assert.equal(status.directionLockText, '方向已锁定')
assert.equal(status.directionLockFailed, false)
assert.equal(status.directionLockReason, '')
assert.equal(status.object1ForwardDistance, 118)
assert.equal(status.object2ForwardDistance, 78)
const directionInvalid = normalizePathConflictMessage({
type: 'path_conflict_status',
payload: {
aircraftName: 'A01',
vehicleName: 'V01',
directionLockStatus: 'DIRECTION_INVALID',
calculationStatus: 'DIRECTION_LOCK_FAILED',
directionLockReason: '冲突点在两侧',
},
})
assert.equal(directionInvalid.directionLockText, '方向无法锁定')
assert.equal(directionInvalid.directionLockFailed, true)
assert.equal(directionInvalid.directionLockReason, '冲突点在两侧')
const resume = normalizePathConflictMessage({
type: 'path_conflict_alert',
payload: {
messageType: 'PATH_CONFLICT_RESUME',
aircraftName: 'A01',
vehicleName: 'V01',
},
})
assert.equal(resume.kind, 'resume')
assert.equal(resume.key, 'A01::V01')
assert.equal(resume.aircraftName, 'A01')
assert.equal(resume.vehicleName, 'V01')
const alert = normalizePathConflictMessage({
type: 'path_conflict_alert',
payload: {
alertLevel: 'EMERGENCY',
conflictPoint: { latitude: 36.1, longitude: 120.2 },
aircraftName: 'A01',
vehicleName: 'V01',
},
})
assert.equal(alert.kind, 'alert')
assert.equal(alert.level, 'EMERGENCY')
assert.equal(alert.title, '紧急告警')
assert.equal(isNewPathConflictPayload({
object1: { objectName: 'V01' },
object2: { objectName: 'V02' },
alertType: 'CONFLICT_WARNING',
}), false)
assert.equal(isNewPathConflictPayload({
aircraftName: 'A01',
vehicleName: 'V01',
conflictPoint: { latitude: 36.1, longitude: 120.2 },
}), true)