@@ -57,7 +57,7 @@ module('Integration | Component | bs form element', function(hooks) {
5757 assert . verifySteps ( [ 'submit action has been called.' ] ) ;
5858 } ) ;
5959
60- test ( 'invalid validation is supported as expected ' , async function ( assert ) {
60+ test ( 'validation errors are shown on submit ' , async function ( assert ) {
6161 let model = {
6262 name : '' ,
6363 } ;
@@ -82,6 +82,67 @@ module('Integration | Component | bs form element', function(hooks) {
8282 assert . verifySteps ( [ 'Invalid action has been called.' ] ) ;
8383 } ) ;
8484
85+ test ( 'validation errors are shown after blur' , async function ( assert ) {
86+ this . set ( 'model' , { name : '' } ) ;
87+ this . set ( 'validation' , validation ) ;
88+
89+ await render ( hbs `
90+ <BsForm @model={{changeset this.model this.validation}} as |form|>
91+ <form.element @label="Name" @property="name" />
92+ </BsForm>
93+ ` ) ;
94+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-invalid' ) ;
95+
96+ await blur ( 'input' ) ;
97+ assert . dom ( 'input' ) . hasClass ( 'is-invalid' ) ;
98+ } ) ;
99+
100+ test ( 'validation success is shown after blur' , async function ( assert ) {
101+ this . set ( 'model' , { name : 'Clara' } ) ;
102+ this . set ( 'validation' , validation ) ;
103+
104+ await render ( hbs `
105+ <BsForm @model={{changeset this.model this.validation}} as |form|>
106+ <form.element @label="Name" @property="name" />
107+ </BsForm>
108+ ` ) ;
109+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-valid' ) ;
110+
111+ await blur ( 'input' ) ;
112+ assert . dom ( 'input' ) . hasClass ( 'is-valid' ) ;
113+ } ) ;
114+
115+ test ( 'validation errors are shown after user input' , async function ( assert ) {
116+ this . set ( 'model' , { name : '' } ) ;
117+ this . set ( 'validation' , validation ) ;
118+
119+ await render ( hbs `
120+ <BsForm @model={{changeset this.model this.validation}} as |form|>
121+ <form.element @label="Name" @property="name" />
122+ </BsForm>
123+ ` ) ;
124+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-invalid' ) ;
125+
126+ await fillIn ( 'input' , 'R' ) ;
127+ await blur ( 'input' ) ;
128+ assert . dom ( 'input' ) . hasClass ( 'is-invalid' ) ;
129+ } ) ;
130+
131+ test ( 'validation success is shown after user input' , async function ( assert ) {
132+ this . set ( 'model' , { name : '' } ) ;
133+ this . set ( 'validation' , validation ) ;
134+
135+ await render ( hbs `
136+ <BsForm @model={{changeset this.model this.validation}} as |form|>
137+ <form.element @label="Name" @property="name" />
138+ </BsForm>
139+ ` ) ;
140+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-valid' ) ;
141+
142+ await fillIn ( 'input' , 'Rosa' ) ;
143+ await blur ( 'input' ) ;
144+ assert . dom ( 'input' ) . hasClass ( 'is-valid' ) ;
145+ } ) ;
85146
86147 test ( 'more complicated validations' , async function ( assert ) {
87148 let model = {
0 commit comments