+12








fcd7c979df
Co-authored-by: Artur <145776561+arturict@users.noreply.github.com> Co-authored-by: arturict <arturict@users.noreply.github.com> Co-authored-by: Thomas <thomas@ajnart.fr> Co-authored-by: Afonso Jorge Ramos <afonsojorgeramos@gmail.com> Co-authored-by: Danura30082 <danura30082+github@gmail.com> Co-authored-by: Kushie <122986913+kushiemoon-dev@users.noreply.github.com> Co-authored-by: ajnart <thomas@ajnart.fr> Co-authored-by: ajnart <thomas@ajnart.dev> Co-authored-by: chenjun <chenjun@foxmail.com> Co-authored-by: Wikibear <wikibear@users.noreply.github.com> Co-authored-by: Bergasha <bergasha@gmail.com> Co-authored-by: leafyelin <43306196+leafyelin@users.noreply.github.com> Co-authored-by: Lucas Araujo <lucas.lra@gmail.com> Co-authored-by: GreenMonito <86085570+GreenMonito@users.noreply.github.com> Co-authored-by: Nerdy-Technician <roffo@nerdy-technician.social> Co-authored-by: Jun <34545896+jcstrong@users.noreply.github.com> Co-authored-by: Edmond Abraham <54119952+gitedmond@users.noreply.github.com> Co-authored-by: thrawnx <tight.bulb9384@fastmail.com> Co-authored-by: Chris <58918656+nordada@users.noreply.github.com> Co-authored-by: yi111 <153097222+Yi-111-a@users.noreply.github.com> Co-authored-by: Yanis <naamaneyanis@gmail.com> Co-authored-by: Wikibear <me@sej.de> Co-authored-by: alessiottavo <93441886+alessiottavo@users.noreply.github.com>
63 lines
2.0 KiB
TypeScript
63 lines
2.0 KiB
TypeScript
import type { Page } from "@playwright/test";
|
|
import { eq } from "drizzle-orm";
|
|
import { expect } from "vitest";
|
|
|
|
import * as sqliteSchema from "../../../packages/db/schema/sqlite";
|
|
import type { OnboardingStep } from "../../../packages/definitions/src";
|
|
import { credentialsAdminGroup } from "../../../packages/definitions/src/group";
|
|
import type { SqliteDatabase } from "../e2e-db";
|
|
|
|
export class OnboardingAssertions {
|
|
private readonly page: Page;
|
|
private readonly db: SqliteDatabase;
|
|
|
|
constructor(page: Page, db: SqliteDatabase) {
|
|
this.page = page;
|
|
this.db = db;
|
|
}
|
|
|
|
public async assertDbOnboardingStepAsync(expectedStep: OnboardingStep) {
|
|
const onboarding = await this.db.query.onboarding.findFirst();
|
|
expect(onboarding?.step).toEqual(expectedStep);
|
|
}
|
|
|
|
public async assertUserAndAdminGroupInsertedAsync(expectedUsername: string) {
|
|
const users = await this.db.query.users.findMany({
|
|
with: {
|
|
groups: {
|
|
with: {
|
|
group: {
|
|
with: {
|
|
permissions: true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
const user = users.find((u) => u.name === expectedUsername);
|
|
expect(user).toBeDefined();
|
|
|
|
const adminGroup = user!.groups.find((g) => g.group.name === credentialsAdminGroup);
|
|
expect(adminGroup).toBeDefined();
|
|
expect(adminGroup!.group.permissions).toEqual([expect.objectContaining({ permission: "admin" })]);
|
|
}
|
|
|
|
public async assertExternalGroupInsertedAsync(expectedGroupName: string) {
|
|
const group = await this.db.query.groups.findFirst({
|
|
where: eq(sqliteSchema.groups.name, expectedGroupName),
|
|
with: {
|
|
permissions: true,
|
|
},
|
|
});
|
|
|
|
expect(group).toBeDefined();
|
|
expect(group!.permissions).toEqual([expect.objectContaining({ permission: "admin" })]);
|
|
}
|
|
|
|
public async assertFinishStepVisibleAsync() {
|
|
await this.page.getByRole("heading", { name: "Your first board is ready." }).waitFor({ timeout: 30_000 });
|
|
}
|
|
}
|