✨ feat(vscode): 选工单也列「进行中」列里已经有 PR 的工单(开发完了没走自动审查的),弹框按「审查」「进行中」分组,进审查、刷新、重开窗口按同一条列规则判断
This commit is contained in:
1 parent
f2b17e5389
commit
489d0ef41f
7 files changed
+159
-68
No files matched your search
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { inReviewColumn, prNumberOf, reviewableIssue, reviewablePullRequest, reviewDescription, reviewMessage } from './reviewRules'
|
||||
import { columnLabel, prNumberOf, REVIEW_COLUMNS_TEXT, reviewableIssue, reviewablePullRequest, reviewCandidates, reviewDescription, reviewMessage } from './reviewRules'
|
||||
|
||||
const issue = { number: 446, title: '用户资料:上传头像,收紧非管理员改资料的权限' }
|
||||
|
||||
@@ -10,25 +10,43 @@ describe('审查时的视图标题', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('看板「审查」列', () => {
|
||||
it('只要审查列的,工单号大的在前(和看板列里一样)', () => {
|
||||
describe('选工单弹框列哪些工单', () => {
|
||||
it('「审查」列的都列(没 PR 的也列),「进行中」列的只列有 PR 的,别的列不列', () => {
|
||||
const issues = [
|
||||
{ number: 438, column: 'review' as const },
|
||||
{ number: 452, column: 'review' as const },
|
||||
{ number: 452, column: 'review' as const, pr: '455' },
|
||||
{ number: 451, column: 'in-progress' as const },
|
||||
{ number: 446, column: 'review' as const },
|
||||
{ number: 460, column: 'done' as const },
|
||||
{ number: 449, column: 'in-progress' as const, pr: '450' },
|
||||
{ number: 460, column: 'done' as const, pr: '461' },
|
||||
{ number: 470, column: 'todo' as const, pr: '471' },
|
||||
]
|
||||
expect(inReviewColumn(issues).map(item => item.number)).toEqual([452, 446, 438])
|
||||
expect(reviewCandidates(issues).map(item => item.number)).toEqual([452, 438, 449])
|
||||
})
|
||||
|
||||
it('先「审查」一组再「进行中」一组,组里工单号大的在前(和看板列里一样)', () => {
|
||||
const issues = [
|
||||
{ number: 300, column: 'in-progress' as const, pr: '301' },
|
||||
{ number: 438, column: 'review' as const, pr: '440' },
|
||||
{ number: 500, column: 'in-progress' as const, pr: '501' },
|
||||
{ number: 446, column: 'review' as const, pr: '447' },
|
||||
]
|
||||
expect(reviewCandidates(issues).map(item => item.number)).toEqual([446, 438, 500, 300])
|
||||
})
|
||||
|
||||
it('只要 Gitea 的工单(PR 在 Gitea 上),YouTrack 的不算,没写来源的算 Gitea 的', () => {
|
||||
const issues = [
|
||||
{ number: 12, column: 'review' as const, source: 'youtrack' as const },
|
||||
{ number: 13, column: 'in-progress' as const, source: 'youtrack' as const, pr: '14' },
|
||||
{ number: 446, column: 'review' as const, source: 'gitea' as const },
|
||||
{ number: 438, column: 'review' as const },
|
||||
]
|
||||
expect(inReviewColumn(issues).map(item => item.number)).toEqual([446, 438])
|
||||
expect(reviewCandidates(issues).map(item => item.number)).toEqual([446, 438])
|
||||
})
|
||||
|
||||
it('列名:分组标题和连着写的几列', () => {
|
||||
expect(columnLabel('review')).toBe('审查')
|
||||
expect(columnLabel('in-progress')).toBe('进行中')
|
||||
expect(REVIEW_COLUMNS_TEXT).toBe('「审查」「进行中」')
|
||||
})
|
||||
|
||||
it('工单的 PR 号取 state JSON 里的正整数(看板快照里也是字符串)', () => {
|
||||
@@ -42,16 +60,19 @@ describe('看板「审查」列', () => {
|
||||
})
|
||||
|
||||
describe('还能不能审查(选中、刷新、重开窗口时判断)', () => {
|
||||
it('在审查列、有 PR:带上工单和 PR 号', () => {
|
||||
const current = { column: 'review' as const, pr: '447' }
|
||||
expect(reviewableIssue(446, current)).toEqual({ issue: current, pr: 447 })
|
||||
it('在「审查」或「进行中」列、有 PR:带上工单和 PR 号', () => {
|
||||
const inReview = { column: 'review' as const, pr: '447' }
|
||||
const inProgress = { column: 'in-progress' as const, pr: '450' }
|
||||
expect(reviewableIssue(446, inReview)).toEqual({ issue: inReview, pr: 447 })
|
||||
expect(reviewableIssue(449, inProgress)).toEqual({ issue: inProgress, pr: 450 })
|
||||
})
|
||||
|
||||
it('工单没了、离开了审查列、没有 PR:给出原因', () => {
|
||||
it('工单没了、两列都离开了、没有 PR:给出原因', () => {
|
||||
expect(reviewableIssue(446, null)).toEqual({ blocked: '#446 已经不存在' })
|
||||
expect(reviewableIssue(446, { column: 'done', pr: '447' })).toEqual({ blocked: '#446 已经不在看板「审查」列' })
|
||||
expect(reviewableIssue(446, { column: 'in-progress', pr: '447' })).toEqual({ blocked: '#446 已经不在看板「审查」列' })
|
||||
expect(reviewableIssue(446, { column: 'done', pr: '447' })).toEqual({ blocked: '#446 已经不在看板「审查」「进行中」列' })
|
||||
expect(reviewableIssue(446, { column: 'todo', pr: '447' })).toEqual({ blocked: '#446 已经不在看板「审查」「进行中」列' })
|
||||
expect(reviewableIssue(446, { column: 'review' })).toEqual({ blocked: '#446 没有关联 PR' })
|
||||
expect(reviewableIssue(449, { column: 'in-progress' })).toEqual({ blocked: '#449 没有关联 PR' })
|
||||
})
|
||||
|
||||
it('关联的 PR 开着:带上它;没了、合并了、关了:给出原因', () => {
|
||||
|
||||
Reference in new issue
Block a user