1.0.0 • Published 3 years ago

proposal-factory-decorator v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Class Factory Decorators

This package is aimed to testing and seeding at your projects. It's easy to implement and create your own class factory.

Install through cli via command

You might want to use this quick cli command to install the package.

npm i --save proposal-factory-decorator

Example code

In this example, we can see how the @Factory decorator works. It's quite simple and easy to duplicate.

import { Factory, CreateFactory } from "proposal-factory-decorator";

class User {
  @Factory(() => "name")
  field: string;

  @Factory(() => false)
  isTrue: boolean;
}

const userFact = new CreateFactory() < User > User;

(async () => {
  const user = await userFact.generate(); // Creates an User

  console.log(user); // { field: "name", isTrue: false }
})();

Recommends

It's highly recommended to use faker package. The faker package provides useful evaluations to our @Factory method.

npm i --save faker @types/faker

One simple example (extending the example above) to use faker lib

import { Factory, CreateFactory } from "proposal-factory-decorator";
import faker from "faker";

class User {
  @Factory(() => faker.name.findName())
  name: string;

  @Factory(() => faker.internet.email())
  email: boolean;
}

const userFact = new CreateFactory() < User > User;

(async () => {
  const user = await userFact.generate(); // Creates a faker User

  console.log(user); // { name: "Some random name", email: "some@random.email" }
})();

Caution

The @Factory decorator only works with the CreateFactory class. If you try to do something like

class DontWork {
  @Factory(() => somevalue)
  field: any;
}

console.log(new DontWork()); // it will print this empty value {}

If you want to support me, go check my Patreon!

Happy coding you all 🖥️🙇!

1.0.0

3 years ago

0.2.9

3 years ago

0.2.8

3 years ago

0.2.7

3 years ago

0.2.6

3 years ago

0.2.5

3 years ago

0.2.4

3 years ago

0.2.3

3 years ago

0.2.2

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago