"use strict";

const runPrettier = require("../runPrettier");

describe("format correctly if stdin content compatible with stdin-filepath", () => {
  runPrettier(
    "cli",
    ["--stdin-filepath", "abc.css"],
    { input: ".name { display: none; }" } // css
  ).test({
    status: 0
  });
});

describe("throw error if stdin content incompatible with stdin-filepath", () => {
  runPrettier(
    "cli",
    ["--stdin-filepath", "abc.js"],
    { input: ".name { display: none; }" } // css
  ).test({
    status: "non-zero"
  });
});

describe("gracefully handle stdin-filepath with nonexistent directory", () => {
  runPrettier(
    "cli",
    ["--stdin-filepath", "definitely/nonexistent/path.css"],
    { input: ".name { display: none; }" } // css
  ).test({
    status: 0
  });
});

describe("apply editorconfig for stdin-filepath with nonexistent file", () => {
  runPrettier(
    "cli",
    ["--stdin-filepath", "config/editorconfig/nonexistent.js"],
    {
      input: `
function f() {
  console.log("should be indented with a tab");
}
`.trim() // js
    }
  ).test({
    status: 0
  });
});

describe("apply editorconfig for stdin-filepath with nonexistent directory", () => {
  runPrettier(
    "cli",
    ["--stdin-filepath", "config/editorconfig/nonexistent/one/two/three.js"],
    {
      input: `
function f() {
  console.log("should be indented with a tab");
}
`.trim() // js
    }
  ).test({
    status: 0
  });
});

describe("don’t apply editorconfig outside project for stdin-filepath with nonexistent directory", () => {
  runPrettier(
    "cli",
    [
      "--stdin-filepath",
      "config/editorconfig/repo-root/nonexistent/one/two/three.js"
    ],
    {
      input: `
function f() {
  console.log("should be indented with 2 spaces");
}
`.trim() // js
    }
  ).test({
    status: 0
  });
});

describe("output file as-is if stdin-filepath matched patterns in ignore-path", () => {
  runPrettier("cli/stdin-ignore", ["--stdin-filepath", "ignore/example.js"], {
    input: "hello_world( );"
  }).test({
    stdout: "hello_world( );",
    status: 0
  });
});
