Skip to content

Commit 62052a5

Browse files
committed
add failing tests for validation of unchanged content
1 parent 66c8728 commit 62052a5

File tree

1 file changed

+62
-1
lines changed

1 file changed

+62
-1
lines changed

tests/integration/components/bs-form-element-test.js

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)