Skip to content

Commit fc7eda2

Browse files
Merge pull request #59 from SaidShah/add-tests-for-molecules-text-area-form-field
Added tests for TextAreaFormField
2 parents d30e8cf + f49fc2a commit fc7eda2

File tree

2 files changed

+99
-2
lines changed

2 files changed

+99
-2
lines changed

src/molecules/form-fields/text-area-form-field.test.tsx

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import React from "react";
22
import { render } from "@testing-library/react";
3-
import { TextAreaFormField } from "./text-area-form-field";
3+
import {
4+
InvalidInputClassName,
5+
TextAreaFormField,
6+
} from "./text-area-form-field";
47
import faker from "faker";
58

69
describe("TextAreaFormField", () => {
@@ -16,4 +19,97 @@ describe("TextAreaFormField", () => {
1619
// Assert
1720
expect(getByLabelText(expected)).not.toBeNull();
1821
});
22+
23+
test("when has errorMessages prop, renders with error messages", () => {
24+
// Arrange
25+
const expected = faker.random.words();
26+
const firstErrorMessage = faker.random.words();
27+
const secondErrorMessage = faker.random.words();
28+
29+
// Act
30+
const { getByText } = render(
31+
<TextAreaFormField
32+
label={expected}
33+
onChange={() => {}}
34+
errorMessages={[firstErrorMessage, secondErrorMessage]}
35+
/>
36+
);
37+
38+
// Assert
39+
expect(getByText(firstErrorMessage)).not.toBeNil();
40+
expect(getByText(secondErrorMessage)).not.toBeNil();
41+
});
42+
43+
test("when has errorMessage prop, renders with error message", () => {
44+
// Arrange
45+
const expected = faker.random.words();
46+
const testErrorMessage = faker.random.words();
47+
48+
// Act
49+
const { getByText } = render(
50+
<TextAreaFormField
51+
label={expected}
52+
onChange={() => {}}
53+
errorMessage={testErrorMessage}
54+
/>
55+
);
56+
57+
// Assert
58+
expect(getByText(testErrorMessage)).not.toBeNil();
59+
});
60+
61+
test(`when isValid prop is false, renders with ${InvalidInputClassName} class name`, () => {
62+
// Arrange
63+
const expected = faker.random.words();
64+
65+
// Act
66+
const { container } = render(
67+
<TextAreaFormField
68+
label={expected}
69+
onChange={() => {}}
70+
isValid={false}
71+
/>
72+
);
73+
const result = container.querySelector("." + InvalidInputClassName);
74+
75+
// Assert
76+
expect(result).not.toBeNil();
77+
});
78+
79+
test(`when isValid prop is true, renders without ${InvalidInputClassName} class name`, () => {
80+
// Arrange
81+
const expected = faker.random.words();
82+
83+
// Act
84+
const { container } = render(
85+
<TextAreaFormField
86+
label={expected}
87+
onChange={() => {}}
88+
isValid={true}
89+
/>
90+
);
91+
const result = container.querySelector("." + InvalidInputClassName);
92+
93+
// Assert
94+
expect(result).toBeNil();
95+
});
96+
97+
test("when required prop set, renders with required text", () => {
98+
// Arrange
99+
const expected = faker.random.words();
100+
const requiredText = "*";
101+
102+
// Act
103+
const { container } = render(
104+
<TextAreaFormField
105+
label={expected}
106+
onChange={() => {}}
107+
required={true}
108+
/>
109+
);
110+
const htmlLabelTag = container.getElementsByTagName("label");
111+
112+
// Assert
113+
expect(htmlLabelTag[0].textContent).toContain(requiredText);
114+
});
19115
});

src/molecules/form-fields/text-area-form-field.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { StringUtils, CollectionUtils } from "andculturecode-javascript-core";
88
// -----------------------------------------------------------------------------------------
99

1010
const COMPONENT_CLASS = "c-form-field";
11+
export const InvalidInputClassName = "-invalid";
1112

1213
// #endregion Constants
1314

@@ -60,7 +61,7 @@ const TextAreaFormField: React.FC<TextAreaFormFieldProps> = (
6061
value,
6162
} = props;
6263

63-
const cssIsValid = isValid ? "" : "-invalid";
64+
const cssIsValid = isValid ? "" : InvalidInputClassName;
6465
const fieldId = props.fieldId ?? uuid.v4();
6566
const hasErrorMessage = StringUtils.hasValue(errorMessage);
6667
const hasErrors = CollectionUtils.hasValues(errorMessages);

0 commit comments

Comments
 (0)