From a8ff0a3a5a23774dde4ffb0145b15821f8111c56 Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Thu, 7 Jul 2022 15:38:17 +0300 Subject: [PATCH] Add badges page e2e tests --- app/db/seed.ts | 2 +- app/routes/badges/$id.tsx | 2 +- app/routes/badges/$id/edit.tsx | 17 ++++++++--- cypress/e2e/badges.cy.ts | 54 ++++++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/app/db/seed.ts b/app/db/seed.ts index 0802e3b25..4ad3d0c91 100644 --- a/app/db/seed.ts +++ b/app/db/seed.ts @@ -239,7 +239,7 @@ function badgesToUsers() { ); let userIds = sql - .prepare(`select "id" from "User"`) + .prepare(`select "id" from "User" where id != 2`) // no badges for N-ZAP .all() .map((u) => u.id) as number[]; diff --git a/app/routes/badges/$id.tsx b/app/routes/badges/$id.tsx index 5f8ebc752..71a9b9ed9 100644 --- a/app/routes/badges/$id.tsx +++ b/app/routes/badges/$id.tsx @@ -71,7 +71,7 @@ export default function BadgeDetailsPage() { > ×{owner.count} - {discordFullName(owner)} + {discordFullName(owner)} ))} diff --git a/app/routes/badges/$id/edit.tsx b/app/routes/badges/$id/edit.tsx index 35b6e2605..3edf5ab8f 100644 --- a/app/routes/badges/$id/edit.tsx +++ b/app/routes/badges/$id/edit.tsx @@ -12,7 +12,7 @@ import { actualNumber, noDuplicates, safeJSONParse, id } from "~/utils/zod"; import type { ActionFunction } from "@remix-run/node"; import { requireUser, useUser } from "~/modules/auth"; import { parseRequestFormData, validate } from "~/utils/remix"; -import { canEditBadgeManagers } from "~/permissions"; +import { canEditBadgeManagers, canEditBadgeOwners } from "~/permissions"; import { assertUnreachable } from "~/utils/types"; import { db } from "~/db"; import type { User } from "~/db/types"; @@ -36,14 +36,21 @@ export const action: ActionFunction = async ({ request, params }) => { const badgeId = z.preprocess(actualNumber, z.number()).parse(params["id"]); const user = await requireUser(request); - validate(canEditBadgeManagers(user)); - switch (data._action) { case "MANAGERS": { + validate(canEditBadgeManagers(user)); + db.badges.upsertManyManagers({ badgeId, managerIds: data.managerIds }); break; } case "OWNERS": { + validate( + canEditBadgeOwners({ + user, + managers: db.badges.managersByBadgeId(badgeId), + }) + ); + db.badges.upsertManyOwners({ badgeId, ownerIds: data.ownerIds }); break; } @@ -117,7 +124,7 @@ function Managers({ data }: { data: BadgeDetailsLoaderData }) {

Managers