From 94c97ec15154e9ea01fc6274e6477d61235f986f Mon Sep 17 00:00:00 2001 From: sua yoo Date: Tue, 10 Jun 2025 12:27:09 -0700 Subject: [PATCH 1/2] remove await --- frontend/src/pages/org/settings/components/general.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/frontend/src/pages/org/settings/components/general.ts b/frontend/src/pages/org/settings/components/general.ts index dea9cc1007..43b3d0f0db 100644 --- a/frontend/src/pages/org/settings/components/general.ts +++ b/frontend/src/pages/org/settings/components/general.ts @@ -364,8 +364,6 @@ export class OrgSettingsGeneral extends BtrixElement { AppStateService.updateUser(formatAPIUser(user), slug); - await this.updateComplete; - this.navigate.to(`${this.navigate.orgBasePath}/settings`); } From 522057d961e24428b7676a19b3730854df795de4 Mon Sep 17 00:00:00 2001 From: sua yoo Date: Tue, 10 Jun 2025 12:48:48 -0700 Subject: [PATCH 2/2] add test --- frontend/src/__mocks__/api/users/me.js | 17 +++++++ .../org/settings/components/general.test.ts | 46 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 frontend/src/__mocks__/api/users/me.js create mode 100644 frontend/src/pages/org/settings/components/general.test.ts diff --git a/frontend/src/__mocks__/api/users/me.js b/frontend/src/__mocks__/api/users/me.js new file mode 100644 index 0000000000..d9caad2891 --- /dev/null +++ b/frontend/src/__mocks__/api/users/me.js @@ -0,0 +1,17 @@ +const mockAPIUser = { + id: "740d7b63-b257-4311-ba3f-adc46a5fafb8", + email: "test-user@example.com", + name: "Test User", + is_verified: false, + is_superuser: false, + orgs: [ + { + id: "e21ab647-2d0e-489d-97d1-88ac91774942", + name: "test org", + slug: "test-org", + role: 10, + }, + ], +}; + +export default mockAPIUser; diff --git a/frontend/src/pages/org/settings/components/general.test.ts b/frontend/src/pages/org/settings/components/general.test.ts new file mode 100644 index 0000000000..6edefbba9c --- /dev/null +++ b/frontend/src/pages/org/settings/components/general.test.ts @@ -0,0 +1,46 @@ +import { expect, fixture } from "@open-wc/testing"; +import { html } from "lit"; +import { restore, stub } from "sinon"; + +import "./general"; + +import type { OrgSettingsGeneral } from "./general"; + +import mockAPIUser from "@/__mocks__/api/users/me.js"; +import { AppStateService } from "@/utils/state"; + +describe("btrix-org-settings-general", () => { + beforeEach(() => { + AppStateService.resetAll(); + window.localStorage.clear(); + window.sessionStorage.clear(); + stub(window.history, "pushState"); + }); + + afterEach(() => { + restore(); + }); + + describe("#renameOrg", () => { + it("redirects to the correct page", async () => { + const el = await fixture( + html``, + ); + + stub(el.navigate, "to"); + stub(el.api, "fetch").callsFake(async (path) => { + if (path === "/users/me") { + return Promise.resolve(mockAPIUser); + } + return Promise.resolve({}); + }); + + // @ts-expect-error renameOrg is private + await el.renameOrg({ name: "Fake Org Name 2", slug: "fake-org-name-2" }); + + expect(el.navigate.to).to.have.been.calledWith( + "/orgs/fake-org-name-2/settings", + ); + }); + }); +});