View Source FactoryEx behaviour (factory_ex v0.1.0)

FactoryEx

Test Hex version badge

installation

Installation

Available in Hex, the package can be installed by adding factory_ex to your list of dependencies in mix.exs:

def deps do
  [
    {:factory_ex, "~> 0.1.0"}
  ]
end

Documentation can be found at https://hexdocs.pm/factory_ex.

using

Using

For defining your own factories just implement schema/0, repo/0 and build/0 callback e.g:

defmodule MyFactory do
  @behaviour FactoryEx

  def schema, do: MySchema

  def repo, do: MyRepo

  def build(params \\ %{}) do
    default = %{
      foo: 21,
      bar: 42
    }

    Map.merge(default, params)
  end
end

And then using it in your tests as:

# For getting a default parameter map.
FactoryEx.build(MyFactory)

# For getting a default parameter map with a modification.
FactoryEx.build(MyFactory, foo: 42)

# For inserting a default schema.
FactoryEx.insert!(MyFactory)

# For inserting a default schema with a modification.
FactoryEx.insert!(MyFactory, foo: 42)

Link to this section Summary

Callbacks

Callback that returns a map with valid defaults for the schema.

Callback that returns a struct with valid defaults for the schema.

Callback that returns the schema's repo module.

Callback that returns the schema module.

Functions

Builds a schema given the factory module and an optional list/map of params.

Builds the parameters for a schema changeset/2 function given the factory module and an optional list/map of params.

Removes all the instances of a schema from the database given its factory module.

Inserts a schema given the factory module and an optional list/map of params. Fails on error.

Insert as many as count schemas given the factory module and an optional list/map of params.

Link to this section Callbacks

@callback build(map()) :: map()

Callback that returns a map with valid defaults for the schema.

Link to this callback

build_struct(map)

View Source (optional)
@callback build_struct(map()) :: struct()

Callback that returns a struct with valid defaults for the schema.

@callback repo() :: module()

Callback that returns the schema's repo module.

@callback schema() :: module()

Callback that returns the schema module.

Link to this section Functions

Link to this function

build(module, params \\ %{})

View Source
@spec build(module(), keyword() | map()) :: Ecto.Schema.t()

Builds a schema given the factory module and an optional list/map of params.

Link to this function

build_params(module, params \\ %{})

View Source
@spec build_params(module(), keyword() | map()) :: map()

Builds the parameters for a schema changeset/2 function given the factory module and an optional list/map of params.

Link to this function

cleanup(module, options \\ [])

View Source

Removes all the instances of a schema from the database given its factory module.

Link to this function

insert!(module, params \\ %{}, options \\ [])

View Source
@spec insert!(module(), keyword() | map(), Keyword.t()) ::
  Ecto.Schema.t() | no_return()

Inserts a schema given the factory module and an optional list/map of params. Fails on error.

Link to this function

insert_many!(count, module, params \\ %{}, options \\ [])

View Source

Insert as many as count schemas given the factory module and an optional list/map of params.