Code Monkey home page Code Monkey logo

point-hub-express-factory's Introduction

Express Factory

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

Installation

npm install @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 "@point-hub/express-factory";
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();

point-hub-express-factory's People

Contributors

martiendt avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.