80 lines
2.5 KiB
TypeScript
80 lines
2.5 KiB
TypeScript
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" }],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
});
|