Add tests for model driven form
parent
67def504ef
commit
7ed157625b
|
@ -9,7 +9,7 @@ describe('Blog Entry Isolated Test', () => {
|
|||
it('should render DOM correctly according to Input', () => {
|
||||
// Umgebung initialisieren
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [BlogEntryComponent],
|
||||
declarations: [BlogEntryComponent]
|
||||
});
|
||||
const fixture = TestBed.createComponent(BlogEntryComponent);
|
||||
const blogEntryComponent : BlogEntryComponent = fixture.componentInstance;
|
||||
|
|
|
@ -1,19 +1,67 @@
|
|||
import {ReactiveFormsModule} from '@angular/forms';
|
||||
import {FormGroup, ReactiveFormsModule} from '@angular/forms';
|
||||
import {TestBed} from '@angular/core/testing';
|
||||
import {ModelDrivenFormComponent} from './model-driven-form.component';
|
||||
import {UserService} from '../services/user-service/user.service';
|
||||
import {ShowErrorComponentModelDriven} from "../show-error/show-error-model-driven.component";
|
||||
import {TaskServiceModelForm} from "../services/task-service/task-model-form.service";
|
||||
import {ShowErrorComponentModelDriven} from "../show-error/show-error-model-driven.component";
|
||||
import {generateRandomString} from "../../test/test.helper";
|
||||
|
||||
beforeEach(() => {
|
||||
describe('Model Driven Form', () => {
|
||||
|
||||
let fixture ;
|
||||
let form ;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [ReactiveFormsModule],
|
||||
providers: [TaskServiceModelForm, UserService],
|
||||
declarations: [ModelDrivenFormComponent, ShowErrorComponentModelDriven]
|
||||
});
|
||||
});
|
||||
fixture = TestBed.createComponent(ModelDrivenFormComponent);
|
||||
form = fixture.componentInstance.taskForm;
|
||||
});
|
||||
|
||||
describe('Model Driven Form', () => {
|
||||
it('should show error on state ne BACKLOG and no Assignee given', () => {
|
||||
const stateControl = form.get('state');
|
||||
expect(form.errors).toBeNull();
|
||||
stateControl.setValue('IN_PROGRESS');
|
||||
expect(form.errors).toEqual({assigneeRequired: true});
|
||||
});
|
||||
|
||||
it('should show error on tag name provided with gt 0 and lt 3', () => {
|
||||
// "add tag" Aufruf starten -> neue FormGroup wird erstellt
|
||||
const tagControlGroup : FormGroup = fixture.componentInstance.createTagControl()
|
||||
const tagLabel = tagControlGroup.get('label');
|
||||
expectErrorOnInput(tagLabel, '');
|
||||
expectErrorOnInput(tagLabel, 'xy', {requiredLength: 3, actualLength: 2}, 'minlength');
|
||||
});
|
||||
|
||||
it('should show error in description gt 2000 signs', () => {
|
||||
const descriptionControl = form.get('description');
|
||||
expectErrorOnInput(descriptionControl, generateRandomString(2000));
|
||||
expectErrorOnInput(descriptionControl, generateRandomString(2001), {requiredLength: 2000, actualLength: 2001}, 'maxlength');
|
||||
});
|
||||
|
||||
it('should show error on email not matching email-pattern', () => {
|
||||
const assigneeFormGroup = form.get('assignee');
|
||||
const assigneeEMail = assigneeFormGroup.get('email');
|
||||
const invalidEMailErrorObject = {invalidEMail: true};
|
||||
expectErrorOnInput(assigneeEMail, 'test', invalidEMailErrorObject);
|
||||
expectErrorOnInput(assigneeEMail, 'test@web', invalidEMailErrorObject);
|
||||
expectErrorOnInput(assigneeEMail, 'test@web.d', invalidEMailErrorObject);
|
||||
expectErrorOnInput(assigneeEMail, 'test@web.de');
|
||||
});
|
||||
|
||||
function expectErrorOnInput(formControl, inputString, expectedErrorObject?, expectedErrorAttribute?){
|
||||
formControl.setValue(inputString);
|
||||
if (expectedErrorObject && expectedErrorAttribute) {
|
||||
expect(formControl.errors[expectedErrorAttribute]).toEqual(expectedErrorObject);
|
||||
} else if (expectedErrorObject) {
|
||||
expect(formControl.errors).toEqual(expectedErrorObject);
|
||||
} else {
|
||||
expect(formControl.errors).toBeNull();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
// method to create random string of given length, from:
|
||||
// http://stackoverflow.com/questions/16106701/how-to-generate-a-random-string-of-letters-and-numbers-in-javascript
|
||||
export function generateRandomString(len) {
|
||||
var text = "";
|
||||
var charset = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||||
for( var i=0; i < len; i++ )
|
||||
text += charset.charAt(Math.floor(Math.random() * charset.length));
|
||||
return text;
|
||||
}
|
Loading…
Reference in New Issue