import assert from 'node:assert/strict'
import test from 'node:test'

import {
  buildInlineApplicationDetailAction,
  buildInlineApplicationPreviewActionResultText
} from '../src/composables/workbenchAiMode/workbenchAiApplicationPreviewModel.js'
import {
  AI_APPLICATION_ACTION_SAVE_DRAFT,
  AI_APPLICATION_ACTION_SUBMIT
} from '../src/services/aiApplicationPreviewActions.js'

const draftPayload = {
  claim_no: 'AUKSNUCFD',
  claim_id: 'claim-1001',
  approval_stage: '直属领导审批',
  start_date: '2026-02-20',
  location: '上海辅助国网仿生产服务器',
  reason: '差旅费用申请'
}

test('application result card stays display-only while the detail shortcut keeps navigation', () => {
  const resultText = buildInlineApplicationPreviewActionResultText(AI_APPLICATION_ACTION_SUBMIT, {
    result: { draft_payload: draftPayload }
  })
  const [detailAction] = buildInlineApplicationDetailAction(draftPayload)

  assert.match(resultText, /\| 单据类型 \| 单据编号 \| 单据状态 \| 当前节点 \| 日期 \| 地点 \| 事由 \| 金额 \|/)
  assert.doesNotMatch(resultText, /\| 操作 \|/)
  assert.doesNotMatch(resultText, /\[查看\]/)
  assert.doesNotMatch(resultText, /点击卡片.*操作.*查看/)
  assert.equal(detailAction?.label, '查看单据详情')
  assert.equal(detailAction?.action_type, 'open_application_detail')
  assert.equal(detailAction?.payload?.claim_no, 'AUKSNUCFD')
})

test('saved draft result also avoids the duplicate in-card view guidance', () => {
  const resultText = buildInlineApplicationPreviewActionResultText(AI_APPLICATION_ACTION_SAVE_DRAFT, {
    result: { draft_payload: draftPayload }
  })

  assert.match(resultText, /申请草稿已保存/)
  assert.doesNotMatch(resultText, /\| 操作 \|/)
  assert.doesNotMatch(resultText, /\[查看\]/)
  assert.doesNotMatch(resultText, /点击卡片.*操作.*查看/)
})
