diff --git a/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.spec.ts b/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.spec.ts index 05a8efd815..541f38e262 100644 --- a/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.spec.ts +++ b/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.spec.ts @@ -89,6 +89,24 @@ describe('AlfrescoLogin', () => { expect(element.querySelector('input[type="text"]').value).toEqual(''); }); + it('should render validation min-length error when the username is just 1 character', () => { + let compiled = componentFixture.debugElement.nativeElement; + let usernameInput = compiled.querySelector('#username'); + + componentFixture.detectChanges(); + + usernameInput.value = '1'; + usernameInput.dispatchEvent(new Event('input')); + + componentFixture.detectChanges(); + + expect(component.formError).toBeDefined(); + expect(component.formError.username).toBeDefined(); + expect(component.formError.username).toEqual('LOGIN.MESSAGES.USERNAME-MIN'); + expect(compiled.querySelector('#username-error')).toBeDefined(); + expect(compiled.querySelector('#username-error').innerText).toEqual('LOGIN.MESSAGES.USERNAME-MIN'); + }); + it('should render validation min-length error when the username is lower than 4 characters', () => { let compiled = componentFixture.debugElement.nativeElement; let usernameInput = compiled.querySelector('#username'); @@ -100,10 +118,6 @@ describe('AlfrescoLogin', () => { componentFixture.detectChanges(); - component.onValueChanged(null); - - componentFixture.detectChanges(); - expect(component.formError).toBeDefined(); expect(component.formError.username).toBeDefined(); expect(component.formError.username).toEqual('LOGIN.MESSAGES.USERNAME-MIN'); @@ -111,21 +125,18 @@ describe('AlfrescoLogin', () => { expect(compiled.querySelector('#username-error').innerText).toEqual('LOGIN.MESSAGES.USERNAME-MIN'); }); - it('should render validation required error when the username is empty', () => { + it('should render validation required error when the username is empty and dirty', () => { let compiled = componentFixture.debugElement.nativeElement; let usernameInput = compiled.querySelector('#username'); componentFixture.detectChanges(); usernameInput.value = ''; + component.form.controls.username.markAsDirty(); usernameInput.dispatchEvent(new Event('input')); componentFixture.detectChanges(); - component.onValueChanged(null); - - componentFixture.detectChanges(); - expect(component.formError).toBeDefined(); expect(component.formError.username).toBeDefined(); expect(component.formError.username).toEqual('LOGIN.MESSAGES.USERNAME-REQUIRED'); @@ -133,21 +144,18 @@ describe('AlfrescoLogin', () => { expect(compiled.querySelector('#username-error').innerText).toEqual('LOGIN.MESSAGES.USERNAME-REQUIRED'); }); - it('should render validation required error when the password is empty', () => { + it('should render validation required error when the password is empty and dirty', () => { let compiled = componentFixture.debugElement.nativeElement; let passwordInput = compiled.querySelector('#password'); componentFixture.detectChanges(); passwordInput.value = ''; + component.form.controls.password.markAsDirty(); passwordInput.dispatchEvent(new Event('input')); componentFixture.detectChanges(); - component.onValueChanged(null); - - componentFixture.detectChanges(); - expect(component.formError).toBeDefined(); expect(component.formError.password).toBeDefined(); expect(component.formError.password).toEqual('LOGIN.MESSAGES.PASSWORD-REQUIRED'); @@ -164,15 +172,15 @@ describe('AlfrescoLogin', () => { usernameInput.value = 'fake-username'; passwordInput.value = 'fake-password'; + + component.form.controls.username.markAsDirty(); + component.form.controls.password.markAsDirty(); + usernameInput.dispatchEvent(new Event('input')); passwordInput.dispatchEvent(new Event('input')); componentFixture.detectChanges(); - component.onValueChanged(null); - - componentFixture.detectChanges(); - expect(component.formError).toBeDefined(); expect(component.formError.username).toEqual(''); expect(component.formError.password).toEqual(''); @@ -189,15 +197,15 @@ describe('AlfrescoLogin', () => { usernameInput.value = 'fake-change-username'; passwordInput.value = 'fake-change-password'; + + component.form.controls.username.markAsDirty(); + component.form.controls.password.markAsDirty(); + usernameInput.dispatchEvent(new Event('input')); passwordInput.dispatchEvent(new Event('input')); componentFixture.detectChanges(); - component.onValueChanged(null); - - componentFixture.detectChanges(); - expect(compiled.querySelector('input[type="text"]').value).toEqual('fake-change-username'); expect(compiled.querySelector('input[type="password"]').value).toEqual('fake-change-password'); }); @@ -214,12 +222,12 @@ describe('AlfrescoLogin', () => { usernameInput.value = 'fake-username'; passwordInput.value = 'fake-password'; + usernameInput.dispatchEvent(new Event('input')); passwordInput.dispatchEvent(new Event('input')); componentFixture.detectChanges(); - component.onValueChanged(null); compiled.querySelector('button').click(); componentFixture.detectChanges(); @@ -240,12 +248,12 @@ describe('AlfrescoLogin', () => { usernameInput.value = 'fake-wrong-username'; passwordInput.value = 'fake-password'; + usernameInput.dispatchEvent(new Event('input')); passwordInput.dispatchEvent(new Event('input')); componentFixture.detectChanges(); - component.onValueChanged(null); compiled.querySelector('button').click(); componentFixture.detectChanges(); @@ -268,12 +276,12 @@ describe('AlfrescoLogin', () => { usernameInput.value = 'fake-username'; passwordInput.value = 'fake-wrong-password'; + usernameInput.dispatchEvent(new Event('input')); passwordInput.dispatchEvent(new Event('input')); componentFixture.detectChanges(); - component.onValueChanged(null); compiled.querySelector('button').click(); componentFixture.detectChanges(); @@ -296,12 +304,12 @@ describe('AlfrescoLogin', () => { usernameInput.value = 'fake-wrong-username'; passwordInput.value = 'fake-wrong-password'; + usernameInput.dispatchEvent(new Event('input')); passwordInput.dispatchEvent(new Event('input')); componentFixture.detectChanges(); - component.onValueChanged(null); compiled.querySelector('button').click(); componentFixture.detectChanges(); @@ -326,12 +334,12 @@ describe('AlfrescoLogin', () => { usernameInput.value = 'fake-username'; passwordInput.value = 'fake-password'; + usernameInput.dispatchEvent(new Event('input')); passwordInput.dispatchEvent(new Event('input')); componentFixture.detectChanges(); - component.onValueChanged(null); compiled.querySelector('button').click(); componentFixture.detectChanges(); @@ -357,12 +365,12 @@ describe('AlfrescoLogin', () => { usernameInput.value = 'fake-username'; passwordInput.value = 'fake-wrong-password'; + usernameInput.dispatchEvent(new Event('input')); passwordInput.dispatchEvent(new Event('input')); componentFixture.detectChanges(); - component.onValueChanged(null); compiled.querySelector('button').click(); componentFixture.detectChanges(); diff --git a/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.ts b/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.ts index 5a9208e2de..9da606108c 100644 --- a/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.ts +++ b/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.ts @@ -131,7 +131,7 @@ export class AlfrescoLoginComponent { for (let field in this.formError) { if (field) { this.formError[field] = ''; - let hasError = (this.form.controls[field].errors && !this.form.controls[field].pristine) || + let hasError = (this.form.controls[field].errors && data[field] !== '') || (this.form.controls[field].dirty && !this.form.controls[field].valid); if (hasError) { for (let key in this.form.controls[field].errors) {