117 lines
2.5 KiB
Elixir
117 lines
2.5 KiB
Elixir
defmodule Farmbot.TestSupport.AssetFixtures do
|
|
alias FarmbotCore.Asset
|
|
|
|
alias FarmbotCore.Asset.{
|
|
Device,
|
|
FarmEvent,
|
|
FbosConfig,
|
|
Regimen,
|
|
Repo,
|
|
Sequence
|
|
}
|
|
|
|
def regimen_instance(regimen_params, farm_event_params, params \\ %{}) do
|
|
regimen = regimen(regimen_params)
|
|
farm_event = regimen_event(regimen, farm_event_params)
|
|
params = Map.merge(%{id: :rand.uniform(10000), monitor: false}, params)
|
|
Asset.new_regimen_instance!(farm_event, params)
|
|
end
|
|
|
|
def fbos_config(params \\ %{}) do
|
|
default = %{
|
|
id: :rand.uniform(10000),
|
|
monitor: false
|
|
}
|
|
|
|
FbosConfig
|
|
|> struct()
|
|
|> FbosConfig.changeset(Map.merge(default, params))
|
|
|> Repo.insert!()
|
|
end
|
|
|
|
def sequence(params \\ %{}) do
|
|
default = %{
|
|
id: :rand.uniform(10000),
|
|
monitor: false,
|
|
kind: "sequence",
|
|
args: %{locals: %{kind: "scope_declaration", args: %{}}},
|
|
body: []
|
|
}
|
|
|
|
Sequence
|
|
|> struct()
|
|
|> Sequence.changeset(Map.merge(default, params))
|
|
|> Repo.insert!()
|
|
end
|
|
|
|
def regimen(params \\ %{}) do
|
|
default = %{id: :rand.uniform(10000), monitor: false, regimen_items: []}
|
|
|
|
Regimen
|
|
|> struct()
|
|
|> Regimen.changeset(Map.merge(default, params))
|
|
|> Repo.insert!()
|
|
end
|
|
|
|
def regimen_event(regimen, params \\ %{}) do
|
|
now = DateTime.utc_now()
|
|
|
|
params =
|
|
Map.merge(
|
|
%{
|
|
id: :rand.uniform(1_000_000),
|
|
monitor: false,
|
|
executable_type: "Regimen",
|
|
executable_id: regimen.id,
|
|
start_time: now,
|
|
end_time: now,
|
|
repeat: 0,
|
|
time_unit: "never"
|
|
},
|
|
params
|
|
)
|
|
|
|
FarmEvent
|
|
|> struct()
|
|
|> FarmEvent.changeset(params)
|
|
|> Repo.insert!()
|
|
end
|
|
|
|
def sequence_event(sequence, params \\ %{}) do
|
|
now = DateTime.utc_now()
|
|
|
|
params =
|
|
Map.merge(
|
|
%{
|
|
id: :rand.uniform(1_000_000),
|
|
monitor: false,
|
|
executable_type: "Sequence",
|
|
executable_id: sequence.id,
|
|
start_time: now,
|
|
end_time: now,
|
|
repeat: 0,
|
|
time_unit: "never"
|
|
},
|
|
params
|
|
)
|
|
|
|
FarmEvent
|
|
|> struct()
|
|
|> FarmEvent.changeset(params)
|
|
|> Repo.insert!()
|
|
end
|
|
|
|
@doc """
|
|
Instantiates, but does not create, a %Device{}
|
|
"""
|
|
def device_init(params \\ %{}) do
|
|
defaults = %{id: :rand.uniform(1_000_000), monitor: false}
|
|
params = Map.merge(defaults, params)
|
|
|
|
Device
|
|
|> struct()
|
|
|> Device.changeset(params)
|
|
|> Ecto.Changeset.apply_changes()
|
|
end
|
|
end
|