jsfmt.spec.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. run_spec(__dirname, ["babylon", "typescript", "flow"]);
  2. const prettier = require("prettier/local");
  3. test("translates cursor correctly in basic case", () => {
  4. expect(
  5. prettier.formatWithCursor(" 1", { parser: "babylon", cursorOffset: 2 })
  6. ).toEqual({
  7. formatted: "1;\n",
  8. cursorOffset: 1
  9. });
  10. });
  11. test("positions cursor relative to closest node, not SourceElement", () => {
  12. const code = "return 15";
  13. expect(
  14. prettier.formatWithCursor(code, { parser: "babylon", cursorOffset: 15 })
  15. ).toEqual({
  16. formatted: "return 15;\n",
  17. cursorOffset: 7
  18. });
  19. });
  20. test("keeps cursor inside formatted node", () => {
  21. const code = "return 15";
  22. expect(
  23. prettier.formatWithCursor(code, { parser: "babylon", cursorOffset: 14 })
  24. ).toEqual({
  25. formatted: "return 15;\n",
  26. cursorOffset: 7
  27. });
  28. });
  29. test("doesn't insert second placeholder for nonexistent TypeAnnotation", () => {
  30. const code = `
  31. foo('bar', cb => {
  32. console.log('stuff')
  33. })`;
  34. expect(
  35. prettier.formatWithCursor(code, { parser: "babylon", cursorOffset: 24 })
  36. ).toEqual({
  37. formatted: `foo("bar", cb => {
  38. console.log("stuff");
  39. });
  40. `,
  41. cursorOffset: 23
  42. });
  43. });