waterFacilityStatistics.test.mjs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import test from 'node:test'
  2. import assert from 'node:assert/strict'
  3. import fs from 'node:fs'
  4. import { buildPipeNetworkStatisticsQuery } from '../src/utils/waterFacilityStatisticsModel.js'
  5. test('statistics query mirrors dashboard and export filters', () => {
  6. assert.deepEqual(
  7. buildPipeNetworkStatisticsQuery({
  8. facilityTypes: ['plant', 'pipe', ''],
  9. status: '1'
  10. }),
  11. { facilityTypes: 'plant,pipe', status: '1' }
  12. )
  13. })
  14. test('statistics query omits empty filters instead of requesting empty datasets', () => {
  15. assert.deepEqual(buildPipeNetworkStatisticsQuery(), {})
  16. assert.deepEqual(buildPipeNetworkStatisticsQuery({ facilityTypes: ['', ' '], status: '' }), {})
  17. })
  18. test('statistics page prevents empty facility-type requests and export', () => {
  19. const source = fs.readFileSync(
  20. 'src/views/subSystem/waterSupply/components/WaterFacilityDashboard.vue',
  21. 'utf8'
  22. )
  23. assert.match(source, /buildPipeNetworkStatisticsQuery/u)
  24. assert.match(source, /:disabled="!selectedTypes\.length"/u)
  25. assert.match(source, /请至少选择一类设施/u)
  26. assert.match(source, /if \(!selectedTypes\.value\.length\)/u)
  27. })
  28. test('statistics status filter follows the facility status contract', () => {
  29. const source = fs.readFileSync(
  30. 'src/views/subSystem/waterSupply/components/WaterFacilityDashboard.vue',
  31. 'utf8'
  32. )
  33. assert.match(source, /<el-option label="正常" value="0" \/><el-option label="异常" value="1" \/>/u)
  34. assert.doesNotMatch(source, /value="2"/u)
  35. })