refactor: replace enabled prop with disabled in DigitalClock

This commit is contained in:
Loic Coenen
2026-06-25 09:37:20 +02:00
committed by Loic Coenen (aider)
parent a5e300d238
commit 0b3a1d4d66
4 changed files with 26 additions and 17 deletions

View File

@@ -24,21 +24,21 @@ describe("DigitalClock", () => {
});
});
it("renders nothing when disabled", () => {
const { container } = render(
it("renders the input as disabled when disabled prop is true", () => {
render(
<DigitalClock
enabled={false}
disabled={true}
currentTime={new Date(2025, 0, 1, 14, 30, 15)}
onTimeChange={onTimeChangeMock}
/>,
);
expect(container.innerHTML).toBe("");
const input = screen.getByTestId("time-input");
expect(input).toBeDisabled();
});
it("renders the digital time and input when enabled", () => {
render(
<DigitalClock
enabled={true}
currentTime={new Date(2025, 0, 1, 14, 30, 15)}
onTimeChange={onTimeChangeMock}
/>,
@@ -50,7 +50,6 @@ describe("DigitalClock", () => {
it("calls onTimeChange when a valid time is entered", () => {
render(
<DigitalClock
enabled={true}
currentTime={new Date(2025, 0, 1, 14, 30, 15)}
onTimeChange={onTimeChangeMock}
/>,
@@ -68,7 +67,6 @@ describe("DigitalClock", () => {
it("does not call onTimeChange when an invalid time is entered", () => {
render(
<DigitalClock
enabled={true}
currentTime={new Date(2025, 0, 1, 14, 30, 15)}
onTimeChange={onTimeChangeMock}
/>,

View File

@@ -13,13 +13,21 @@ vi.mock("../containers/DigitalClock", () => ({
enabled,
currentTime,
onTimeChange,
disabled = false,
}: {
enabled: boolean;
currentTime: Date;
onTimeChange: (d: Date) => void;
disabled?: boolean;
}) => (
<div data-testid="digital-clock-wrapper">
<span data-testid="digital-clock-time">{currentTime.toISOString()}</span>
<input
data-testid="time-input"
disabled={disabled}
value=""
onChange={() => {}}
/>
<button
data-testid="set-time"
onClick={() => onTimeChange(new Date(2025, 0, 1, 12, 0, 0))}
@@ -52,11 +60,16 @@ describe("TimeConverter", () => {
expect(screen.getByTestId("digital-clock-wrapper")).toBeInTheDocument();
});
it("disables both clocks when checkbox is checked", () => {
it("disables the digital clock input when checkbox is checked", () => {
render(<TimeConverter />);
// Initially the input is enabled
expect(screen.getByTestId("time-input")).not.toBeDisabled();
// Click the checkbox
fireEvent.click(screen.getByTestId("use-system-time"));
expect(screen.getByTestId("berlin-clock")).toHaveTextContent("disabled");
expect(screen.getByTestId("disabled-indicator")).toBeInTheDocument();
// Now the input should be disabled
expect(screen.getByTestId("time-input")).toBeDisabled();
// But the BerlinClock still appears enabled (no "disabled" text)
expect(screen.getByTestId("berlin-clock")).toHaveTextContent("enabled");
});
it("calls setCurrentTime when DigitalClock triggers onTimeChange", () => {