feat(forms): update FormBuilder to support async validations

Closes #5020
This commit is contained in:
vsavkin
2015-11-02 10:00:56 -08:00
committed by Victor Savkin
parent 31c12af81f
commit 1c322f13e5
2 changed files with 33 additions and 31 deletions

View File

@ -9,9 +9,13 @@ import {
afterEach,
el
} from 'angular2/testing_internal';
import {Control, FormBuilder, Validators} from 'angular2/core';
import {Control, FormBuilder} from 'angular2/core';
import {PromiseWrapper} from 'angular2/src/core/facade/promise';
export function main() {
function syncValidator(_) { return null; }
function asyncValidator(_) { return PromiseWrapper.resolve(null); }
describe("Form Builder", () => {
var b;
@ -24,18 +28,21 @@ export function main() {
});
it("should create controls from an array", () => {
var g = b.group({"login": ["some value"], "password": ["some value", Validators.required]});
var g = b.group(
{"login": ["some value"], "password": ["some value", syncValidator, asyncValidator]});
expect(g.controls["login"].value).toEqual("some value");
expect(g.controls["password"].value).toEqual("some value");
expect(g.controls["password"].validator).toEqual(Validators.required);
expect(g.controls["password"].validator).toEqual(syncValidator);
expect(g.controls["password"].asyncValidator).toEqual(asyncValidator);
});
it("should use controls", () => {
var g = b.group({"login": b.control("some value", Validators.required)});
var g = b.group({"login": b.control("some value", syncValidator, asyncValidator)});
expect(g.controls["login"].value).toEqual("some value");
expect(g.controls["login"].validator).toBe(Validators.required);
expect(g.controls["login"].validator).toBe(syncValidator);
expect(g.controls["login"].asyncValidator).toBe(asyncValidator);
});
it("should create groups with optional controls", () => {
@ -45,16 +52,21 @@ export function main() {
});
it("should create groups with a custom validator", () => {
var g = b.group({"login": "some value"}, {"validator": Validators.nullValidator});
var g = b.group({"login": "some value"},
{"validator": syncValidator, "asyncValidator": asyncValidator});
expect(g.validator).toBe(Validators.nullValidator);
expect(g.validator).toBe(syncValidator);
expect(g.asyncValidator).toBe(asyncValidator);
});
it("should create control arrays", () => {
var c = b.control("three");
var a = b.array(["one", ["two", Validators.required], c, b.array(['four'])]);
var a = b.array(["one", ["two", syncValidator], c, b.array(['four'])], syncValidator,
asyncValidator);
expect(a.value).toEqual(['one', 'two', 'three', ['four']]);
expect(a.validator).toBe(syncValidator);
expect(a.asyncValidator).toBe(asyncValidator);
});
});
}