Files

80 lines
2.5 KiB
TypeScript
Raw Permalink Normal View History

import { describe, expect, it } from "vitest";
import { fileURLToPath } from "node:url";
import { RuleTester } from "oxlint/plugins-dev";
import rule from "../../scripts/lint/rules/no-shared-module-mock.mjs";
RuleTester.describe = describe;
RuleTester.it = it;
const tester = new RuleTester({
cwd: fileURLToPath(new URL("../../", import.meta.url)),
languageOptions: { parserOptions: { lang: "ts" } },
});
const sharedFilename = fileURLToPath(
new URL("./noSharedModuleMockRule.test.ts", import.meta.url),
);
const isolatedFilename = fileURLToPath(
new URL("../process-global/noSharedModuleMockRule.test.ts", import.meta.url),
);
tester.run("no-shared-module-mock", rule, {
valid: [
{
filename: isolatedFilename,
code: 'import { vi } from "vitest"; vi.mock("./dependency.js");',
},
{
filename: isolatedFilename,
code: 'import * as testing from "vitest"; testing.vi.doMock("./dependency.js");',
},
{
filename: sharedFilename,
code: 'import { vi } from "vitest"; vi.spyOn(target, "method");',
},
{
filename: sharedFilename,
code: "const mock = { mock() {} }; mock.mock();",
},
{
filename: sharedFilename,
code: 'const source = "vi.mock(\\"./dependency.js\\")"; // vi.mock("./dependency.js")',
},
{
filename: sharedFilename,
code: 'import { vi as testing } from "vitest"; function local(testing: { mock(): void }) { testing.mock(); }',
},
{
filename: sharedFilename,
code: 'import * as vitest from "vitest"; function local(vitest: { vi: { mock(): void } }) { vitest.vi.mock(); }',
},
{
filename: fileURLToPath(
new URL("../../tests/unknown/ignored.test.ts", import.meta.url),
),
code: 'import { vi } from "vitest"; vi.mock("./dependency.js");',
},
],
invalid: [
{
filename: sharedFilename,
code: 'import { vi } from "vitest"; vi.mock("./dependency.js");',
errors: [{ messageId: "shared" }],
},
{
filename: sharedFilename,
code: 'import { vi as testing } from "vitest"; testing.doMock("./dependency.js");',
errors: [{ messageId: "shared" }],
},
{
filename: sharedFilename,
code: 'import * as testing from "vitest"; testing.vi.mock("./dependency.js");',
errors: [{ messageId: "shared" }],
},
{
filename: sharedFilename,
code: 'import * as vitest from "vitest"; vitest.vi["doMock"]("./dependency.js");',
errors: [{ messageId: "shared" }],
},
],
});