Files
superwork/vscode/webview-ui/src/codeReader/rewriteRun.test.ts
T

39 lines
2.2 KiB
TypeScript

import type { RewriteRuns } from './rewriteRun'
import { describe, expect, it } from 'vitest'
import { rewriteEnd, rewriteProgress, startRewrite } from './rewriteRun'
const ANCHOR = 'c1'
const QUESTION = '/ecc:writing-code-comments\n\n只按这个技能重写这一段注释。'
describe('重写过程只留在页面上', () => {
it('进行中换上全文和正在读的文件;新的一段正文来了就不再标着上一个文件', () => {
const started = startRewrite(new Map(), ANCHOR)
const reading = rewriteProgress(started, ANCHOR, QUESTION, '', '读取 routes.py')
expect(reading.get(ANCHOR)).toEqual({ question: QUESTION, text: '', status: 'running', activity: '读取 routes.py' })
const writing = rewriteProgress(reading, ANCHOR, QUESTION, '新的注释', undefined)
expect(writing.get(ANCHOR)).toEqual({ question: QUESTION, text: '新的注释', status: 'running' })
})
it('写进文件就拿掉;没写成把原因留在这块上;叫停也留着,不再进行', () => {
const running = rewriteProgress(startRewrite(new Map(), ANCHOR), ANCHOR, QUESTION, '一半', '读取 a.py')
expect(rewriteEnd(running, ANCHOR, 'done').has(ANCHOR)).toBe(false)
const failed = rewriteEnd(running, ANCHOR, 'failed', '模型没有给出注释正文,没有改文件。')
expect(failed.get(ANCHOR)).toMatchObject({ question: QUESTION, text: '一半', status: 'failed', error: '模型没有给出注释正文,没有改文件。' })
expect(rewriteEnd(running, ANCHOR, 'stopped').get(ANCHOR)?.status).toBe('stopped')
})
it('已经结束的,迟到的字不再把过程画出来;正在进行时再点一次也不重开', () => {
const running = startRewrite(new Map(), ANCHOR)
const done = rewriteEnd(running, ANCHOR, 'done')
expect(rewriteProgress(done, ANCHOR, QUESTION, '迟到了').has(ANCHOR)).toBe(false)
expect(startRewrite(running, ANCHOR)).toBe(running)
const failed = rewriteEnd(running, ANCHOR, 'failed', '没写成')
expect(startRewrite(failed, ANCHOR).get(ANCHOR)?.status).toBe('running')
})
it('这一页上没有的结束消息不动原来的', () => {
const runs: RewriteRuns = new Map()
expect(rewriteEnd(runs, ANCHOR, 'failed', '没有')).toBe(runs)
})
})