/* eslint-disable no-empty-function */ import { t, typeAsserts } from '../../index'; describe('enum', () => { it('enum', () => { expect.hasAssertions(); const schema = t.enum('123', 'abc', 'def', 456); expect(schema.validate('123')).toBe(true); expect(() => typeAsserts(schema, '123')).not.toThrow(); expect(schema.validate('abc')).toBe(true); expect(() => typeAsserts(schema, 'abc')).not.toThrow(); expect(schema.validate('def')).toBe(true); expect(() => typeAsserts(schema, 'def')).not.toThrow(); expect(schema.validate(456)).toBe(true); expect(() => typeAsserts(schema, 456)).not.toThrow(); expect(schema.validate('1')).toBe(false); expect(() => typeAsserts(schema, '1')).toThrow( `expect param to be one of "123", "abc", "def", 456, but got "1"` ); expect(schema.validate(123)).toBe(false); expect(() => typeAsserts(schema, 123)).toThrow( `expect param to be one of "123", "abc", "def", 456, but got 123` ); expect(schema.validate(() => {})).toBe(false); expect(() => typeAsserts(schema, () => {})).toThrow( `expect param to be one of "123", "abc", "def", 456, but got a(n) function` ); expect(schema.validate(Symbol.for('1'))).toBe(false); expect(() => typeAsserts(schema, Symbol.for('1'))).toThrow( `expect param to be one of "123", "abc", "def", 456, but got a(n) symbol` ); expect(schema.validate({})).toBe(false); expect(() => typeAsserts(schema, {})).toThrow( `expect param to be one of "123", "abc", "def", 456, but got a(n) object` ); expect(schema.validate([])).toBe(false); expect(() => typeAsserts(schema, [])).toThrow( `expect param to be one of "123", "abc", "def", 456, but got a(n) array` ); expect(schema.validate(undefined)).toBe(false); expect(() => typeAsserts(schema, undefined)).toThrow( `expect param to be one of "123", "abc", "def", 456, but got undefined` ); }); it('optional enum', () => { expect.hasAssertions(); const schema = t.enum('123', 'abc', 'def', 456).optional(); expect(schema.validate('123')).toBe(true); expect(() => typeAsserts(schema, '123')).not.toThrow(); expect(schema.validate('abc')).toBe(true); expect(() => typeAsserts(schema, 'abc')).not.toThrow(); expect(schema.validate('def')).toBe(true); expect(() => typeAsserts(schema, 'def')).not.toThrow(); expect(schema.validate(456)).toBe(true); expect(() => typeAsserts(schema, 456)).not.toThrow(); expect(schema.validate(undefined)).toBe(true); expect(() => typeAsserts(schema, undefined)).not.toThrow(); expect(schema.validate('1')).toBe(false); expect(() => typeAsserts(schema, '1')).toThrow( `expect param to be one of "123", "abc", "def", 456, but got "1"` ); expect(schema.validate(123)).toBe(false); expect(() => typeAsserts(schema, 123)).toThrow( `expect param to be one of "123", "abc", "def", 456, but got 123` ); expect(schema.validate(() => {})).toBe(false); expect(() => typeAsserts(schema, () => {})).toThrow( `expect param to be one of "123", "abc", "def", 456, but got a(n) function` ); expect(schema.validate(Symbol.for('1'))).toBe(false); expect(() => typeAsserts(schema, Symbol.for('1'))).toThrow( `expect param to be one of "123", "abc", "def", 456, but got a(n) symbol` ); expect(schema.validate({})).toBe(false); expect(() => typeAsserts(schema, {})).toThrow( `expect param to be one of "123", "abc", "def", 456, but got a(n) object` ); expect(schema.validate([])).toBe(false); expect(() => typeAsserts(schema, [])).toThrow( `expect param to be one of "123", "abc", "def", 456, but got a(n) array` ); }); });