Skip to content

Commit 255ee41

Browse files
authored
Merge pull request #115 from jsr-core/test-is-required-of
test[isRequiredOf]: add proper `true` or `false` cases
2 parents 64ff84c + c84eb89 commit 255ee41

File tree

1 file changed

+31
-16
lines changed

1 file changed

+31
-16
lines changed

is/required_of_test.ts

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,31 @@ Deno.test("isRequiredOf<T>", async (t) => {
1919
});
2020

2121
await t.step("returns true on Required<T> object", () => {
22+
assertEquals(isRequiredOf(pred)({ a: 0, b: "a", c: true, d: "a" }), true);
2223
assertEquals(
23-
isRequiredOf(pred)({ a: undefined, b: undefined, c: undefined }),
24-
false,
25-
"Object does not have required properties",
26-
);
27-
assertEquals(
28-
isRequiredOf(pred)({}),
29-
false,
30-
"Object does not have required properties",
24+
isRequiredOf(pred)({ a: 0, b: undefined, c: true, d: "a" }),
25+
true,
26+
"Union type contains 'undefined'",
3127
);
3228
});
3329

3430
await t.step("returns false on non Required<T> object", () => {
3531
assertEquals(isRequiredOf(pred)("a"), false, "Value is not an object");
3632
assertEquals(
37-
isRequiredOf(pred)({ a: 0, b: "a", c: "" }),
33+
isRequiredOf(pred)({ a: 0, b: "a", c: 0, d: "a" }),
3834
false,
3935
"Object have a different type property",
4036
);
37+
assertEquals(
38+
isRequiredOf(pred)({ a: 0, b: "a", d: "a" }),
39+
false,
40+
"Object does not have required properties",
41+
);
42+
assertEquals(
43+
isRequiredOf(pred)({ a: 0, b: "a", c: undefined, d: "a" }),
44+
false,
45+
"Optional property that converted to required is 'undefined'",
46+
);
4147
});
4248

4349
await t.step("predicated type is correct", () => {
@@ -69,24 +75,33 @@ Deno.test("isRequiredOf<T>", async (t) => {
6975

7076
await t.step("returns true on Required<T> object", () => {
7177
assertEquals(
72-
isRequiredOf(pred)({ a: undefined, [b]: undefined, [c]: undefined }),
73-
false,
74-
"Object does not have required properties",
78+
isRequiredOf(pred)({ a: 0, [b]: "a", [c]: true, [d]: "a" }),
79+
true,
7580
);
7681
assertEquals(
77-
isRequiredOf(pred)({}),
78-
false,
79-
"Object does not have required properties",
82+
isRequiredOf(pred)({ a: 0, [b]: undefined, [c]: true, [d]: "a" }),
83+
true,
84+
"Union type contains 'undefined'",
8085
);
8186
});
8287

8388
await t.step("returns false on non Required<T> object", () => {
8489
assertEquals(isRequiredOf(pred)("a"), false, "Value is not an object");
8590
assertEquals(
86-
isRequiredOf(pred)({ a: 0, [b]: "a", [c]: "" }),
91+
isRequiredOf(pred)({ a: 0, [b]: "a", [c]: 0, [d]: "a" }),
8792
false,
8893
"Object have a different type property",
8994
);
95+
assertEquals(
96+
isRequiredOf(pred)({ a: 0, [b]: "a", [d]: "a" }),
97+
false,
98+
"Object does not have required properties",
99+
);
100+
assertEquals(
101+
isRequiredOf(pred)({ a: 0, [b]: "a", [c]: undefined, [d]: "a" }),
102+
false,
103+
"Optional property that converted to required is 'undefined'",
104+
);
90105
});
91106

92107
await t.step("predicated type is correct", () => {

0 commit comments

Comments
 (0)