import { describe, it, expect } from 'vitest'; import { createMocks } from './mock.ts'; import { MockReadable, MockWritable } from './stdio.ts'; describe('createMocks', () => { it('returns undefined streams when not requested', () => { const mocks = createMocks(); expect(mocks.input).toBeUndefined(); expect(mocks.output).toBeUndefined(); }); it('creates input stream with `true`', () => { const mocks = createMocks({ input: true }); expect(mocks.input).toBeInstanceOf(MockReadable); }); it('creates output stream with `true`', () => { const mocks = createMocks({ output: true }); expect(mocks.output).toBeInstanceOf(MockWritable); }); it('passes config to output stream', () => { const mocks = createMocks({ output: { columns: 120, rows: 40, isTTY: true } }); expect(mocks.output.columns).toBe(120); expect(mocks.output.rows).toBe(40); expect(mocks.output.isTTY).toBe(true); }); it('passes config to input stream', () => { const mocks = createMocks({ input: { isTTY: true } }); expect(mocks.input.isTTY).toBe(true); }); it('stubs env vars for duration of test', () => { createMocks({ env: { TEST_MOCK_VAR: 'hello' } }); expect(process.env.TEST_MOCK_VAR).toBe('hello'); }); it('restores env vars after test finishes', async () => { // Previous test's onTestFinished should have cleaned up expect(process.env.TEST_MOCK_VAR).toBeUndefined(); }); });