11import React from "react" ;
22import { 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" ;
47import faker from "faker" ;
58
69describe ( "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} ) ;
0 commit comments