Strategy

Strategies are the way for fixture-riveter to modularize creation and relation in creating instances of fixture definitions. The interface is small, making subclassing easy.

Example
import {fr, Strategy, Assembler} from "fixture-riveter";

class JsonStrategy extends Strategy {
    // This strategy takes the created instance and turns it into a json string
    async result<T>(assembler: Assembler<T>): Promise<string> {
        const instance = await assembler.toInstance();
        return JSON.stringify(instance);
    }
}

fr.registerStrategy("json", JsonStrategy);
1
2
3
4
5
6
7
8
9
10
11

Instance properties

name

String name of this strategy. Used to find the strategy when calling fr.run.

adapter

Instance of the specified Adapter (per-fixture or global).

fixture-riveter

The currently-running instance. Useful when using relate (see below).

Methods

None of the methods on a Strategy will be exposed to the uesr; they are called internally in the generation of a given fixture. Because each Strategy can perform wildly different operations, each method will be described at a high level. Then, the 3 provided Strategies will be detailed.

result()

Handles calling the "object creation" methods given by the Assembler, awaiting callbacks as necessary. Accepts the Model class function as well, in case

Arguments
ArgumentTypeDescriptionOptional?
assemblerAssemblerAssembler instanceRequired
ModelClass functionThe class function (constructor)Optional
Return value
TypeDescription
Promise<any>Object to be returned directly to the caller.

relation()

When a fixture defines a relationship to another fixture, this method is called to perform the creation of the related object.

Arguments
ArgumentTypeDescriptionOptional?
fixtureNamestringFixture name of relationRequired
traitsAndOverrides[string[]]
[Record<string, any>]
[string[], Record<string, any>]
A list of a list of traits and/or overrides for the relationOptional
Return value
TypeDescription
Promise<any>Object to be set on the current fixture instance.

Default Strategies

build

result()

Creates an instance of the fixture's model, assigns attributes, and then performs the after("build") callback.

relation()

Calls fr.run with the "build" strategy, returning just the instance of the related fixture.

create

result()

Creates an instance of the fixture's model and assigns attributes. Performs the after("build") and before("create") callbacks. Calls the adapter's save method (detailed here), and then performs the after("create") callbacks.

relation()

Calls fr.run with the "create" strategy, returning the saved instance of the related fixture.

attributesFor

result()

Assigns the fixture's attributes to a plain javacsript object.

relation()

Calls fr.run with the "null" strategy, returning undefined.