UNPKG

@epic-web/config

Version:

Reasonable Oxlint, Oxfmt, and TypeScript configs for epic web devs

109 lines (98 loc) 2.36 kB
import { describe, expect, it } from 'vitest' import { disposeOxlintFixture, runOxlint, writeOxlintFixture, } from './oxlint-test-utils.js' describe('epic-web/prefer-dispose-in-tests', () => { it('reports lifecycle hooks that can move into a test body', async () => { const fixture = await writeOxlintFixture({ filename: 'sample.test.js', code: ` describe('user', () => { beforeEach(() => { createUser() }) test('renders', () => { expect(true).toBe(true) }) }) `, rules: { 'epic-web/prefer-dispose-in-tests': 'warn', }, }) try { const result = await runOxlint(fixture) expect(result.diagnostics).toHaveLength(1) expect(result.diagnostics[0]).toMatchObject({ code: 'epic-web(prefer-dispose-in-tests)', severity: 'warning', }) expect(result.diagnostics[0].message).toContain('instead of beforeEach') } finally { await disposeOxlintFixture(fixture) } }) it('allows larger shared suites and known framework hooks', async () => { const fixture = await writeOxlintFixture({ filename: 'sample.test.js', code: ` describe('timers', () => { beforeAll(() => { server.listen() }) beforeEach(() => { vi.useFakeTimers() }) afterAll(() => { server.close() }) test('first', () => { expect(true).toBe(true) }) test('second', () => { expect(true).toBe(true) }) }) `, rules: { 'epic-web/prefer-dispose-in-tests': 'warn', }, }) try { const result = await runOxlint(fixture) expect(result.diagnostics).toHaveLength(0) } finally { await disposeOxlintFixture(fixture) } }) it('honors rule options in overrides', async () => { const fixture = await writeOxlintFixture({ filename: 'sample.test.js', code: ` describe('timers', () => { beforeEach(() => { vi.useFakeTimers() }) test('works', () => { expect(true).toBe(true) }) }) `, rules: { 'epic-web/prefer-dispose-in-tests': [ 'warn', { allowKnownFrameworkHooks: false }, ], }, }) try { const result = await runOxlint(fixture) expect(result.diagnostics).toHaveLength(1) expect(result.diagnostics[0].message).toContain('instead of beforeEach') } finally { await disposeOxlintFixture(fixture) } }) })