Skip to content

Commit

Permalink
test: added some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
YannicEl committed Jan 2, 2024
1 parent fb1d20f commit 677ec38
Show file tree
Hide file tree
Showing 4 changed files with 141 additions and 12 deletions.
12 changes: 0 additions & 12 deletions packages/lib/test/index.test.ts

This file was deleted.

80 changes: 80 additions & 0 deletions packages/lib/test/useField.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import { assert, describe, it } from 'vitest';
import { useField } from '../dist';
import { dummyAsyncValidatorValid, dummyValidatorValid } from './utils';

describe('useField', () => {
describe('Correct initialization', () => {
it('Default options', () => {
const field = useField('test');

assert.equal(field.value, 'test');
assert.equal(field.validators.size, 0);
assert.equal(field.asyncValidators.size, 0);
assert.equal(field.errors.length, 0);
assert.equal(field.async, false);
assert.equal(field.pending, false);

assert.equal(field.invalid, false);
assert.equal(field.valid, true);

assert.equal(field.disabled, false);
assert.equal(field.enabled, true);

assert.equal(field.dirty, false);
assert.equal(field.pristine, true);

assert.equal(field.touched, false);
assert.equal(field.untouched, true);
});

it('Async', async () => {
const field = useField('test', {
asyncValidators: [dummyAsyncValidatorValid],
});

assert.equal(field.value, 'test');
assert.equal(field.validators.size, 0);
assert.equal(field.asyncValidators.size, 1);
assert.equal(field.errors.length, 0);
assert.equal(field.async, true);
assert.equal(field.pending, true);

assert.equal(field.invalid, false);
assert.equal(field.valid, true);

assert.equal(field.disabled, false);
assert.equal(field.enabled, true);

assert.equal(field.dirty, false);
assert.equal(field.pristine, true);

assert.equal(field.touched, false);
assert.equal(field.untouched, true);
});

it('Sync', async () => {
const field = useField('test', {
validators: [dummyValidatorValid],
});

assert.equal(field.value, 'test');
assert.equal(field.validators.size, 1);
assert.equal(field.asyncValidators.size, 0);
assert.equal(field.errors.length, 0);
assert.equal(field.async, false);
assert.equal(field.pending, false);

assert.equal(field.invalid, false);
assert.equal(field.valid, true);

assert.equal(field.disabled, false);
assert.equal(field.enabled, true);

assert.equal(field.dirty, false);
assert.equal(field.pristine, true);

assert.equal(field.touched, false);
assert.equal(field.untouched, true);
});
});
});
50 changes: 50 additions & 0 deletions packages/lib/test/useForm.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { useField, useForm } from '@vuetils/form';
import { assert, it } from 'vitest';

it('should pass', () => {
const field = useField('test');

assert.equal(field.value, 'test');

field.value = 'test2';

assert.equal(field.value, 'test2');
});

it('nested form', () => {
const form = useForm({
layer1: ['layer1'],
hallo: {
layer2: ['layer2'],
zwallo: {
layer3: ['layer3'],
},
},
});

assert.equal(form.values.layer1, 'layer1');
assert.equal(form.values.hallo.layer2, 'layer2');
assert.equal(form.values.hallo.zwallo.layer3, 'layer3');

form.fields.hallo.fields.zwallo.fields.layer3.value = 'dirty';

assert.equal(form.pristine, false);
assert.equal(form.fields.hallo.pristine, false);
assert.equal(form.fields.hallo.fields.zwallo.pristine, false);

form.reset();

form.fields.hallo.fields.layer2.value = 'dirty';

assert.equal(form.pristine, false);
assert.equal(form.fields.hallo.pristine, false);
assert.equal(form.fields.hallo.fields.zwallo.pristine, true);

form.reset();

form.fields.layer1.value = 'dirty';

assert.equal(form.pristine, false);
assert.equal(form.fields.hallo.pristine, true);
assert.equal(form.fields.hallo.fields.zwallo.pristine, true);
});
11 changes: 11 additions & 0 deletions packages/lib/test/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { defineValidator } from '../dist';

export async function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}

export const dummyValidatorValid = defineValidator('dummyValid', () => true);
export const dummyValidatorInvalid = defineValidator('dummyInvalid', () => false);

export const dummyAsyncValidatorValid = defineValidator('dummyAsyncValid', async () => true);
export const dummyAsyncValidatorInvalid = defineValidator('dummyAsyncInvalid', async () => true);

0 comments on commit 677ec38

Please sign in to comment.