raw-data
v1.0.0
Published
Raw data for testing with realistic but synthetic data
Downloads
69
Maintainers
Readme
raw-data
Raw data for testing with realistic but synthetic data.
🛠 Usage
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.
Basic usage
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: "[email protected]" })).toMatchObject({
firstName: expect.any(String),
lastName: expect.any(String),
email: "[email protected]",
});
});
Data lists
The following data lists are currently available:
- firstNames
- lastNames
🏠 Homepage
You can find more about this on https://dbartholomae.github.io/raw-data.
🖋️ Contributing
If you are interested in contributing to this repository, please read up on the details in our contributing guidelines.
🤝 Show your support
Give a ⭐ if this package helped you! You can also support the development of this package by funding.
📜 License
MIT. See LICENSE file for details.