Allow optional shape entries
This commit is contained in:
parent
5ce10bed57
commit
26db320717
2 changed files with 31 additions and 8 deletions
|
@ -140,6 +140,33 @@ describe(Parse.shape, () => {
|
|||
const shape = { name: Parse.string, age: Parse.number };
|
||||
expect(() => Parse.shape(shape)(obj)).toThrow(ParseError);
|
||||
});
|
||||
|
||||
test("allows optional object entries", () => {
|
||||
const parseThing = Parse.shape({
|
||||
name: Parse.string,
|
||||
another: Parse.optional(Parse.string),
|
||||
});
|
||||
|
||||
const result = parseThing({
|
||||
name: "hello",
|
||||
});
|
||||
|
||||
expect(result).toEqual({
|
||||
name: "hello",
|
||||
another: undefined,
|
||||
});
|
||||
});
|
||||
|
||||
test("throws when a required value is missing", () => {
|
||||
const parseThing = Parse.shape({
|
||||
name: Parse.string,
|
||||
another: Parse.optional(Parse.string),
|
||||
});
|
||||
|
||||
expect(() => {
|
||||
parseThing({ another: "hello" });
|
||||
}).toThrow(ParseError);
|
||||
});
|
||||
});
|
||||
|
||||
describe(Parse.enum, () => {
|
||||
|
@ -197,7 +224,7 @@ describe(Parse.nan, () => {
|
|||
});
|
||||
});
|
||||
|
||||
class TestClass {}
|
||||
class TestClass { }
|
||||
|
||||
describe(Parse.instanceOf, () => {
|
||||
test("Parses instances of a class", () => {
|
||||
|
@ -214,7 +241,7 @@ describe(Parse.instanceOf, () => {
|
|||
|
||||
test("Throws an error when parsing an instance of a different class", () => {
|
||||
const testClass = new TestClass();
|
||||
expect(() => Parse.instanceOf(class AnotherClass {})(testClass)).toThrow(
|
||||
expect(() => Parse.instanceOf(class AnotherClass { })(testClass)).toThrow(
|
||||
ParseError,
|
||||
);
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue