Raw data for testing with realistic but synthetic data.
This package just contains data sets, so it can be used with all sorts of other libraries. The intended usage is with a property-based testing framework like fast-check, and all advanced examples in this documentation will use fast-check.
The initial data sets come from faker.js and this project was inspired by faker.js being abandoned by its creator.
Import the data set you want to use
import { firstNames } from 'raw-data';
// ['Alfred', 'Bertram', ...]
and create arbitraries from them:
import { firstNames, lastNames } from "raw-data";
import {
assert,
constantFrom,
emailAddress,
property,
record,
} from "fast-check";
function isValidUser(user: any) {
return (
user != null &&
user.firstName !== undefined &&
user.lastName !== undefined &&
user.email !== undefined
);
}
const arbitraryUser = record({
firstName: constantFrom(...firstNames),
lastName: constantFrom(...lastNames),
email: emailAddress(),
});
describe("isValidUser", () => {
it("accepts a valid user", () => {
assert(
property(arbitraryUser, (user) => {
expect(isValidUser(user)).toBe(true);
})
);
});
});
These can then also be used to create example data:
import { firstNames, lastNames } from "raw-data";
import { constantFrom, emailAddress, record, sample } from "fast-check";
interface User {
firstName: string;
lastName: string;
email: string;
}
const arbitraryUser = record({
firstName: constantFrom(...firstNames),
lastName: constantFrom(...lastNames),
email: emailAddress(),
});
function generateUser(overrides: Partial<User> = {}) {
return { ...sample(arbitraryUser, 1)[0], ...overrides };
}
it("generates a user", () => {
expect(generateUser({ email: "test@test.com" })).toMatchObject({
firstName: expect.any(String),
lastName: expect.any(String),
email: "test@test.com",
});
});
The following data lists are currently available:
You can find more about this on https://dbartholomae.github.io/raw-data.
If you are interested in contributing to this repository, please read up on the details in our contributing guidelines.
Give a ⭐ if this package helped you! You can also support the development of this package by funding.
MIT. See LICENSE file for details.
Generated using TypeDoc