import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
import test from 'node:test'

const refreshOptions = readFileSync(new URL('../src/utils/refreshIntervalOptions.js', import.meta.url), 'utf8')
const logsView = readFileSync(new URL('../src/views/LogsView.vue', import.meta.url), 'utf8')
const logsScript = readFileSync(new URL('../src/views/scripts/LogsView.js', import.meta.url), 'utf8')
const workRecords = readFileSync(
  new URL('../src/components/audit/DigitalEmployeeWorkRecords.vue', import.meta.url),
  'utf8'
)

test('shared refresh interval options default to 60 seconds', () => {
  assert.match(refreshOptions, /DEFAULT_REFRESH_INTERVAL_MS\s*=\s*60000/)
  for (const value of [1000, 3000, 5000, 10000, 30000, 60000, 180000]) {
    assert.match(refreshOptions, new RegExp(`value:\\s*${value}`))
  }
})

test('system logs list exposes refresh interval control', () => {
  assert.match(logsScript, /refreshInterval\s*=\s*ref\(DEFAULT_REFRESH_INTERVAL_MS\)/)
  assert.match(logsScript, /window\.setInterval\([\s\S]*refreshInterval\.value/)
  assert.match(logsView, /刷新时间 \{\{ refreshIntervalLabel \}\}/)
  assert.match(logsView, /v-for="option in refreshIntervalOptions"/)
  assert.doesNotMatch(logsView, /刷新日志/)
})

test('digital employee work records expose refresh interval control', () => {
  assert.match(workRecords, /refreshInterval\s*=\s*ref\(DEFAULT_REFRESH_INTERVAL_MS\)/)
  assert.match(workRecords, /refreshIntervalPickerOptions\s*=\s*REFRESH_INTERVAL_OPTIONS/)
  assert.match(workRecords, /window\.setInterval\([\s\S]*refreshInterval\.value/)
  assert.match(workRecords, /刷新时间 \$\{refreshIntervalLabel\}/)
  assert.doesNotMatch(workRecords, /AGENT_RUN_POLL_INTERVAL_MS/)
})
