Skip to content

Saeris/valimock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

51 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸƒ Valimock

npm version CI status

Generate mock data for Valibot schemas using Faker


πŸ“¦ Installation

npm install --save-dev valimock @faker-js/faker
yarn add -D valimock @faker-js/faker

πŸ”§ Usage

Import and optionally configure a new instance of the Valimock class, then pass along your valibot schema to mock(), that's it!

import { parse, array, union, string, url, number, maxValue } from "valibot";
import { Valimock } from "valimock";

describe(`example test`, () => {
  it(`should generate valid mock data`, () => {
    const schema = array(union([string([url()]), number([maxValue(20)])]));
    const result = new Valimock().mock(schema);
    expect(parse(schema, result)).toStrictEqual(result);
  });
});

Note

For async schemas, you will need to use parseAsync(). Be aware that async schemas generate a Promise and may need to be await'ed depending on usage.

Please see the __tests__ folder for more usage examples of different schema types.

API Coverage

Warning

At present, not all of valibot's API is fully covered by valimock, however, any unimplemented schema type can be handled by a user-supplied map via the customMocks configuration option. The schema's type proerty is used as the property key for this map.

Implemented Incomplete Not Implemented Unsupported
Symbol βœ” ⚠ ❌ βž–

Schemas

Any Array Bigint Blob Boolean Date Enum
❌ βœ” βœ” βž– βœ” ⚠ βœ”
Instance Intersect Literal Map NaN Never NonNullable
βž– βœ” βœ” βœ” βœ” ❌ βœ”
NonNullish NonOptional Null Nullable Nullish Number Object
βœ” βœ” βœ” βœ” βœ” ⚠ βœ”
Optional Picklist Record Recursive Set Special String
βœ” βœ” βœ” βœ” βœ” βž– ⚠
Symbol Tuple Undefined Union Unknown Variant Void
βž– βœ” βœ” βœ” ❌ ❌ ❌

Validations

String Number Bigint Boolean Date Array Tuple Union Map Set Object Blob
bytes ❌ βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
cuid2 βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
custom ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
customAsync ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
email βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
emoji βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
endsWith ❌ βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
excludes ❌ βž– βž– βž– βž– ❌ βž– βž– βž– βž– βž– βž–
finite βž– ❌ ❌ βž– βž– βž– βž– βž– βž– βž– βž– βž–
imei βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
includes ❌ βž– βž– βž– βž– ❌ βž– βž– βž– βž– βž– βž–
integer βž– βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
ip βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
ipv4 βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
ipv6 βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
isoDate βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
isoDateTime βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
isoTime βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
isoTimeSecond βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
isoTimestamp βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
isoWeek βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
length βœ” βž– βž– βž– βž– βœ” ❌ βž– βž– βž– βž– βž–
mexBytes ❌ βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
maxLength βœ” βž– βž– βž– βž– βœ” ❌ βž– βž– βž– βž– βž–
maxSize βž– βž– βž– βž– βž– βž– βž– βž– ❌ ❌ βž– βž–
maxValue ❌ βœ” βœ” βž– βœ” βž– βž– βž– βž– βž– βž– βž–
mimeType βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– ❌
minBytes ❌ βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
minLength βœ” βž– βž– βž– βž– βœ” ❌ βž– βž– βž– βž– βž–
minSize βž– βž– βž– βž– βž– βž– βž– βž– ❌ ❌ βž– βž–
minValue ❌ βœ” βœ” βž– βœ” βž– βž– βž– βž– βž– βž– βž–
multipleOf βž– ❌ ❌ βž– βž– βž– βž– βž– βž– βž– βž– βž–
notBytes ❌ βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
notLength ❌ βž– βž– βž– βž– ❌ ❌ βž– βž– βž– βž– βž–
notSize βž– βž– βž– βž– βž– βž– βž– βž– ❌ ❌ ❌ ❌
notValue ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
regex ⚠ βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
safeInteger βž– ❌ βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
size βž– βž– βž– βž– βž– βž– βž– βž– ❌ ❌ βž– βž–
startsWith ❌ βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
ulid βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
url βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
uuid βœ” βž– βž– βž– βž– βž– βž– βž– βž– βž– βž– βž–
value ❌ βœ” βœ” ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌

πŸ“£ Acknowledgements

Valimock's implementation is based on @anatine/zod-mock

πŸ₯‚ License

Released under the MIT license.