import { OneOrMoreOf, asArray, Maybe } from 'vest-utils'; import { TFieldName, TGroupName } from '../suiteResult/SuiteResultTypes'; import { optional, create, skip, SuiteResult } from '../vest'; import { dummyTest } from './testDummy'; export function failing(failingFields?: OneOrMoreOf) { return createSuiteRunResult(failingFields, fieldName => { dummyTest.failing(fieldName); }); } export function warning(failingFields?: OneOrMoreOf) { return createSuiteRunResult(failingFields, fieldName => { dummyTest.failingWarning(fieldName); }); } export function failingAsync(failingFields?: OneOrMoreOf) { return createSuiteRunResult(failingFields, fieldName => { dummyTest.failingAsync(fieldName); }); } export function passing(fields?: OneOrMoreOf) { return createSuiteRunResult(fields, fieldName => { dummyTest.passing(fieldName); }); } export function passingWithUntestedOptional( optionals: OneOrMoreOf = 'optional_field', required: OneOrMoreOf = 'field_1', ) { return create(() => { optional(optionals); skip(optionals as TFieldName); asArray(optionals).forEach(fieldName => { dummyTest.failing(fieldName); }); asArray(required).forEach(fieldName => { dummyTest.passing(fieldName); }); }).run(); } export function passingWithOptional( optionals: OneOrMoreOf = 'optional_field', required: OneOrMoreOf = 'field_1', ) { return create(() => { optional(optionals); asArray(optionals).forEach(fieldName => { dummyTest.passing(fieldName); }); asArray(required).forEach(fieldName => { dummyTest.passing(fieldName); }); }).run(); } export function failingOptional( optionals: OneOrMoreOf = 'optional_field', required: OneOrMoreOf = 'field_1', ) { return create(() => { optional(optionals); asArray(optionals).forEach(fieldName => { dummyTest.failing(fieldName); }); asArray(required).forEach(fieldName => { dummyTest.passing(fieldName); }); }).run(); } export function untested(fields?: OneOrMoreOf) { const suite = createSuite(fields, fieldName => { dummyTest.failing(fieldName); }); return suite.get(); } function createSuiteRunResult( fieldNames: Maybe, callback: (_fieldName?: string) => void, ) { return createSuite(fieldNames, callback).run(); } function createSuite( fieldNames: Maybe = 'field_1', callback: (_fieldName?: string) => void, ) { return create(() => { asArray(fieldNames).forEach(fieldName => callback(fieldName)); }); } export function ser( res: SuiteResult, ) { return JSON.parse(JSON.stringify(res)); }