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

const appShellView = readFileSync(
  fileURLToPath(new URL('../src/views/AppShellRouteView.vue', import.meta.url)),
  'utf8'
)
const appCss = readFileSync(
  fileURLToPath(new URL('../src/assets/styles/app.css', import.meta.url)),
  'utf8'
)
const assistantResponsiveCss = readFileSync(
  fileURLToPath(new URL('../src/assets/styles/views/travel-reimbursement-create-view-part4.css', import.meta.url)),
  'utf8'
)

test('手机浏览器存在应用导航入口', () => {
  assert.match(appShellView, /class="mobile-hamburger-btn"/)
  assert.match(appShellView, /aria-label="打开移动端导航"/)
  assert.match(appShellView, /:aria-expanded="mobileSidebarOpen \? 'true' : 'false'"/)
  assert.match(appShellView, /@click="mobileSidebarOpen = true"/)

  assert.match(appCss, /\.mobile-hamburger-btn\s*{\s*display:\s*none;/s)
  assert.match(appCss, /@media \(max-width:\s*760px\)[\s\S]*\.mobile-hamburger-btn\s*{[\s\S]*display:\s*flex;/)
})

test('报销智能体在手机浏览器下使用全屏工作台和稳定输入区', () => {
  const mobileBlockStart = assistantResponsiveCss.indexOf('@media (max-width: 760px)')
  assert.notEqual(mobileBlockStart, -1)
  const mobileBlock = assistantResponsiveCss.slice(mobileBlockStart)

  assert.match(mobileBlock, /:global\(\.assistant-el-overlay \.el-overlay-dialog\)[\s\S]*padding:\s*0;/)
  assert.match(mobileBlock, /\.assistant-modal-stage\s*{[\s\S]*height:\s*100dvh;[\s\S]*border:\s*0;/)
  assert.match(mobileBlock, /\.assistant-layout\s*{[\s\S]*grid-template-columns:\s*minmax\(0,\s*1fr\);/)
  assert.match(mobileBlock, /\.dialog-panel\s*{[\s\S]*border:\s*0;[\s\S]*border-radius:\s*0;/)
  assert.match(mobileBlock, /\.insight-panel-shell\s*{[\s\S]*position:\s*absolute;[\s\S]*transform:\s*translateX\(100%\);/)
  assert.match(mobileBlock, /\.assistant-layout\.has-insight \.insight-panel-shell\s*{[\s\S]*transform:\s*translateX\(0\);/)
  assert.match(mobileBlock, /\.composer-row\s*{[\s\S]*display:\s*grid;[\s\S]*grid-template-columns:\s*minmax\(0,\s*1fr\) var\(--composer-control-size,\s*40px\);/)
  assert.match(mobileBlock, /\.composer-leading-actions\s*{[\s\S]*grid-column:\s*1 \/ -1;[\s\S]*grid-template-columns:\s*repeat\(3,\s*minmax\(0,\s*1fr\)\);/)
})
