76 lines
1.8 KiB
JavaScript
76 lines
1.8 KiB
JavaScript
import { outdent } from "outdent";
|
|
import getPrettier from "../../../config/get-prettier.js";
|
|
|
|
run_spec(import.meta, ["babel", "typescript", "flow"]);
|
|
|
|
let prettier;
|
|
beforeAll(async () => {
|
|
prettier = await getPrettier();
|
|
});
|
|
|
|
test("translates cursor correctly in basic case", async () => {
|
|
expect(
|
|
await prettier.formatWithCursor(" 1", { parser: "babel", cursorOffset: 2 })
|
|
).toMatchObject({
|
|
formatted: "1;\n",
|
|
cursorOffset: 1,
|
|
});
|
|
});
|
|
|
|
test("positions cursor relative to closest node, not SourceElement", async () => {
|
|
const code = "return 15";
|
|
expect(
|
|
await prettier.formatWithCursor(code, { parser: "babel", cursorOffset: 15 })
|
|
).toMatchObject({
|
|
formatted: "return 15;\n",
|
|
cursorOffset: 7,
|
|
});
|
|
});
|
|
|
|
test("keeps cursor inside formatted node", async () => {
|
|
const code = "return 15";
|
|
expect(
|
|
await prettier.formatWithCursor(code, { parser: "babel", cursorOffset: 14 })
|
|
).toMatchObject({
|
|
formatted: "return 15;\n",
|
|
cursorOffset: 7,
|
|
});
|
|
});
|
|
|
|
test("doesn't insert second placeholder for nonexistent TypeAnnotation", async () => {
|
|
const code =
|
|
"\n" +
|
|
outdent`
|
|
foo('bar', cb => {
|
|
console.log('stuff')
|
|
})
|
|
`;
|
|
expect(
|
|
await prettier.formatWithCursor(code, { parser: "babel", cursorOffset: 24 })
|
|
).toMatchObject({
|
|
formatted:
|
|
outdent`
|
|
foo("bar", (cb) => {
|
|
console.log("stuff");
|
|
});
|
|
` + "\n",
|
|
cursorOffset: 25,
|
|
});
|
|
});
|
|
|
|
test("cursorOffset === rangeStart", async () => {
|
|
const code = "1.0000\n2.0000\n3.0000";
|
|
|
|
expect(
|
|
await prettier.formatWithCursor(code, {
|
|
parser: "babel",
|
|
cursorOffset: 7,
|
|
rangeStart: 7,
|
|
rangeEnd: 8,
|
|
})
|
|
).toMatchObject({
|
|
formatted: "1.0000\n2.0;\n3.0000",
|
|
cursorOffset: 7,
|
|
});
|
|
});
|