|
| 1 | +import { describe, expectTypeOf, test } from 'vitest' |
| 2 | +import { type UserWorkspaceConfig, defineConfig, defineProject, defineWorkspace, mergeConfig } from 'vitest/config' |
| 3 | + |
| 4 | +const expectMainTestConfig = expectTypeOf(defineConfig).parameter(0).resolves.toHaveProperty('test').exclude<undefined>() |
| 5 | +const expectProjectTestConfig = expectTypeOf(defineProject).parameter(0).resolves.toHaveProperty('test').exclude<undefined>() |
| 6 | + |
| 7 | +describe('define project helper', () => { |
| 8 | + test('cannot define non-project fields on a project config', () => { |
| 9 | + expectProjectTestConfig.toHaveProperty('name') |
| 10 | + expectMainTestConfig.toHaveProperty('name') |
| 11 | + |
| 12 | + expectProjectTestConfig.not.toHaveProperty('pool') |
| 13 | + expectMainTestConfig.toHaveProperty('pool') |
| 14 | + |
| 15 | + expectProjectTestConfig.not.toHaveProperty('coverage') |
| 16 | + expectMainTestConfig.toHaveProperty('coverage') |
| 17 | + }) |
| 18 | +}) |
| 19 | + |
| 20 | +describe('merge config helper', () => { |
| 21 | + test('types are not conflicting', () => { |
| 22 | + expectTypeOf(mergeConfig( |
| 23 | + defineConfig({}), |
| 24 | + defineProject({ test: { name: 'test' } }), |
| 25 | + )).toMatchTypeOf<Record<string, unknown>>() |
| 26 | + }) |
| 27 | +}) |
| 28 | + |
| 29 | +describe('workspace config', () => { |
| 30 | + test('correctly defines return type', () => { |
| 31 | + expectTypeOf(defineWorkspace([{ test: { name: 'test' } }])).items.toMatchTypeOf<UserWorkspaceConfig>() |
| 32 | + expectTypeOf(defineWorkspace(['packages/*'])).items.toBeString() |
| 33 | + }) |
| 34 | +}) |
0 commit comments