aboutsummaryrefslogtreecommitdiff
path: root/src/lib/components/TimerControls.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/components/TimerControls.test.js')
-rw-r--r--src/lib/components/TimerControls.test.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/lib/components/TimerControls.test.js b/src/lib/components/TimerControls.test.js
new file mode 100644
index 0000000..3176c17
--- /dev/null
+++ b/src/lib/components/TimerControls.test.js
@@ -0,0 +1,35 @@
+// @vitest-environment jsdom
+import { describe, it, expect, afterEach } from "vitest";
+import { render, screen, fireEvent } from "@testing-library/svelte";
+import TimerControls from "./TimerControls.svelte";
+import { stopTimer } from "../stores/timer.svelte.js";
+
+describe("TimerControls", () => {
+ afterEach(() => {
+ stopTimer();
+ });
+
+ it("shows the resting display for the default minutes", () => {
+ render(TimerControls);
+ expect(screen.getByTitle("Time display")).toHaveValue("12:00");
+ });
+
+ it("disables inc/dec while running, and re-enables on stop", async () => {
+ render(TimerControls);
+ const startBtn = screen.getByTitle("Timer start");
+ const stopBtn = screen.getByTitle("Timer stop");
+ const incBtn = screen.getByTitle("Timer increment");
+ const decBtn = screen.getByTitle("Timer decrement");
+
+ expect(incBtn).not.toBeDisabled();
+ expect(decBtn).not.toBeDisabled();
+
+ await fireEvent.click(startBtn);
+ expect(incBtn).toBeDisabled();
+ expect(decBtn).toBeDisabled();
+
+ await fireEvent.click(stopBtn);
+ expect(incBtn).not.toBeDisabled();
+ expect(decBtn).not.toBeDisabled();
+ });
+});