Fix duration string

`getMilliseconds()` does not do what we thought is was doing. It does
not return the milliseconds since the epoch, but just a value between
0 and 999. Fixing this and adding tests.

Release-Notes: skip
Google-Bug-Id: b/216743635
Change-Id: I74b5ab5d412e31f1cdc759e371e86ca9f62079be
diff --git a/web/util.ts b/web/util.ts
index 1754a10..2f463aa 100644
--- a/web/util.ts
+++ b/web/util.ts
@@ -22,8 +22,8 @@
 }
 
 export function generateDurationString(startTime: Date, endTime: Date) {
-  const secondsAgo = Math.round(
-    (endTime.getMilliseconds() - startTime.getMilliseconds()) / 1000
+  const secondsAgo = Math.floor(
+    (endTime.valueOf() - startTime.valueOf()) / 1000
   );
   if (secondsAgo === 0) {
     return '0 sec';
diff --git a/web/util_test.ts b/web/util_test.ts
index 466d9c6..94baa03 100644
--- a/web/util_test.ts
+++ b/web/util_test.ts
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 import './test/test-setup';
-import {pluralize} from './util';
+import {pluralize, generateDurationString} from './util';
 
 suite('util tests', () => {
   test('pluralize', () => {
@@ -23,4 +23,28 @@
     assert.equal(pluralize(1, 'bag'), '1 bag');
     assert.equal(pluralize(2, 'bag'), '2 bags');
   });
+
+  test('generateDurationString', () => {
+    assert.equal(
+      generateDurationString(
+        new Date('1995-12-17T03:24:00'),
+        new Date('1995-12-17T03:24:01')
+      ),
+      '1 sec'
+    );
+    assert.equal(
+      generateDurationString(
+        new Date('1995-12-17T03:24:00'),
+        new Date('1995-12-17T03:25:00')
+      ),
+      '1 min'
+    );
+    assert.equal(
+      generateDurationString(
+        new Date('1995-12-17T03:24:00'),
+        new Date('1995-12-17T04:24:00')
+      ),
+      '1 hour'
+    );
+  });
 });