Skip to content

Commit

Permalink
test(helpers): add tests for get with no/falsy receiver
Browse files Browse the repository at this point in the history
  • Loading branch information
lightmare committed Nov 9, 2021
1 parent 43f9899 commit 1c6072a
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// ensure we test the helper implementation,
// not built-in Reflect.get to which it defers
delete Reflect;

class Target {
get typeOf() {
return this === null ? "null" : typeof this;
}
};

// check that the 1st argument (target) *is not* used
// in place of present but undefined 3rd argument (receiver)
expect(HELPER_GET(new Target, "typeOf", undefined)).toBe("undefined");

// because the helper replaces itself upon invocation,
// check it again with nullish arguments
expect(HELPER_GET(new Target, "typeOf", undefined)).toBe("undefined");
expect(HELPER_GET(new Target, "typeOf", null)).toBe("null");

// check other falsy types
expect(HELPER_GET(new Target, "typeOf", false)).toBe("boolean");
expect(HELPER_GET(new Target, "typeOf", 0)).toBe("number");
expect(HELPER_GET(new Target, "typeOf", "")).toBe("string");
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"plugins": ["./plugin"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module.exports = function() {
return {
visitor: {
Identifier(path) {
if (path.node.name === "HELPER_GET") {
const helper = this.addHelper("get");
path.replaceWith(helper);
}
},
},
};
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// ensure we test the helper implementation,
// not built-in Reflect.get to which it defers
delete Reflect;

class Target {
get receiver() {
return this;
}
};

// check that the 1st argument (target) *is* used
// in place of missing 3rd argument (receiver)
expect(HELPER_GET(new Target, "receiver")).toBeInstanceOf(Target);

// because the helper replaces itself upon invocation,
// check it again with the same arguments
expect(HELPER_GET(new Target, "receiver")).toBeInstanceOf(Target);
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"plugins": ["./plugin"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module.exports = function() {
return {
visitor: {
Identifier(path) {
if (path.node.name === "HELPER_GET") {
const helper = this.addHelper("get");
path.replaceWith(helper);
}
},
},
};
};

0 comments on commit 1c6072a

Please sign in to comment.