@point-hub/express-factory
TypeScript icon, indicating that this package has built-in type declarations

1.1.4 • Public • Published

Express Factory

@point-hub/express-factory is an ESM-only module - you are not able to import it with require().

Express model factories make it painless to create test database record using your application

Installation

npm install @faker-js/faker @point-hub/express-factory --save-dev

Usage

Create a factory file and implement your model definition, create, and createMany methods

import { faker } from "@faker-js/faker";
import Factory from "../index.js";
import { UserInterface } from "./user.model.js";
import UserService from "./user.service.js";

export default class UserFactory extends Factory<UserInterface> {
  definition() {
    return {
      name: faker.name.findName(),
      age: faker.datatype.number({
        min: 15,
        max: 50,
      }),
    };
  }

  async create() {
    return await new UserService().create(this.makeOne());
  }

  async createMany(count: number) {
    return new UserService().createMany(this.makeMany(count));
  }
}

Use your factory in your test file

// Create one user
new UserFactory().create();

// Create many users
new UserFactory().createMany(3);

Features

Make

Use the make method to create models without persisting them to the database

// Make one user without saving to database
new UserFactory().makeOne();
// Alias
new UserFactory().make();

// Make many users without saving to database
new UserFactory().makeMany(3);
// Alias
new UserFactory().make(3);

Sequences

Sometimes you may wish to alternate the value of a given model attribute for each created model. You may accomplish this by defining a state transformation as a sequence.

const userFactory = new UserFactory();
userFactory.sequence([
  { name: "John" },
  { name: "Jane" },
]);
userFactory.createMany(3);

State

State manipulation allow you to define discrete modifications that can be applied to your model factories in any combination.

const userFactory = new UserFactory();
userFactory.state({
  age: 21,
});
userFactory.create();

Readme

Keywords

Package Sidebar

Install

npm i @point-hub/express-factory

Weekly Downloads

11

Version

1.1.4

License

MIT

Unpacked Size

6.22 kB

Total Files

5

Last publish

Collaborators

  • martiendt