test: GraphQL Schedule resolver create/update/delete success and error branches

This commit is contained in:
Graham McIntire 2026-05-09 09:50:08 -05:00
parent 0c0d6e8691
commit 33b18dea6f

View file

@ -16,6 +16,63 @@ defmodule ToweropsWeb.GraphQL.Resolvers.HappyPathTest do
%{user: user, org: org, ctx: %{context: %{organization_id: org.id, user: user}}}
end
describe "Schedule (success/error branches)" do
test "create/3 returns the new schedule on success", %{ctx: ctx} do
input = %{name: "Primary On-Call", description: "24/7", timezone: "Etc/UTC"}
assert {:ok, schedule} = Resolvers.Schedule.create(nil, %{input: input}, ctx)
assert schedule.name == "Primary On-Call"
end
test "create/3 with invalid input returns formatted error", %{ctx: ctx} do
# name is required
assert {:error, msg} = Resolvers.Schedule.create(nil, %{input: %{name: ""}}, ctx)
assert is_binary(msg)
end
test "update/3 succeeds on a real schedule", %{ctx: ctx, org: org} do
{:ok, schedule} =
Towerops.OnCall.create_schedule(%{
name: "Original",
timezone: "Etc/UTC",
organization_id: org.id
})
assert {:ok, updated} =
Resolvers.Schedule.update(nil, %{id: schedule.id, input: %{name: "Renamed"}}, ctx)
assert updated.name == "Renamed"
end
test "update/3 with invalid input on a real schedule returns formatted error", %{
ctx: ctx,
org: org
} do
{:ok, schedule} =
Towerops.OnCall.create_schedule(%{
name: "Pre-update",
timezone: "Etc/UTC",
organization_id: org.id
})
assert {:error, msg} =
Resolvers.Schedule.update(nil, %{id: schedule.id, input: %{name: ""}}, ctx)
assert is_binary(msg)
end
test "delete/3 succeeds on a real schedule", %{ctx: ctx, org: org} do
{:ok, schedule} =
Towerops.OnCall.create_schedule(%{
name: "Doomed",
timezone: "Etc/UTC",
organization_id: org.id
})
assert {:ok, %{success: true}} =
Resolvers.Schedule.delete(nil, %{id: schedule.id}, ctx)
end
end
describe "Member" do
test "invite/3 creates an invitation", %{ctx: ctx} do
assert {:ok, invitation} =