From a376de11b9f59799fc8c881ed97962d945c4ca65 Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Mon, 7 Nov 2022 15:33:47 +0000 Subject: [PATCH 1/3] actually call update rather than just getting it --- src/relative-time-element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/relative-time-element.ts b/src/relative-time-element.ts index a65d8c9..2a4d26e 100644 --- a/src/relative-time-element.ts +++ b/src/relative-time-element.ts @@ -39,7 +39,7 @@ const dateObserver = new (class { const time = Date.now() + ms if (time < this.time) { clearTimeout(this.timer) - this.timer = setTimeout(() => this.update, ms) + this.timer = setTimeout(() => this.update(), ms) this.time = time } } From a3ffb11df16ae8d9d33874d3c2f346caac653424 Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Mon, 7 Nov 2022 15:35:35 +0000 Subject: [PATCH 2/3] add tests for realtime updates --- test/relative-time.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/relative-time.js b/test/relative-time.js index 0573b2f..d00003c 100644 --- a/test/relative-time.js +++ b/test/relative-time.js @@ -58,6 +58,19 @@ suite('relative-time', function () { assert.equal(counter, 1) }) + test('updates the time automatically when it is a few seconds ago', async function () { + this.timeout(3000) + const el = document.createElement('relative-time') + el.setAttribute('datetime', new Date(Date.now() + 25000).toISOString()) + const display = el.shadowRoot?.textContent || el.textContent + assert.match(display, /in \d+ seconds/) + await new Promise(resolve => setTimeout(resolve, 2000)) + const nextDisplay = el.shadowRoot.textContent || el.textContent + assert.match(nextDisplay, /in \d+ seconds/) + console.log(nextDisplay, display) + assert.notEqual(nextDisplay, display) + }) + test("doesn't error when no date is provided", function () { const element = document.createElement('relative-time') assert.doesNotThrow(() => element.attributeChangedCallback('datetime', null, null)) From 05a3e8b7c936e8be7c72b3c84e4090e0981ac0d4 Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Mon, 7 Nov 2022 15:39:18 +0000 Subject: [PATCH 3/3] fix lint --- test/relative-time.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/relative-time.js b/test/relative-time.js index d00003c..9449aa9 100644 --- a/test/relative-time.js +++ b/test/relative-time.js @@ -59,6 +59,7 @@ suite('relative-time', function () { }) test('updates the time automatically when it is a few seconds ago', async function () { + // eslint-disable-next-line @typescript-eslint/no-invalid-this this.timeout(3000) const el = document.createElement('relative-time') el.setAttribute('datetime', new Date(Date.now() + 25000).toISOString()) @@ -67,7 +68,6 @@ suite('relative-time', function () { await new Promise(resolve => setTimeout(resolve, 2000)) const nextDisplay = el.shadowRoot.textContent || el.textContent assert.match(nextDisplay, /in \d+ seconds/) - console.log(nextDisplay, display) assert.notEqual(nextDisplay, display) })