debianize-mobilizon/test/support/factory.ex

90 lines
2.0 KiB
Elixir
Raw Normal View History

defmodule Eventos.Factory do
@moduledoc """
Factory for fixtures with ExMachina
"""
# with Ecto
use ExMachina.Ecto, repo: Eventos.Repo
def user_factory do
%Eventos.Accounts.User{
password_hash: "Jane Smith",
email: sequence(:email, &"email-#{&1}@example.com"),
role: 0,
account: build(:account)
}
end
def account_factory do
{:ok, {_, pubkey}} = RsaEx.generate_keypair("4096")
username = sequence("thomas")
%Eventos.Accounts.Account{
username: username,
domain: nil,
public_key: pubkey,
url: EventosWeb.Endpoint.url() <> "/@#{username}"
}
end
def category_factory do
%Eventos.Events.Category{
title: sequence("MyCategory"),
description: "My category desc"
}
end
def address_factory do
%Eventos.Addresses.Address{
description: sequence("MyAddress"),
geom: %Geo.Point{coordinates: {30, -90}, srid: 4326},
floor: "Myfloor",
addressCountry: "My Country",
addressLocality: "My Locality",
addressRegion: "My Region",
postalCode: "My Postal Code",
streetAddress: "My Street Address"
}
end
def event_factory do
account = build(:account)
slug = sequence("my-event")
%Eventos.Events.Event{
title: sequence("MyEvent"),
slug: slug,
description: "My desc",
begins_on: nil,
ends_on: nil,
organizer_account: account,
category: build(:category),
address: build(:address),
url: EventosWeb.Endpoint.url() <> "/@" <> account.username <> "/" <> slug
}
end
def session_factory do
%Eventos.Events.Session{
title: sequence("MySession"),
event: build(:event),
track: build(:track)
}
end
def track_factory do
%Eventos.Events.Track{
name: sequence("MyTrack"),
event: build(:event)
}
end
def group_factory do
%Eventos.Groups.Group{
title: sequence("My Group"),
description: "My group",
suspended: false,
url: "https://",
address: build(:address)
}
end
end