49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
|
|
import assert from 'node:assert/strict';
|
||
|
|
import { describe, it } from 'node:test';
|
||
|
|
import { normalizeFeedbackStat } from '../src/service/api/feedback-normalize';
|
||
|
|
|
||
|
|
describe('normalizeFeedbackStat', () => {
|
||
|
|
it('maps backend type/status count arrays to code-keyed records', () => {
|
||
|
|
const result = normalizeFeedbackStat({
|
||
|
|
total: 128,
|
||
|
|
typeCounts: [
|
||
|
|
{ type: 1, count: 52 },
|
||
|
|
{ type: 2, count: 31 },
|
||
|
|
{ type: 3, count: 45 }
|
||
|
|
],
|
||
|
|
statusCounts: [
|
||
|
|
{ status: 1, count: 40 },
|
||
|
|
{ status: 2, count: 33 },
|
||
|
|
{ status: 3, count: 50 },
|
||
|
|
{ status: 4, count: 5 }
|
||
|
|
]
|
||
|
|
});
|
||
|
|
|
||
|
|
assert.deepEqual(result, {
|
||
|
|
total: 128,
|
||
|
|
typeCounts: {
|
||
|
|
'1': 52,
|
||
|
|
'2': 31,
|
||
|
|
'3': 45
|
||
|
|
},
|
||
|
|
statusCounts: {
|
||
|
|
'1': 40,
|
||
|
|
'2': 33,
|
||
|
|
'3': 50,
|
||
|
|
'4': 5
|
||
|
|
}
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
it('keeps zero-count dictionary codes visible to the facet panel', () => {
|
||
|
|
const result = normalizeFeedbackStat({
|
||
|
|
total: 0,
|
||
|
|
typeCounts: [{ type: '1', count: 0 }],
|
||
|
|
statusCounts: [{ status: '4', count: 0 }]
|
||
|
|
});
|
||
|
|
|
||
|
|
assert.deepEqual(result.typeCounts, { '1': 0 });
|
||
|
|
assert.deepEqual(result.statusCounts, { '4': 0 });
|
||
|
|
});
|
||
|
|
});
|