Download
31 lines 1.1 KiBJavaScriptModified 2026-10-17 raw
12345678910111213141516171819202122232425262728293031
// node --test test/
'use strict';
const test = require('node:test');
const assert = require('node:assert/strict');
const { timeAgo } = require('../internal/render/static/ui.js');

const now = Date.UTC(2026, 9, 17, 12, 0, 0);
const ago = (s) => timeAgo(now - s * 1000, now);
const MIN = 60, HOUR = 3600, DAY = 86400;

test('recent and future times are just now', () => {
  assert.equal(ago(0), 'just now');
  assert.equal(ago(59), 'just now');
  assert.equal(ago(-3 * DAY), 'just now');
});

test('each unit until the next one up reaches one', () => {
  assert.equal(ago(MIN), '1 minute ago');
  assert.equal(ago(59 * MIN), '59 minutes ago');
  assert.equal(ago(HOUR), '1 hour ago');
  assert.equal(ago(23 * HOUR), '23 hours ago');
  assert.equal(ago(DAY), 'yesterday');
  assert.equal(ago(2 * DAY + 23 * HOUR), '2 days ago');
  assert.equal(ago(6 * DAY), '6 days ago');
  assert.equal(ago(7 * DAY), 'last week');
  assert.equal(ago(29 * DAY), '4 weeks ago');
  assert.equal(ago(31 * DAY), 'last month');
  assert.equal(ago(200 * DAY), '6 months ago');
  assert.equal(ago(366 * DAY), 'last year');
  assert.equal(ago(3 * 366 * DAY), '3 years ago');
});