From 8ec063c42f293f865da8a890cefafa72fe9b419b Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Thu, 9 Mar 2023 17:34:53 +0000 Subject: [PATCH] test: add sdkForProject tests --- src/lib/helpers/project.ts | 5 ++++ src/lib/stores/sdk.ts | 8 ++--- tests/unit/helpers/project.test.ts | 47 ++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 src/lib/helpers/project.ts create mode 100644 tests/unit/helpers/project.test.ts diff --git a/src/lib/helpers/project.ts b/src/lib/helpers/project.ts new file mode 100644 index 000000000..ff8f887b0 --- /dev/null +++ b/src/lib/helpers/project.ts @@ -0,0 +1,5 @@ +export function getProjectId() { + const pathname = window.location.pathname; + const projectMatch = pathname.match(/\/project-(.*?)\//); + return projectMatch?.[1] || null; +} diff --git a/src/lib/stores/sdk.ts b/src/lib/stores/sdk.ts index 78429a0c4..d0939adf7 100644 --- a/src/lib/stores/sdk.ts +++ b/src/lib/stores/sdk.ts @@ -1,3 +1,4 @@ +import { getProjectId } from '$lib/helpers/project'; import { Project } from '$lib/sdk/project'; import { VARS } from '$lib/system'; import { @@ -48,10 +49,9 @@ export const sdk = { users: new Users(clientConsole) }, get forProject() { - const pathname = window.location.pathname; - const projectMatch = pathname.match(/project-([a-zA-Z0-9]+)/); - if (projectMatch && projectMatch[1] !== clientProject.config.project) { - clientProject.setProject(projectMatch[1]); + const projectId = getProjectId(); + if (projectId && projectId !== clientProject.config.project) { + clientProject.setProject(projectId); } return sdkForProject; diff --git a/tests/unit/helpers/project.test.ts b/tests/unit/helpers/project.test.ts new file mode 100644 index 000000000..6e1d5b6e5 --- /dev/null +++ b/tests/unit/helpers/project.test.ts @@ -0,0 +1,47 @@ +import { getProjectId } from '$lib/helpers/project'; +import { vi } from 'vitest'; + +test('getProjectId', () => { + const tests: Array<{ + pathname: string; + expected: string | null; + }> = [ + { + pathname: '/console/project-6374e9031588b25d1841/databases', + expected: '6374e9031588b25d1841' + }, + { + pathname: '/console/project-/databases', + expected: null + }, + { + pathname: '/console/project-project-project-abc/databases', + expected: 'project-project-abc' + }, + { + pathname: '/console/project-abc/databases', + expected: 'abc' + }, + { + pathname: '/console/project-abc/databases/project-123', + expected: 'abc' + }, + { + pathname: '/console/project-abc/databases/project-123/project-456', + expected: 'abc' + }, + + { + pathname: '/console', + expected: null + } + ]; + + for (const { pathname, expected } of tests) { + vi.stubGlobal('location', { + ...window.location, + pathname + }); + expect(getProjectId()).toBe(expected); + } +});