Files
speckle-server/packages/server/modules/workspaces/tests/integration/tracking.spec.ts
T
Kristaps Fabians Geikins 4b06f42db7 chore(server): run TS files directly (no compilation) (#5134)
* sort of works

* type fixes

* added option to run old way too
2025-07-23 11:20:40 +02:00

86 lines
3.2 KiB
TypeScript

import type { BasicTestUser } from '@/test/authHelper'
import { createTestUser } from '@/test/authHelper'
import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation'
import {
createRandomEmail,
createRandomString
} from '@/modules/core/helpers/testHelpers'
import {
countWorkspaceRoleWithOptionalProjectRoleFactory,
getAllWorkspacesFactory,
getWorkspaceSeatCountFactory,
getWorkspacesProjectsCountsFactory
} from '@/modules/workspaces/repositories/workspaces'
import { getDefaultRegionFactory } from '@/modules/workspaces/repositories/regions'
import {
getWorkspacePlanFactory,
getWorkspaceSubscriptionFactory
} from '@/modules/gatekeeper/repositories/billing'
import { getWorkspaceModelCountFactory } from '@/modules/workspaces/services/workspaceLimits'
import { getExplicitProjects } from '@/modules/core/repositories/streams'
import { db } from '@/db/knex'
import { getPaginatedProjectModelsTotalCountFactory } from '@/modules/core/repositories/branches'
import { updateAllWorkspacesTackingPropertiesFactory } from '@/modules/workspaces/services/tracking'
import { logger } from '@/observability/logging'
import { buildMixpanelFake } from '@/modules/shared/test/helpers/mixpanel'
import { expect } from 'chai'
import { truncateTables } from '@/test/hooks'
import { Workspaces } from '@/modules/workspaces/helpers/db'
import { queryAllProjectsFactory } from '@/modules/core/services/projects'
describe('Tracking Workspaces', () => {
const testUser: BasicTestUser = {
id: createRandomString(),
name: createRandomString(),
email: createRandomEmail()
}
const updateAllWorkspacesTackingProperties =
updateAllWorkspacesTackingPropertiesFactory({
countWorkspaceRole: countWorkspaceRoleWithOptionalProjectRoleFactory({ db }),
getDefaultRegion: getDefaultRegionFactory({ db }),
getWorkspacePlan: getWorkspacePlanFactory({ db }),
getWorkspaceSubscription: getWorkspaceSubscriptionFactory({ db }),
getWorkspaceModelCount: getWorkspaceModelCountFactory({
queryAllProjects: queryAllProjectsFactory({
getExplicitProjects: getExplicitProjects({ db })
}),
getPaginatedProjectModelsTotalCount: getPaginatedProjectModelsTotalCountFactory(
{
db
}
)
}),
getWorkspacesProjectCount: getWorkspacesProjectsCountsFactory({ db }),
getWorkspaceSeatCount: getWorkspaceSeatCountFactory({ db }),
getAllWorkspaces: getAllWorkspacesFactory({ db })
})
before(async () => {
await truncateTables([Workspaces.name])
await createTestUser(testUser)
for (let i = 0; i < 30; i++) {
await createTestWorkspace(
{
id: createRandomString(),
ownerId: createRandomString(),
slug: createRandomString(),
name: createRandomString()
},
testUser
)
}
})
it('updates all existing workspaces an update workpspace', async () => {
const fakeStorage: Record<string, object | string> = {}
const fakeMixpanel = buildMixpanelFake({
groups: fakeStorage
})
await updateAllWorkspacesTackingProperties({ logger, mixpanel: fakeMixpanel })
expect(Object.keys(fakeStorage).length).to.eq(30)
})
})