diff --git a/buzz/api/events/services.py b/buzz/api/events/services.py index ec7a327b..0a592980 100644 --- a/buzz/api/events/services.py +++ b/buzz/api/events/services.py @@ -425,22 +425,17 @@ def route_availability(route: str, event: str | None = None) -> RouteAvailabilit would collide. """ route = (route or "").strip().lower() - if not route: - return RouteAvailability(available=False, message=_("Enter a route.")) - - if route in RESERVED_EVENT_ROUTES: - return RouteAvailability( - available=False, message=_("'{0}' is reserved and cannot be used.").format(route) - ) - filters = {"route": route} if event: filters["name"] = ("!=", event) - if frappe.db.exists("Buzz Event", filters): - return RouteAvailability(available=False, message=_("This route is already taken.")) + # A reserved route and a blank one are both unavailable, and the field says so the + # same way a claimed one does — the reason is not the organiser's problem to fix. + taken = not route or route in RESERVED_EVENT_ROUTES or frappe.db.exists("Buzz Event", filters) + if taken: + return RouteAvailability(available=False, message=_("Already exists")) - return RouteAvailability(available=True, message=_("This route is available.")) + return RouteAvailability(available=True, message=_("Available")) # Buzz Event demands a category and a host, neither of which the create form asks for. diff --git a/e2e/tests/manage-event.spec.ts b/e2e/tests/manage-event.spec.ts index 528ce532..a347a02c 100644 --- a/e2e/tests/manage-event.spec.ts +++ b/e2e/tests/manage-event.spec.ts @@ -168,15 +168,15 @@ test.describe("Claiming a route", () => { await expect(field).toBeVisible({ timeout: 15000 }) await field.fill(`free-route-${Date.now()}`) - await expect(page.getByText("This route is available.")).toBeVisible() + await expect(page.getByText("Available", { exact: true })).toBeVisible() // The shared event already answers to this one. await field.fill("test-event-e2e") - await expect(page.getByText("This route is already taken.")).toBeVisible() + await expect(page.getByText("Already exists", { exact: true })).toBeVisible() - // Reserved so an event cannot shadow /b/account. + // Reserved so an event cannot shadow /b/account, and it reads the same as a claimed one. await field.fill("account") - await expect(page.getByText("reserved")).toBeVisible() + await expect(page.getByText("Already exists", { exact: true })).toBeVisible() }) })