-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcountdownTimer.test.js
91 lines (73 loc) · 2.86 KB
/
countdownTimer.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/**
* @jest-environment jsdom
*/
import displayAll from './countdownTimer';
test("Shows at least one day to be displayed", () => {
document.body.innerHTML = `
<div id="timer">
<h1>Countdown Timer</h1>
<div id="values">
<div id="days">
<label>Day</label>
<input type="number" id="day" min="1">
</div>
<div id="hours">
<label>Hour</label>
<input type="number" id="hour" min="1" max="23">
</div>
<div id="minutes">
<label>Minute</label>
<input type="number" id="minute" min="1" max="59">
</div>
</div>
<button id="start" onclick=startOrStop()>Start | Stop</button>
</div>
<div id="display">
<h1>Time Left</h1>
</div>`;
require("./countdownTimer.js");
const displayBox = document.querySelector("#display");
function displayAll(seconds) {
// calculate (and subtract) whole days
var days = Math.floor(seconds / 86400);
var dayName = "day";
seconds -= days * 86400;
// calculate (and subtract) whole hours
var hours = Math.floor(seconds / 3600) % 24;
var hourName = "hour";
seconds -= hours * 3600;
// calculate (and subtract) whole minutes
var minutes = Math.floor(seconds / 60) % 60;
var minuteName = "minute";
seconds -= minutes * 60;
// what's left is seconds
var remainingSeconds = seconds % 60;
var secondName = "second"
// removes the previous intervals displayed if detected
if (displayBox.childElementCount > 1) {
var days1 = document.querySelector('#day_display');
var hours1 = document.querySelector('#hour_display');
var minutes1 = document.querySelector('#minute_display');
var seconds1 = document.querySelector('#second_display');
displayBox.removeChild(days1);
displayBox.removeChild(hours1);
displayBox.removeChild(minutes1);
displayBox.removeChild(seconds1);
}
// displays each time interval in the display box
displayTimes(days, dayName);
displayTimes(hours, hourName);
displayTimes(minutes, minuteName);
displayTimes(remainingSeconds, secondName);
};
function displayTimes(timeValue, timeName) {
var timeDisplay = document.createElement('div');
timeDisplay.setAttribute("id", `${timeName}_display`);
timeDisplay.setAttribute("class", "display");
timeDisplay.textContent = `${timeValue} ${timeName}s`;
displayBox.appendChild(timeDisplay);
};
displayAll(500000000);
let days = document.getElementById("day_display");
expect(days.textContent).toEqual('1 days');
});