From 5eaf222f883311420f5b97e3419487adbe2da388 Mon Sep 17 00:00:00 2001 From: Jon Ander Oribe Date: Fri, 22 Oct 2021 21:21:28 +0200 Subject: [PATCH] Test time conductor history 4287 (#4321) Added some extra test for the new implementation of Time Conductor History on PR 4287 * Refractor on testing and Time Conductor * Update duration.js Refractor on getPreciseDuration() --- src/plugins/timeConductor/pluginSpec.js | 17 +++++++++++++++++ src/utils/duration.js | 25 +++++++++---------------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/plugins/timeConductor/pluginSpec.js b/src/plugins/timeConductor/pluginSpec.js index 9485073652..a9cfce32ee 100644 --- a/src/plugins/timeConductor/pluginSpec.js +++ b/src/plugins/timeConductor/pluginSpec.js @@ -21,6 +21,7 @@ *****************************************************************************/ import {createMouseEvent, createOpenMct, resetApplicationState} from "utils/testing"; +import {millisecondsToDHMS, getPreciseDuration} from "../../utils/duration"; import ConductorPlugin from "./plugin"; import Vue from 'vue'; @@ -126,3 +127,19 @@ describe('time conductor', () => { }); }); + +describe('duration functions', () => { + it('should transform milliseconds to DHMS', () => { + const functionResults = [millisecondsToDHMS(0), millisecondsToDHMS(86400000), + millisecondsToDHMS(129600000), millisecondsToDHMS(661824000)]; + const validResults = [' ', '+ 1d', '+ 1d 12h', '+ 7d 15h 50m 24s']; + expect(validResults).toEqual(functionResults); + }); + + it('should get precise duration', () => { + const functionResults = [getPreciseDuration(0), getPreciseDuration(643680000), + getPreciseDuration(1605312000)]; + const validResults = ['00:00:00:00', '07:10:48:00', '18:13:55:12']; + expect(validResults).toEqual(functionResults); + }); +}); diff --git a/src/utils/duration.js b/src/utils/duration.js index 1cbf54c707..3dd8e95d36 100644 --- a/src/utils/duration.js +++ b/src/utils/duration.js @@ -33,11 +33,7 @@ function normalizeAge(num) { } function toDoubleDigits(num) { - if (num >= 10) { - return num; - } else { - return `0${num}`; - } + return num >= 10 ? num : `0${num}`; } function addTimeSuffix(value, suffix) { @@ -56,17 +52,14 @@ export function millisecondsToDHMS(numericDuration) { return `${ dhms ? '+' : ''} ${dhms}`; } -export function getPreciseDuration(numericDuration) { - let result; +export function getPreciseDuration(value) { + const ms = value || 0; - const days = toDoubleDigits(Math.floor((numericDuration) / (24 * 60 * 60 * 1000))); - let remaining = (numericDuration) % (24 * 60 * 60 * 1000); - const hours = toDoubleDigits(Math.floor((remaining) / (60 * 60 * 1000))); - remaining = (remaining) % (60 * 60 * 1000); - const minutes = toDoubleDigits(Math.floor((remaining) / (60 * 1000))); - remaining = (remaining) % (60 * 1000); - const seconds = toDoubleDigits(Math.floor((remaining) / (1000))); - result = `${days}:${hours}:${minutes}:${seconds}`; + return [ + toDoubleDigits(Math.floor(normalizeAge(ms / ONE_DAY))), + toDoubleDigits(Math.floor(normalizeAge((ms % ONE_DAY) / ONE_HOUR))), + toDoubleDigits(Math.floor(normalizeAge((ms % ONE_HOUR) / ONE_MINUTE))), + toDoubleDigits(Math.floor(normalizeAge((ms % ONE_MINUTE) / ONE_SECOND))) + ].join(":"); - return result; }