import { describe, it, expect } from 'vitest'
import { TESTRUNNER_DEFAULTS } from '../src/constants.js'
class CustomReporter {}
describe('constants', () => {
describe('TESTRUNNER_DEFAULTS', () => {
it('should expect specs to be an array', () => {
TESTRUNNER_DEFAULTS.specs!.validate!([])
expect(() => TESTRUNNER_DEFAULTS.specs!.validate!('foobar')).toThrow()
})
it('should expect exclude to be an array', () => {
TESTRUNNER_DEFAULTS.exclude!.validate!([])
expect(() => TESTRUNNER_DEFAULTS.exclude!.validate!('foobar')).toThrow()
})
it('should validate reporters correctly', () => {
TESTRUNNER_DEFAULTS.reporters!.validate!(['string'])
TESTRUNNER_DEFAULTS.reporters!.validate!([[CustomReporter, {}]])
expect(() => TESTRUNNER_DEFAULTS.reporters!.validate!('foobar')).toThrow()
expect(() => TESTRUNNER_DEFAULTS.reporters!.validate!([false, 'string'])).toThrow()
expect(() => TESTRUNNER_DEFAULTS.reporters!.validate!([{}])).toThrow()
})
it('should validate capabilities correctly', () => {
TESTRUNNER_DEFAULTS.capabilities!.validate!([{}])
TESTRUNNER_DEFAULTS.capabilities!.validate!({})
expect(() => TESTRUNNER_DEFAULTS.capabilities!.validate!('foobar')).toThrow()
expect(() => TESTRUNNER_DEFAULTS.capabilities!.validate!(false)).toThrow()
expect(() => TESTRUNNER_DEFAULTS.capabilities!.validate!([{}, 'foobar'])).toThrow()
})
it('should validate services correctly', () => {
TESTRUNNER_DEFAULTS.services!.validate!(['foobar'])
TESTRUNNER_DEFAULTS.services!.validate!([[]])
TESTRUNNER_DEFAULTS.services!.validate!([['service', {}], 'foobar'])
expect(() => TESTRUNNER_DEFAULTS.services!.validate!('foobar')).toThrow()
expect(() => TESTRUNNER_DEFAULTS.services!.validate!(false)).toThrow()
expect(() => TESTRUNNER_DEFAULTS.services!.validate!(['foobar', true])).toThrow()
expect(() => TESTRUNNER_DEFAULTS.services!.validate!([[], {}])).toThrow()
})
it('should expect execArgv to be an array', () => {
TESTRUNNER_DEFAULTS.execArgv!.validate!([])
expect(() => TESTRUNNER_DEFAULTS.execArgv!.validate!('foobar')).toThrow()
})
it('should expect filesToWatch to be an array', () => {
TESTRUNNER_DEFAULTS.filesToWatch!.validate!([])
expect(() => TESTRUNNER_DEFAULTS.filesToWatch!.validate!('foobar')).toThrow()
})
})
describe('HOOK_DEFINITION', () => {
it('should only accept arrays of functions', () => {
TESTRUNNER_DEFAULTS.before!.validate!([])
TESTRUNNER_DEFAULTS.before!.validate!([() => {}])
expect(() => TESTRUNNER_DEFAULTS.before!.validate!()).toThrow()
expect(() => TESTRUNNER_DEFAULTS.before!.validate!(['foobar'])).toThrow()
expect(() => TESTRUNNER_DEFAULTS.before!.validate!([() => {}, 'foobar'])).toThrow()
})
})
})