@@ -133,4 +133,54 @@ module('Integration | Component | bs form element', function(hooks) {
133133 await blur ( 'input' ) ;
134134 assert . dom ( 'input' ) . hasClass ( 'is-valid' , 'validation error is shown after focus out' ) ;
135135 } ) ;
136+
137+ test ( 'does not break forms which are not using a changeset as model' , async function ( assert ) {
138+ this . set ( 'model' , { name : '' } ) ;
139+ this . set ( 'submitAction' , ( ) => {
140+ assert . step ( 'submit action has been called' ) ;
141+ } ) ;
142+
143+ await render ( hbs `
144+ <BsForm @model={{this.model}} @onSubmit={{this.submitAction}} as |form|>
145+ <form.element @label="Name" @property="name" />
146+ </BsForm>
147+ ` ) ;
148+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-valid' ) ;
149+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-invalid' ) ;
150+
151+ await fillIn ( 'input' , 'Rosa' ) ;
152+ await blur ( 'input' ) ;
153+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-valid' ) ;
154+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-invalid' ) ;
155+
156+ await triggerEvent ( 'form' , 'submit' ) ;
157+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-valid' ) ;
158+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-invalid' ) ;
159+ assert . verifySteps ( [ 'submit action has been called' ] ) ;
160+ } ) ;
161+
162+ test ( 'does not break for forms which are not having a model at all' , async function ( assert ) {
163+ this . set ( 'submitAction' , ( ) => {
164+ assert . step ( 'submit action has been called' ) ;
165+ } ) ;
166+ this . set ( 'noop' , ( ) => { } ) ;
167+
168+ await render ( hbs `
169+ <BsForm @onSubmit={{this.submitAction}} as |form|>
170+ <form.element @label="Name" @property="name" @onChange={{this.noop}} />
171+ </BsForm>
172+ ` ) ;
173+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-valid' ) ;
174+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-invalid' ) ;
175+
176+ await fillIn ( 'input' , 'Rosa' ) ;
177+ await blur ( 'input' ) ;
178+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-valid' ) ;
179+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-invalid' ) ;
180+
181+ await triggerEvent ( 'form' , 'submit' ) ;
182+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-valid' ) ;
183+ assert . dom ( 'input' ) . doesNotHaveClass ( 'is-invalid' ) ;
184+ assert . verifySteps ( [ 'submit action has been called' ] ) ;
185+ } ) ;
136186} ) ;
0 commit comments