142 lines
3.0 KiB
Elixir
142 lines
3.0 KiB
Elixir
defmodule FarmbotOS.SysCalls.PointLookupTest do
|
|
use ExUnit.Case
|
|
use Mimic
|
|
|
|
alias FarmbotOS.SysCalls.PointLookup
|
|
alias FarmbotCore.Asset.Point
|
|
alias FarmbotCore.Asset.Repo
|
|
|
|
alias FarmbotCore.Asset.{
|
|
Point,
|
|
PointGroup,
|
|
Repo,
|
|
Tool
|
|
}
|
|
|
|
setup :verify_on_exit!
|
|
|
|
test "failure cases" do
|
|
err1 = PointLookup.point("GenericPointer", 24)
|
|
assert {:error, "GenericPointer 24 not found"} == err1
|
|
|
|
err2 = PointLookup.get_toolslot_for_tool(24)
|
|
assert {:error, "Could not find point for tool by id: 24"} == err2
|
|
|
|
err3 = PointLookup.get_point_group(24)
|
|
assert {:error, "Could not find PointGroup.24"} == err3
|
|
end
|
|
|
|
test "PointLookup.point/2" do
|
|
Repo.delete_all(Point)
|
|
|
|
expected = %{
|
|
name: "test suite III",
|
|
x: 1.2,
|
|
y: 3.4,
|
|
z: 5.6,
|
|
resource_id: 555,
|
|
resource_type: "GenericPointer"
|
|
}
|
|
|
|
p = point(expected)
|
|
|
|
assert expected == PointLookup.point("GenericPointer", p.id)
|
|
end
|
|
|
|
test "PointLookup.get_toolslot_for_tool/1 (gantry mounted tool)" do
|
|
Repo.delete_all(Point)
|
|
Repo.delete_all(Tool)
|
|
expect(FarmbotOS.SysCalls.Movement, :get_current_x, 1, fn -> 9.99 end)
|
|
|
|
t = tool(%{name: "moisture probe"})
|
|
|
|
point(%{
|
|
pointer_type: "ToolSlot",
|
|
name: "Tool Slot",
|
|
tool_id: t.id,
|
|
gantry_mounted: true,
|
|
x: 4.4,
|
|
y: 4.4,
|
|
z: 4.4
|
|
})
|
|
|
|
important_part = %{
|
|
name: "Tool Slot",
|
|
x: 9.99,
|
|
y: 4.4,
|
|
z: 4.4,
|
|
gantry_mounted: true
|
|
}
|
|
|
|
assert important_part == PointLookup.get_toolslot_for_tool(t.id)
|
|
end
|
|
|
|
test "PointLookup.get_toolslot_for_tool/1" do
|
|
Repo.delete_all(Point)
|
|
Repo.delete_all(Tool)
|
|
|
|
t = tool(%{name: "moisture probe"})
|
|
|
|
important_part = %{
|
|
name: "Tool Slot",
|
|
x: 1.9,
|
|
y: 2.9,
|
|
z: 3.9,
|
|
gantry_mounted: false
|
|
}
|
|
|
|
other_stuff = %{
|
|
pointer_type: "ToolSlot",
|
|
tool_id: t.id
|
|
}
|
|
|
|
point(Map.merge(important_part, other_stuff))
|
|
assert important_part == PointLookup.get_toolslot_for_tool(t.id)
|
|
end
|
|
|
|
test "PointLookup.get_point_group/1 - int" do
|
|
Repo.delete_all(PointGroup)
|
|
Repo.delete_all(Point)
|
|
|
|
pg = point_group(%{point_ids: [1, 2, 3]})
|
|
|
|
assert pg == PointLookup.get_point_group(pg.id)
|
|
end
|
|
|
|
@tag :capture_log
|
|
test "PointLookup.get_point_group/1 - string" do
|
|
Repo.delete_all(PointGroup)
|
|
Repo.delete_all(Point)
|
|
|
|
point(%{pointer_type: "ToolSlot", id: 601})
|
|
point(%{pointer_type: "Plant", id: 602})
|
|
point(%{pointer_type: "GenericPointer", id: 603})
|
|
%{point_ids: list} = PointLookup.get_point_group("Plant")
|
|
assert list == [602]
|
|
end
|
|
|
|
defp point_group(extra_stuff) do
|
|
base = %PointGroup{id: 555}
|
|
|
|
Map.merge(base, extra_stuff)
|
|
|> PointGroup.changeset()
|
|
|> Repo.insert!()
|
|
end
|
|
|
|
defp point(extra_stuff) do
|
|
base = %Point{id: 555, pointer_type: "GenericPointer"}
|
|
|
|
Map.merge(base, extra_stuff)
|
|
|> Point.changeset()
|
|
|> Repo.insert!()
|
|
end
|
|
|
|
defp tool(extra_stuff) do
|
|
base = %Tool{id: 555}
|
|
|
|
Map.merge(base, extra_stuff)
|
|
|> Tool.changeset()
|
|
|> Repo.insert!()
|
|
end
|
|
end
|