Add comprehensive tests for Agents context
Added 9 new tests to expand coverage: - get_agent_token!/1 success and failure cases - update_agent_token_heartbeat/3 edge cases (nil and empty metadata) - get_equipment_assignment/1 for assigned and unassigned equipment - update_equipment_assignment/2 for creating, updating, and removing assignments This improves Agents coverage from 89.29% to higher.
This commit is contained in:
parent
f0af777f6e
commit
b91f81fc2e
1 changed files with 135 additions and 0 deletions
|
|
@ -168,6 +168,141 @@ defmodule Towerops.AgentsTest do
|
|||
end
|
||||
end
|
||||
|
||||
describe "get_agent_token!/1" do
|
||||
test "returns agent token by id", %{organization: org} do
|
||||
{:ok, agent_token, _token} = Agents.create_agent_token(org.id, "Test Agent")
|
||||
|
||||
retrieved_token = Agents.get_agent_token!(agent_token.id)
|
||||
assert retrieved_token.id == agent_token.id
|
||||
assert retrieved_token.name == "Test Agent"
|
||||
end
|
||||
|
||||
test "raises when token not found" do
|
||||
assert_raise Ecto.NoResultsError, fn ->
|
||||
Agents.get_agent_token!(Ecto.UUID.generate())
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "update_agent_token_heartbeat/3 edge cases" do
|
||||
test "updates without metadata when nil is provided", %{organization: org} do
|
||||
{:ok, agent_token, _token} = Agents.create_agent_token(org.id, "Test Agent")
|
||||
|
||||
{1, _} = Agents.update_agent_token_heartbeat(agent_token.id, "192.168.1.1", nil)
|
||||
|
||||
updated_token = Repo.get!(AgentToken, agent_token.id)
|
||||
assert updated_token.last_ip == "192.168.1.1"
|
||||
assert updated_token.last_seen_at
|
||||
end
|
||||
|
||||
test "updates without metadata when empty map is provided", %{organization: org} do
|
||||
{:ok, agent_token, _token} = Agents.create_agent_token(org.id, "Test Agent")
|
||||
|
||||
{1, _} = Agents.update_agent_token_heartbeat(agent_token.id, "192.168.1.1", %{})
|
||||
|
||||
updated_token = Repo.get!(AgentToken, agent_token.id)
|
||||
assert updated_token.last_ip == "192.168.1.1"
|
||||
assert updated_token.last_seen_at
|
||||
end
|
||||
end
|
||||
|
||||
describe "get_equipment_assignment/1" do
|
||||
setup %{organization: org} do
|
||||
{:ok, site} =
|
||||
Towerops.Sites.create_site(%{
|
||||
name: "Test Site",
|
||||
organization_id: org.id
|
||||
})
|
||||
|
||||
{:ok, equipment} =
|
||||
Towerops.Equipment.create_equipment(%{
|
||||
name: "Test Equipment",
|
||||
ip_address: "192.168.1.1",
|
||||
site_id: site.id
|
||||
})
|
||||
|
||||
{:ok, agent_token, _token} = Agents.create_agent_token(org.id, "Test Agent")
|
||||
|
||||
%{site: site, equipment: equipment, agent_token: agent_token}
|
||||
end
|
||||
|
||||
test "returns assignment when equipment is assigned", %{
|
||||
agent_token: agent_token,
|
||||
equipment: equipment
|
||||
} do
|
||||
{:ok, assignment} = Agents.assign_equipment_to_agent(agent_token.id, equipment.id)
|
||||
|
||||
retrieved_assignment = Agents.get_equipment_assignment(equipment.id)
|
||||
assert retrieved_assignment.id == assignment.id
|
||||
end
|
||||
|
||||
test "returns nil when equipment is not assigned", %{equipment: equipment} do
|
||||
assert Agents.get_equipment_assignment(equipment.id) == nil
|
||||
end
|
||||
end
|
||||
|
||||
describe "update_equipment_assignment/2" do
|
||||
setup %{organization: org} do
|
||||
{:ok, site} =
|
||||
Towerops.Sites.create_site(%{
|
||||
name: "Test Site",
|
||||
organization_id: org.id
|
||||
})
|
||||
|
||||
{:ok, equipment} =
|
||||
Towerops.Equipment.create_equipment(%{
|
||||
name: "Test Equipment",
|
||||
ip_address: "192.168.1.1",
|
||||
site_id: site.id
|
||||
})
|
||||
|
||||
{:ok, agent_token1, _} = Agents.create_agent_token(org.id, "Agent 1")
|
||||
{:ok, agent_token2, _} = Agents.create_agent_token(org.id, "Agent 2")
|
||||
|
||||
%{
|
||||
site: site,
|
||||
equipment: equipment,
|
||||
agent_token1: agent_token1,
|
||||
agent_token2: agent_token2
|
||||
}
|
||||
end
|
||||
|
||||
test "creates new assignment when equipment is unassigned", %{
|
||||
equipment: equipment,
|
||||
agent_token1: agent_token1
|
||||
} do
|
||||
assert {:ok, assignment} =
|
||||
Agents.update_equipment_assignment(equipment.id, agent_token1.id)
|
||||
|
||||
assert assignment.agent_token_id == agent_token1.id
|
||||
assert assignment.equipment_id == equipment.id
|
||||
end
|
||||
|
||||
test "updates existing assignment to new agent", %{
|
||||
equipment: equipment,
|
||||
agent_token1: agent_token1,
|
||||
agent_token2: agent_token2
|
||||
} do
|
||||
{:ok, _} = Agents.assign_equipment_to_agent(agent_token1.id, equipment.id)
|
||||
|
||||
assert {:ok, updated_assignment} =
|
||||
Agents.update_equipment_assignment(equipment.id, agent_token2.id)
|
||||
|
||||
assert updated_assignment.agent_token_id == agent_token2.id
|
||||
assert updated_assignment.equipment_id == equipment.id
|
||||
end
|
||||
|
||||
test "removes assignment when set to nil", %{
|
||||
equipment: equipment,
|
||||
agent_token1: agent_token1
|
||||
} do
|
||||
{:ok, _} = Agents.assign_equipment_to_agent(agent_token1.id, equipment.id)
|
||||
|
||||
assert {:ok, nil} = Agents.update_equipment_assignment(equipment.id, nil)
|
||||
assert Agents.get_equipment_assignment(equipment.id) == nil
|
||||
end
|
||||
end
|
||||
|
||||
describe "list_agent_equipment/1" do
|
||||
setup %{organization: org} do
|
||||
{:ok, site} =
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue