test-randomizing
Helps you to build randomized objects for your tests.
🏗 Install
nest.land and deno.land)
Deno (import {
freezeMerge,
merge,
RandomFn,
} from "https://x.nest.land/test_randomizing@0.4.1/mod.ts";
// or
import {
freezeMerge,
merge,
RandomFn,
} from "https://deno.land/x/test_randomizing@0.4.1/mod.ts";
npm.js)
Node.js (npm install --save-dev test-randomizing
# or
yarn add --dev test-randomizing
🤷🏽♂️ How to use
You can use test randomizing in JavaScript and TypeScript projects.
We recommend using a library (like faker.js or deno port deno_faker) to create randomized objects.
Deno example
./examples/deno
:
import {
DeepPartial,
freezeMerge,
RandomFn,
} from "https://x.nest.land/test_randomizing@0.4.1/mod.ts";
import { faker } from "https://deno.land/x/deno_faker@v1.0.3/mod.ts";
import { assertEquals } from "https://deno.land/std@0.119.0/testing/asserts.ts";
// Implementation
const generateEmail = (person: Person) => {
if (!person.companyName || (!person.firstName && !person.lastName)) {
return undefined;
}
return `${person.firstName}.${person.lastName}@${person.companyName}.com`;
};
// Types
type Person = {
firstName: string;
lastName: string;
companyName: string;
};
// Test code
const randomPerson: RandomFn<Person> = (override?: DeepPartial<Person>) =>
freezeMerge({
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
companyName: faker.company.companyName(),
}, override);
Deno.test("consist of firstname.lastname@companyname.com", () => {
const person = randomPerson({
firstName: "steve",
lastName: "jobs",
companyName: "apple",
});
const email = generateEmail(person);
assertEquals(email, "steve.jobs@apple.com");
});
Deno.test("returns undefined if firstName and lastName is empty", () => {
const person = randomPerson({ firstName: "", lastName: "" });
const email = generateEmail(person);
assertEquals(email, undefined);
});
Deno.test("returns undefined if companyName is empty", () => {
const person = randomPerson({ companyName: "" });
const email = generateEmail(person);
assertEquals(email, undefined);
});
Typescript Node.js example
./examples/nodejs-ts
:
import { DeepPartial, freezeMerge, RandomFn } from "test-randomizing";
import { company, name } from "faker";
// Implementation
const generateEmail = (person: Person) => {
if (!person.companyName || (!person.firstName && !person.lastName)) {
return undefined;
}
return `${person.firstName}.${person.lastName}@${person.companyName}.com`;
};
// Types
type Person = {
firstName: string;
lastName: string;
companyName: string;
};
// Test code
const randomPerson: RandomFn<Person> = (override?: DeepPartial<Person>) =>
freezeMerge({
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
companyName: faker.company.companyName(),
}, override);
test("consist of firstname.lastname@companyname.com", () => {
const person = randomPerson({
firstName: "steve",
lastName: "jobs",
companyName: "apple",
});
const email = generateEmail(person);
expect(email).toEqual("steve.jobs@apple.com");
});
test("returns undefined if firstName and lastName is empty", () => {
const person = randomPerson({ firstName: "", lastName: "" });
const email = generateEmail(person);
expect(email).toBeUndefined();
});
test("returns undefined if companyName is empty", () => {
const person = randomPerson({ companyName: "" });
const email = generateEmail(person);
expect(email).toBeUndefined();
});
More complete examples in the ./examples
directory:
- NodeJS TypeScript
./examples/nodejs-ts
- Deno
./examples/deno
License
MIT License
Copyright (c) 2021 Ti/o
Development
Use vr
(Velociraptor) to run all commands like vr check
and vr publish
.