Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 82 additions & 1 deletion src/atoms/forms/checkbox-button.test.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,86 @@
import React from "react";
import faker from "faker";
import { CheckboxButton, CheckboxButtonCheckedClass } from "./checkbox-button";
import { render, fireEvent, wait } from "@testing-library/react";

describe("CheckboxButton", () => {
test.skip("TODO - https://github.com/AndcultureCode/AndcultureCode.JavaScript.React.Components/issues/5", () => {});
test("when default props, renders children", () => {
// Arrange
const expected = faker.random.words();

// Act
const { getByText } = render(
<CheckboxButton
label={expected}
checked={false}
onChange={() => {}}
/>
);

// Assert
expect(getByText(expected)).not.toBeNil();
});

test("when onChange set, calls handler upon change", async () => {
// Arrange
let isChecked = false;
const handleChange = () => {
isChecked = true;
};
const label = faker.random.word();

// Act
const { getByLabelText } = render(
<CheckboxButton
onChange={handleChange}
label={label}
checked={isChecked}
/>
);

fireEvent.click(getByLabelText(label));

// Assert
expect(isChecked).toBeTrue();
});

test(`when isChecked prop is true, renders with ${CheckboxButtonCheckedClass} class name`, () => {
// Arrange
const expected = faker.random.words();

// Act
const { container } = render(
<CheckboxButton
label={expected}
checked={true}
onChange={() => {}}
/>
);
const result = container.querySelector(
"." + CheckboxButtonCheckedClass
);

// Assert
expect(result).not.toBeNil();
});

test("when cssClassName provided, assigned class property", () => {
// Arrange
const expected = faker.random.words();
const testClassName = "testClassName";

// Act
const { container } = render(
<CheckboxButton
label={expected}
checked={true}
onChange={() => {}}
cssClassName={testClassName}
/>
);
const result = container.querySelector("." + testClassName);

// Assert
expect(result).not.toBeNil();
});
});
10 changes: 9 additions & 1 deletion src/atoms/forms/checkbox-button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@ import React from "react";
import { Icon } from "../icons/icon";
import { Icons } from "../constants/icons";

// -----------------------------------------------------------------------------------------
// #region Constants
// -----------------------------------------------------------------------------------------

export const CheckboxButtonCheckedClass = "-checked";

Comment thread
wintondeshong marked this conversation as resolved.
// #endregion Constants

// -----------------------------------------------------------------------------------------
// #region Interfaces
// -----------------------------------------------------------------------------------------
Expand Down Expand Up @@ -41,7 +49,7 @@ const CheckboxButton: React.FC<CheckboxButtonProperties> = (
props.onChange(e, props.identifier);
};

const checkedClassName = checked ? " -checked" : "";
const checkedClassName = checked ? CheckboxButtonCheckedClass : "";

return (
<label
Expand Down