Skip to content

Commit da8d482

Browse files
Issue #11 Backfill tests for Atoms/Select
Add tests for atoms select
2 parents 82b41b8 + 14fb51e commit da8d482

File tree

1 file changed

+68
-1
lines changed

1 file changed

+68
-1
lines changed

src/atoms/forms/select.test.tsx

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,72 @@
11
import React from "react";
2+
import { Select } from "./select";
3+
import faker from "faker";
4+
import { render, fireEvent } from "@testing-library/react";
25

36
describe("Select", () => {
4-
test.skip("TODO - https://github.com/AndcultureCode/AndcultureCode.JavaScript.React.Components/issues/11", () => {});
7+
test("when default props, renders with options", () => {
8+
// Arrange
9+
const expected = faker.random.word();
10+
const testLabel = faker.random.word();
11+
const testValue = faker.random.word();
12+
13+
// Act
14+
const { getByText } = render(
15+
<Select
16+
id={expected}
17+
onChange={() => {}}
18+
options={[{ label: testLabel, value: testValue }]}
19+
/>
20+
);
21+
22+
// Assert
23+
expect(getByText(testLabel)).not.toBeNil();
24+
});
25+
26+
test("when onChange set, calls handler upon change", () => {
27+
// Arrange
28+
let isChecked = false;
29+
const expected = faker.random.word();
30+
const handleChange = () => (isChecked = true);
31+
const testLabel = faker.random.word();
32+
const testValue = faker.random.word();
33+
34+
// Act
35+
const { getByDisplayValue } = render(
36+
<Select
37+
id={expected}
38+
onChange={handleChange}
39+
options={[{ label: testLabel, value: testValue }]}
40+
/>
41+
);
42+
43+
fireEvent.change(getByDisplayValue(testLabel), {
44+
target: { value: faker.random.word() },
45+
});
46+
47+
// Assert
48+
expect(isChecked).toBeTrue();
49+
});
50+
51+
test("when cssClassName set, renders with class name", () => {
52+
// Arrange
53+
const expected = faker.random.word();
54+
const testLabel = faker.random.word();
55+
const testValue = faker.random.word();
56+
const testClassName = "testClassName";
57+
58+
// Act
59+
const { container } = render(
60+
<Select
61+
cssClassName={testClassName}
62+
id={expected}
63+
onChange={() => {}}
64+
options={[{ label: testLabel, value: testValue }]}
65+
/>
66+
);
67+
const result = container.getElementsByClassName(testClassName);
68+
69+
// Assert
70+
expect(result).not.toBeNil();
71+
});
572
});

0 commit comments

Comments
 (0)