factory-girl-ts
Advanced tools
Comparing version 1.0.8 to 1.0.9
@@ -8,4 +8,7 @@ import { ModelAdapter } from './adapters/adapter.interface'; | ||
static adapter: ModelAdapter<unknown, unknown>; | ||
static sequences: Map<string, number>; | ||
static sequence<T>(id: string, callback: (seq: number) => T): T; | ||
static setAdapter(adapter: ModelAdapter<unknown, unknown>): void; | ||
static define<ModelOrInterface, Parameters extends Dictionary = Dictionary, Attributes extends Dictionary = Dictionary, ReturnType extends InstanceOrInterface<ModelOrInterface> = InstanceOrInterface<ModelOrInterface>>(model: ModelOrInterface, defaultAttributesFactory: DefaultAttributesFactory<Attributes, Parameters>): Factory<ModelOrInterface, Attributes, Parameters, ReturnType>; | ||
static cleanUp(): void; | ||
} |
@@ -8,2 +8,11 @@ "use strict"; | ||
static adapter = new object_adapter_1.ObjectAdapter(); | ||
static sequences = new Map(); | ||
static sequence(id, callback) { | ||
let seq = FactoryGirl.sequences.get(id); | ||
if (seq === undefined) | ||
seq = 0; | ||
seq++; | ||
FactoryGirl.sequences.set(id, seq); | ||
return callback(seq); | ||
} | ||
static setAdapter(adapter) { | ||
@@ -15,4 +24,7 @@ this.adapter = adapter; | ||
} | ||
static cleanUp() { | ||
FactoryGirl.sequences.clear(); | ||
} | ||
} | ||
exports.FactoryGirl = FactoryGirl; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS1naXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnktZ2lybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw4REFBMEQ7QUFDMUQsdUNBQW9DO0FBS3BDLE1BQWEsV0FBVztJQUN0QixNQUFNLENBQUMsT0FBTyxHQUFtQyxJQUFJLDhCQUFhLEVBQUUsQ0FBQztJQUVyRSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQXVDO1FBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQU1YLEtBQXVCLEVBQ3ZCLHdCQUEwRTtRQUUxRSxPQUFPLElBQUksaUJBQU8sQ0FDaEIsd0JBQXdCLEVBQ3hCLEtBQUssRUFDTCxJQUFJLENBQUMsT0FBcUQsQ0FDM0QsQ0FBQztJQUNKLENBQUM7O0FBckJVLGtDQUFXIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS1naXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnktZ2lybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw4REFBMEQ7QUFDMUQsdUNBQW9DO0FBS3BDLE1BQWEsV0FBVztJQUN0QixNQUFNLENBQUMsT0FBTyxHQUFtQyxJQUFJLDhCQUFhLEVBQUUsQ0FBQztJQUVyRSxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBRTdDLE1BQU0sQ0FBQyxRQUFRLENBQUksRUFBVSxFQUFFLFFBQTRCO1FBQ3pELElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksR0FBRyxLQUFLLFNBQVM7WUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLEdBQUcsRUFBRSxDQUFDO1FBQ04sV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQXVDO1FBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQU1YLEtBQXVCLEVBQ3ZCLHdCQUEwRTtRQUUxRSxPQUFPLElBQUksaUJBQU8sQ0FDaEIsd0JBQXdCLEVBQ3hCLEtBQUssRUFDTCxJQUFJLENBQUMsT0FBcUQsQ0FDM0QsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTztRQUNaLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEMsQ0FBQzs7QUFuQ1Usa0NBQVcifQ== |
@@ -15,3 +15,3 @@ import type { PartialDeep } from 'type-fest'; | ||
createMany(count: number, partials?: PartialDeep<Attributes>[] | PartialDeep<Attributes>, additionalParams?: Params): Promise<ReturnType[]>; | ||
build(override?: PartialDeep<Attributes>, additionalParams?: Params): ReturnType; | ||
build(override?: PartialDeep<Attributes>, additionalParams?: Params, shouldResolveAttributes?: boolean): ReturnType; | ||
buildMany(count: number, partials?: PartialDeep<Attributes>[] | PartialDeep<Attributes>, additionalParams?: Params): ReturnType[]; | ||
@@ -18,0 +18,0 @@ extend<ExtendedParams extends Params = Params>(newDefaultAttributesFactory: DefaultAttributesFactory<Attributes, ExtendedParams>): Factory<Model, Attributes, ExtendedParams, ReturnType>; |
@@ -23,3 +23,3 @@ "use strict"; | ||
const finalAttributes = (0, lodash_1.merge)(defaultAttributesWithAssociations, override); | ||
const built = this.build(finalAttributes, additionalParams); | ||
const built = this.build(finalAttributes, additionalParams, false); | ||
const createdModel = await this.adapter.save(built, this.model); | ||
@@ -32,5 +32,8 @@ return await this.resolveHooks(createdModel); | ||
} | ||
build(override, additionalParams) { | ||
const attributesWithAssociations = this.resolveAssociations(additionalParams); | ||
const mergedAttributes = (0, lodash_1.merge)(attributesWithAssociations, override); | ||
build(override, additionalParams, shouldResolveAttributes = true) { | ||
let mergedAttributes = override; | ||
if (shouldResolveAttributes) { | ||
const attributesWithAssociations = this.resolveAssociations(additionalParams); | ||
mergedAttributes = (0, lodash_1.merge)(attributesWithAssociations, override); | ||
} | ||
const finalResult = this.adapter.build(this.model, mergedAttributes); | ||
@@ -98,2 +101,2 @@ return finalResult; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFzQztBQUd0QywrQ0FBNEM7QUFTNUMsTUFBYSxPQUFPO0lBT0M7SUFJQTtJQUNBO0lBQ0E7SUFQbkIsWUFDbUIsd0JBR2hCLEVBQ2dCLEtBQVksRUFDWixPQUF3QyxFQUN4QyxtQkFBa0QsRUFBRTtRQU5wRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBR3hDO1FBQ2dCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixZQUFPLEdBQVAsT0FBTyxDQUFpQztRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9DO0lBQ3BFLENBQUM7SUFFSixTQUFTLENBQ1AsR0FBbUI7UUFFbkIsT0FBTyxJQUFJLHlCQUFXLENBQ3BCLElBQUksRUFDSixJQUFJLENBQUMsT0FBTyxFQUNaLEdBQUcsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQ1YsUUFBa0MsRUFDbEMsZ0JBQXlCO1FBRXpCLE1BQU0saUNBQWlDLEdBQ3JDLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFeEQsTUFBTSxlQUFlLEdBQUcsSUFBQSxjQUFLLEVBQUMsaUNBQWlDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsT0FBTyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQ2QsS0FBYSxFQUNiLFFBQThELEVBQzlE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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFzQztBQUd0QywrQ0FBNEM7QUFTNUMsTUFBYSxPQUFPO0lBT0M7SUFJQTtJQUNBO0lBQ0E7SUFQbkIsWUFDbUIsd0JBR2hCLEVBQ2dCLEtBQVksRUFDWixPQUF3QyxFQUN4QyxtQkFBa0QsRUFBRTtRQU5wRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBR3hDO1FBQ2dCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixZQUFPLEdBQVAsT0FBTyxDQUFpQztRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9DO0lBQ3BFLENBQUM7SUFFSixTQUFTLENBQ1AsR0FBbUI7UUFFbkIsT0FBTyxJQUFJLHlCQUFXLENBQ3BCLElBQUksRUFDSixJQUFJLENBQUMsT0FBTyxFQUNaLEdBQUcsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQ1YsUUFBa0MsRUFDbEMsZ0JBQXlCO1FBRXpCLE1BQU0saUNBQWlDLEdBQ3JDLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFeEQsTUFBTSxlQUFlLEdBQUcsSUFBQSxjQUFLLEVBQUMsaUNBQWlDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkUsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUNkLEtBQWEsRUFDYixR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 |
{ | ||
"name": "factory-girl-ts", | ||
"version": "1.0.8", | ||
"version": "1.0.9", | ||
"description": "A factory library to help creating test data", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -85,2 +85,41 @@ [![Tests](https://github.com/thiagomini/factory-girl-ts/actions/workflows/node.js.yml/badge.svg)](https://github.com/thiagomini/factory-girl-ts/actions/workflows/node.js.yml) | ||
#### Sequences | ||
Instead of providing a hardcoded value, we can tell `factory-girl-ts` to instead use a sequence. | ||
The first parameter is an unique id. It can be used for sharing sequence across multiple factories. | ||
The second parameter is a callback that give you an integer auto-incremented that you can use for construct your value. | ||
```ts | ||
import { User } from './models/user'; | ||
import { FactoryGirl, SequelizeAdapter } from 'factory-girl-ts'; | ||
// Step 1: Specify the adapter for your ORM. | ||
FactoryGirl.setAdapter(new SequelizeAdapter()); | ||
// Step 2: Define your factory with default attributes for the model. | ||
const defaultAttributesFactory = () => ({ | ||
name: 'John', | ||
email: FactoryGirl.sequence<string>( | ||
'user.email', | ||
(n: number) => `some-email-${n}@mail.com`, | ||
), | ||
address: { | ||
state: 'Some state', | ||
country: 'Some country', | ||
}, | ||
}); | ||
const userFactory = FactoryGirl.define(User, defaultAttributesFactory); | ||
// Step 3: Use the factory to create instances of the model. | ||
const defaultUser = userFactory.build(); | ||
console.log(defaultUser); | ||
// Output: { name: 'John', email: 'some-email-1@mail.com', state: 'Some state', country: 'Some country' } | ||
const defaultUser2 = userFactory.build(); | ||
console.log(defaultUser2); | ||
// Output: { name: 'John', email: 'some-email-2@mail.com', state: 'Some state', country: 'Some country' } | ||
const defaultUser3 = userFactory.build(); | ||
console.log(defaultUser3); | ||
// Output: { name: 'John', email: 'some-email-3@mail.com', state: 'Some state', country: 'Some country' } | ||
``` | ||
### Overriding Default Properties | ||
@@ -87,0 +126,0 @@ |
Sorry, the diff of this file is not supported yet
163820
436
339