Files
cinny/src/app/utils/callSummary.test.ts
T

68 lines
1.8 KiB
TypeScript
Raw Normal View History

import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { describeCallDuration, describeCallEnd } from './callSummary';
describe('describeCallDuration', () => {
it('picks the unit', () => {
assert.equal(describeCallDuration(40_000), '40 s');
assert.equal(describeCallDuration(41 * 60_000), '41 min');
assert.equal(describeCallDuration(65 * 60_000), '1 h 05 min');
});
});
describe('describeCallEnd', () => {
const min = 60_000;
it('without a summary shows just the duration', () => {
assert.equal(describeCallEnd(41 * min), 'Call ended · 41 min');
});
it('good / unknown', () => {
assert.equal(
describeCallEnd(41 * min, {
durationMs: 41 * min,
reconnects: 1,
poorMs: 0,
verdict: 'good',
}),
'Call ended · 41 min · connection was good',
);
assert.equal(
describeCallEnd(2 * min, {
durationMs: 2 * min,
reconnects: 0,
poorMs: 0,
verdict: 'unknown',
}),
'Call ended · 2 min',
);
});
it('reconnects and poor spells', () => {
assert.equal(
describeCallEnd(41 * min, {
durationMs: 41 * min,
reconnects: 3,
poorMs: 0,
verdict: 'fair',
}),
'Call ended · 41 min · 3 reconnects',
);
assert.equal(
describeCallEnd(12 * min, {
durationMs: 12 * min,
reconnects: 1,
poorMs: 4 * min,
verdict: 'poor',
}),
'Call ended · 12 min · 1 reconnect, connection was poor for 4 min',
);
assert.equal(
describeCallEnd(12 * min, {
durationMs: 12 * min,
reconnects: 0,
poorMs: 2_000,
verdict: 'fair',
}),
'Call ended · 12 min · connection was fair',
);
});
});