mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-04-04 05:32:56 +00:00
83 lines
2.7 KiB
JavaScript
83 lines
2.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/*global chai, validate */
|
|
|
|
var expect = chai.expect;
|
|
|
|
describe("Validator", function() {
|
|
"use strict";
|
|
|
|
// test helpers
|
|
function create(dependencies, values) {
|
|
var validator = new loop.validate.Validator(dependencies);
|
|
return validator.validate.bind(validator, values);
|
|
}
|
|
|
|
// test types
|
|
function X(){}
|
|
function Y(){}
|
|
|
|
describe("#validate", function() {
|
|
it("should check for a single required dependency when no option passed",
|
|
function() {
|
|
expect(create({x: Number}, {}))
|
|
.to.Throw(TypeError, /missing required x$/);
|
|
});
|
|
|
|
it("should check for a missing required dependency, undefined passed",
|
|
function() {
|
|
expect(create({x: Number}, {x: undefined}))
|
|
.to.Throw(TypeError, /missing required x$/);
|
|
});
|
|
|
|
it("should check for multiple missing required dependencies", function() {
|
|
expect(create({x: Number, y: String}, {}))
|
|
.to.Throw(TypeError, /missing required x, y$/);
|
|
});
|
|
|
|
it("should check for required dependency types", function() {
|
|
expect(create({x: Number}, {x: "woops"})).to.Throw(
|
|
TypeError, /invalid dependency: x; expected Number, got String$/);
|
|
});
|
|
|
|
it("should check for a dependency to match at least one of passed types",
|
|
function() {
|
|
expect(create({x: [X, Y]}, {x: 42})).to.Throw(
|
|
TypeError, /invalid dependency: x; expected X, Y, got Number$/);
|
|
expect(create({x: [X, Y]}, {x: new Y()})).to.not.Throw();
|
|
});
|
|
|
|
it("should skip type check if required dependency type is undefined",
|
|
function() {
|
|
expect(create({x: undefined}, {x: /whatever/})).not.to.Throw();
|
|
});
|
|
|
|
it("should check for a String dependency", function() {
|
|
expect(create({foo: String}, {foo: 42})).to.Throw(
|
|
TypeError, /invalid dependency: foo/);
|
|
});
|
|
|
|
it("should check for a Number dependency", function() {
|
|
expect(create({foo: Number}, {foo: "x"})).to.Throw(
|
|
TypeError, /invalid dependency: foo/);
|
|
});
|
|
|
|
it("should check for a custom constructor dependency", function() {
|
|
expect(create({foo: X}, {foo: null})).to.Throw(
|
|
TypeError, /invalid dependency: foo; expected X, got null$/);
|
|
});
|
|
|
|
it("should check for a native constructor dependency", function() {
|
|
expect(create({foo: mozRTCSessionDescription}, {foo: "x"}))
|
|
.to.Throw(TypeError,
|
|
/invalid dependency: foo; expected mozRTCSessionDescription/);
|
|
});
|
|
|
|
it("should check for a null dependency", function() {
|
|
expect(create({foo: null}, {foo: "x"})).to.Throw(
|
|
TypeError, /invalid dependency: foo; expected null, got String$/);
|
|
});
|
|
});
|
|
});
|