import assert from 'node:assert/strict' import { readFileSync } from 'node:fs' import test from 'node:test' import { fileURLToPath } from 'node:url' import { departmentRangeOptions } from '../src/data/metrics.js' const overviewView = readFileSync( fileURLToPath(new URL('../src/views/OverviewView.vue', import.meta.url)), 'utf8' ) const overviewViewModel = readFileSync( fileURLToPath(new URL('../src/composables/useOverviewView.js', import.meta.url)), 'utf8' ) const analyticsService = readFileSync( fileURLToPath(new URL('../src/services/analytics.js', import.meta.url)), 'utf8' ) const barChart = readFileSync( fileURLToPath(new URL('../src/components/charts/BarChart.vue', import.meta.url)), 'utf8' ) test('finance dashboard ranking range options support month quarter year and all', () => { assert.deepEqual(departmentRangeOptions, ['本月', '本季度', '本年', '全部']) assert.match(analyticsService, /department_employee_mix/) assert.match(analyticsService, /departmentEmployeeMix/) assert.match(analyticsService, /department_range/) }) test('finance dashboard renders shared ranking filters and department employee mix chart', () => { assert.match(overviewView, /

部门报销排行/) assert.match(overviewView, /aria-label="部门排行时间范围"/) assert.match(overviewView, /

个人报销排行/) assert.match(overviewView, /aria-label="个人排行时间范围"/) assert.doesNotMatch(overviewView, /个人报销排行(本月)/) assert.match(overviewView, /

高额单据/) assert.doesNotMatch(overviewView, /本月高额单据/) assert.match(overviewView, /class="top-claim-split"/) assert.match(overviewView, /departmentEmployeeLegend/) assert.match(overviewView, /departmentEmployeeCenterValue/) assert.match(overviewViewModel, /financeDepartmentEmployeeMix/) assert.match(overviewViewModel, /departmentEmployeeLegend/) assert.match(overviewViewModel, /employeeCount/) }) test('finance ranking bar chart can display ranking metadata', () => { assert.match(barChart, /rank-meta/) assert.match(barChart, /item\.meta/) assert.match(overviewViewModel, /meta: `\$\{Number\(item\.employeeCount/) assert.match(overviewViewModel, /meta: `\$\{item\.department/) })