scoring-defaults-contract.test.js 1.2 KB

123456789101112131415161718192021222324252627
  1. import { describe, expect, it } from 'vitest'
  2. import { readFileSync } from 'node:fs'
  3. import { resolve } from 'node:path'
  4. const page = readFileSync(resolve(process.cwd(), 'src/views/scoring/ScoringEditView.vue'), 'utf8')
  5. const myResult = readFileSync(resolve(process.cwd(), 'src/views/scoring/MyResultView.vue'), 'utf8')
  6. describe('scoring and workspace display defaults', () => {
  7. it('initializes each performance dimension at 60 percent of its full score', () => {
  8. expect(page).toContain('d.maxScore * 0.6')
  9. expect(myResult).toContain('d.maxScore * 0.6')
  10. expect(page).toContain('listForPeriod')
  11. expect(myResult).toContain('listForPeriod')
  12. })
  13. it('limits both bonus and penalty inputs to 20 points', () => {
  14. expect(page).toContain('加分(上限 20)')
  15. expect(page).toMatch(/v-model="form\.bonus"[\s\S]*?:max="20"/)
  16. expect(page).toMatch(/v-model="form\.penalty"[\s\S]*?:max="20"/)
  17. expect(myResult).toContain('加分(上限 20)')
  18. expect(myResult).toContain('扣分(上限 20)')
  19. expect(myResult).toMatch(/v-model="form\.bonus"[\s\S]*?:max="20"/)
  20. expect(myResult).toMatch(/v-model="form\.penalty"[\s\S]*?:max="20"/)
  21. expect(myResult).toContain('allKrs')
  22. expect(myResult).toContain('objective.weight')
  23. })
  24. })