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