/ src / lib / server / tasks / task-quality-gate.test.ts
task-quality-gate.test.ts
 1  import assert from 'node:assert/strict'
 2  import { test } from 'node:test'
 3  import { normalizeTaskQualityGate } from '@/lib/server/tasks/task-quality-gate'
 4  
 5  test('normalizeTaskQualityGate uses defaults when unset', () => {
 6    const gate = normalizeTaskQualityGate(undefined, undefined)
 7    assert.equal(gate.enabled, true)
 8    assert.equal(gate.minResultChars, 80)
 9    assert.equal(gate.minEvidenceItems, 1)
10    assert.equal(gate.requireVerification, false)
11    assert.equal(gate.requireArtifact, false)
12    assert.equal(gate.requireReport, false)
13  })
14  
15  test('normalizeTaskQualityGate respects app settings defaults', () => {
16    const gate = normalizeTaskQualityGate(null, {
17      taskQualityGateEnabled: false,
18      taskQualityGateMinResultChars: 120,
19      taskQualityGateMinEvidenceItems: 1,
20      taskQualityGateRequireVerification: true,
21    })
22    assert.equal(gate.enabled, false)
23    assert.equal(gate.minResultChars, 120)
24    assert.equal(gate.minEvidenceItems, 1)
25    assert.equal(gate.requireVerification, true)
26  })
27  
28  test('normalizeTaskQualityGate allows per-task overrides on top of settings', () => {
29    const gate = normalizeTaskQualityGate({
30      enabled: true,
31      minResultChars: 64,
32      minEvidenceItems: 3,
33      requireArtifact: true,
34    }, {
35      taskQualityGateEnabled: false,
36      taskQualityGateMinResultChars: 120,
37      taskQualityGateMinEvidenceItems: 1,
38      taskQualityGateRequireArtifact: false,
39    })
40    assert.equal(gate.enabled, true)
41    assert.equal(gate.minResultChars, 64)
42    assert.equal(gate.minEvidenceItems, 3)
43    assert.equal(gate.requireArtifact, true)
44  })