54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import { test } from 'node:test';
|
|||
|
|
import assert from 'node:assert/strict';
|
||
|
|
import { describeLastActive } from './lastActive';
|
||
|
|
|
||
|
|
const now = 1_800_000_000_000;
|
||
|
|
test('wording buckets', () => {
|
||
|
|
assert.equal(describeLastActive(undefined), null);
|
||
|
|
assert.equal(describeLastActive({ presence: 'offline', active: false }), null);
|
||
|
|
assert.equal(describeLastActive({ presence: 'offline', active: false, lastActiveTs: 0 }), null);
|
||
|
|
assert.equal(
|
||
|
|
describeLastActive({ presence: 'online', active: true, lastActiveTs: now }, now),
|
||
|
|
'Active now',
|
||
|
|
);
|
||
|
|
assert.equal(
|
||
|
|
describeLastActive({ presence: 'online', active: false, lastActiveTs: now - 20_000 }, now),
|
||
|
|
'Active just now',
|
||
|
|
);
|
||
|
|
assert.equal(
|
||
|
|
describeLastActive(
|
||
|
|
{ presence: 'unavailable', active: false, lastActiveTs: now - 12 * 60_000 },
|
||
|
|
now,
|
||
|
|
),
|
||
|
|
'Last active 12 min ago',
|
||
|
|
);
|
||
|
|
assert.equal(
|
||
|
|
describeLastActive(
|
||
|
|
{ presence: 'offline', active: false, lastActiveTs: now - 3 * 3_600_000 },
|
||
|
|
now,
|
||
|
|
),
|
||
|
|
'Last active 3 hours ago',
|
||
|
|
);
|
||
|
|
assert.equal(
|
||
|
|
describeLastActive(
|
||
|
|
{ presence: 'offline', active: false, lastActiveTs: now - 26 * 3_600_000 },
|
||
|
|
now,
|
||
|
|
),
|
||
|
|
'Last active yesterday',
|
||
|
|
);
|
||
|
|
assert.equal(
|
||
|
|
describeLastActive(
|
||
|
|
{ presence: 'offline', active: false, lastActiveTs: now - 5 * 86_400_000 },
|
||
|
|
now,
|
||
|
|
),
|
||
|
|
'Last active 5 days ago',
|
||
|
|
);
|
||
|
|
assert.equal(
|
||
|
|
describeLastActive(
|
||
|
|
{ presence: 'offline', active: false, lastActiveTs: now - 40 * 86_400_000 },
|
||
|
|
now,
|
||
|
|
),
|
||
|
|
'Last active over a month ago',
|
||
|
|
);
|
||
|
|
});
|