import chalk from "chalk"; import stripAnsi from "strip-ansi"; import highlight, { shouldHighlight, getChalk } from ".."; describe("@babel/highlight", function() { function stubColorSupport(supported) { let originalSupportsColor; beforeEach(function() { originalSupportsColor = chalk.supportsColor; chalk.supportsColor = supported; }); afterEach(function() { chalk.supportsColor = originalSupportsColor; }); } describe("highlight", function() { describe("when colors are supported", function() { stubColorSupport(true); it("highlights code", function() { const code = "console.log('hi')"; const result = highlight(code); const stripped = stripAnsi(result); expect(result.length).toBeGreaterThan(stripped.length); expect(stripped).toBe(code); }); }); describe("when colors are not supported", function() { stubColorSupport(false); it("does not attempt to highlight code", function() { const code = "console.log('hi')"; const result = highlight(code); const stripped = stripAnsi(result); expect(result.length).toBe(stripped.length); expect(result).toBe(code); }); describe("and the forceColor option is passed", function() { it("highlights the code anyway", function() { const code = "console.log('hi')"; const result = highlight(code, { forceColor: true }); const stripped = stripAnsi(result); expect(result.length).toBeGreaterThan(stripped.length); expect(stripped).toBe(code); }); }); }); }); describe("shouldHighlight", function() { describe("when colors are supported", function() { stubColorSupport(true); it("returns true", function() { expect(shouldHighlight({})).toBeTruthy(); }); }); describe("when colors are not supported", function() { stubColorSupport(false); it("returns false", function() { expect(shouldHighlight({})).toBeFalsy(); }); describe("and the forceColor option is passed", function() { it("returns true", function() { expect(shouldHighlight({ forceColor: true })).toBeTruthy(); }); }); }); }); describe("getChalk", function() { describe("when colors are supported", function() { stubColorSupport(true); describe("when forceColor is not passed", function() { it("returns a Chalk instance", function() { expect(getChalk({}).constructor).toBe(chalk.constructor); }); }); describe("when forceColor is passed", function() { it("returns a Chalk instance", function() { expect(getChalk({ forceColor: true }).constructor).toBe( chalk.constructor, ); }); }); }); describe("when colors are not supported", function() { stubColorSupport(false); describe("when forceColor is not passed", function() { it("returns a Chalk instance", function() { expect(getChalk({}).constructor).toBe(chalk.constructor); }); }); describe("when forceColor is passed", function() { it("returns a Chalk instance", function() { expect(getChalk({ forceColor: true }).constructor).toBe( chalk.constructor, ); }); }); }); }); });