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

const settingsModel = readFileSync(new URL('../src/utils/settingsModelHelper.js', import.meta.url), 'utf8')
const settingsView = readFileSync(new URL('../src/views/SettingsView.vue', import.meta.url), 'utf8')
const llmSettingsPanel = readFileSync(new URL('../src/views/LlmSettingsPanel.vue', import.meta.url), 'utf8')

function testLlmSectionReplacesVlmWithReranker() {
  assert.doesNotMatch(settingsView, /VLM 模型/)
  assert.match(llmSettingsPanel, /Rerank/)
  assert.match(settingsModel, /rerankerProvider/)
}

function testLlmSectionUsesTableAndAddModelDialog() {
  assert.match(llmSettingsPanel, /model-table-toolbar[\s\S]*添加模型/)
  assert.match(llmSettingsPanel, /<table class="model-config-table">/)
  assert.match(llmSettingsPanel, /model-dialog-overlay/)
  assert.match(llmSettingsPanel, /供应商[\s\S]*接口地址[\s\S]*API Key[\s\S]*model_id[\s\S]*模型类型/)
  assert.match(llmSettingsPanel, /大语言模型[\s\S]*Embedding[\s\S]*Rerank/)
}

function testSettingsModelKeepsExtensibleModelRows() {
  assert.match(settingsModel, /models:\s*buildLlmModelRows/)
  assert.match(settingsModel, /buildLlmModelRows/)
}

function run() {
  testLlmSectionReplacesVlmWithReranker()
  testLlmSectionUsesTableAndAddModelDialog()
  testSettingsModelKeepsExtensibleModelRows()
  console.log('settings llm section tests passed')
}

run()
