forked from firefox-devtools/debugger
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmapOriginalExpression.spec.js
More file actions
95 lines (81 loc) · 2.48 KB
/
Copy pathmapOriginalExpression.spec.js
File metadata and controls
95 lines (81 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
// @flow
import mapExpression from "../mapExpression";
import { format } from "prettier";
const formatOutput = output =>
format(output, {
parser: "babylon"
});
const mapOriginalExpression = (expression, mappings) =>
mapExpression(expression, mappings, [], false, false).expression;
describe("mapOriginalExpression", () => {
it("simple", () => {
const generatedExpression = mapOriginalExpression("a + b;", {
a: "foo",
b: "bar"
});
expect(generatedExpression).toEqual("foo + bar;");
});
it("this", () => {
const generatedExpression = mapOriginalExpression("this.prop;", {
this: "_this"
});
expect(generatedExpression).toEqual("_this.prop;");
});
it("member expressions", () => {
const generatedExpression = mapOriginalExpression("a + b", {
a: "_mod.foo",
b: "_mod.bar"
});
expect(generatedExpression).toEqual("_mod.foo + _mod.bar;");
});
it("block", () => {
// todo: maybe wrap with parens ()
const generatedExpression = mapOriginalExpression("{a}", {
a: "_mod.foo",
b: "_mod.bar"
});
expect(generatedExpression).toEqual("{\n _mod.foo;\n}");
});
it("skips codegen with no mappings", () => {
const generatedExpression = mapOriginalExpression("a + b", {
a: "a",
c: "_c"
});
expect(generatedExpression).toEqual("a + b");
});
it("object destructuring", () => {
const generatedExpression = mapOriginalExpression("({ a } = { a: 4 })", {
a: "_mod.foo"
});
expect(formatOutput(generatedExpression)).toEqual(
formatOutput("({ a: _mod.foo } = {\n a: 4 \n})")
);
});
it("nested object destructuring", () => {
const generatedExpression = mapOriginalExpression(
"({ a: { b, c } } = { a: 4 })",
{
a: "_mod.foo",
b: "_mod.bar"
}
);
expect(formatOutput(generatedExpression)).toEqual(
formatOutput("({ a: { b: _mod.bar, c } } = {\n a: 4 \n})")
);
});
it("shadowed bindings", () => {
const generatedExpression = mapOriginalExpression(
"window.thing = function fn(){ var a; a; b; }; a; b; ",
{
a: "_a",
b: "_b"
}
);
expect(generatedExpression).toEqual(
"window.thing = function fn() {\n var a;\n a;\n _b;\n};\n\n_a;\n_b;"
);
});
});