raw-data

Raw data for testing with realistic but synthetic data

Usage no npm install needed!

<script type="module">
  import rawData from 'https://cdn.skypack.dev/raw-data';
</script>

README

raw-data

npm package downloads open issues semantic release license

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: "test@test.com" })).toMatchObject({
    firstName: expect.any(String),
    lastName: expect.any(String),
    email: "test@test.com",
  });
});

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.