Files
speckle-server/packages/server/test/speckle-helpers/commentHelper.ts
T
Kristaps Fabians Geikins 9998ed2586 feat: personal project limits (#4759)
* base limits cleanup

* history limit tests

* canCreatePersonal & tests

* canInvite block

* WIP model check

* fix tests

* shared tests fix

* lodash import fix

* lint fix

* help update

* hopefully fixing test

* CR comment
2025-05-20 14:56:05 +03:00

91 lines
3.1 KiB
TypeScript

import { getBlobsFactory } from '@/modules/blobstorage/repositories'
import { CommentRecord } from '@/modules/comments/helpers/types'
import {
insertCommentLinksFactory,
insertCommentsFactory,
markCommentViewedFactory
} from '@/modules/comments/repositories/comments'
import { validateInputAttachmentsFactory } from '@/modules/comments/services/commentTextService'
import { createCommentThreadAndNotifyFactory } from '@/modules/comments/services/management'
import {
getBranchLatestCommitsFactory,
getStreamBranchesByNameFactory
} from '@/modules/core/repositories/branches'
import {
getAllBranchCommitsFactory,
getSpecificBranchCommitsFactory
} from '@/modules/core/repositories/commits'
import { getStreamObjectsFactory } from '@/modules/core/repositories/objects'
import {
getViewerResourceGroupsFactory,
getViewerResourceItemsUngroupedFactory
} from '@/modules/core/services/commit/viewerResources'
import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector'
import { resourceBuilder } from '@speckle/shared/viewer/route'
import cryptoRandomString from 'crypto-random-string'
export const createTestComment = async (
params: {
userId: string
projectId: string
createdAt?: Date
} & ({ objectId: string } | { modelId: string; versionId?: string })
): Promise<CommentRecord> => {
const { userId, projectId } = params
const projectDb = await getProjectDbClient({ projectId })
const createComment = createCommentThreadAndNotifyFactory({
getViewerResourceItemsUngrouped: getViewerResourceItemsUngroupedFactory({
getViewerResourceGroups: getViewerResourceGroupsFactory({
getStreamObjects: getStreamObjectsFactory({ db: projectDb }),
getBranchLatestCommits: getBranchLatestCommitsFactory({ db: projectDb }),
getStreamBranchesByName: getStreamBranchesByNameFactory({ db: projectDb }),
getSpecificBranchCommits: getSpecificBranchCommitsFactory({ db: projectDb }),
getAllBranchCommits: getAllBranchCommitsFactory({ db: projectDb })
})
}),
validateInputAttachments: validateInputAttachmentsFactory({
getBlobs: getBlobsFactory({ db: projectDb })
}),
insertComments: insertCommentsFactory({ db: projectDb }),
insertCommentLinks: insertCommentLinksFactory({ db: projectDb }),
markCommentViewed: markCommentViewedFactory({ db: projectDb }),
emitEvent: async () => {}
})
const resourceIdStringBuilder = resourceBuilder()
if ('objectId' in params) {
resourceIdStringBuilder.addObject(params.objectId)
} else {
resourceIdStringBuilder.addModel(params.modelId, params.versionId)
}
return await createComment(
{
content: {
doc: {
type: 'doc',
content: [
{
type: 'paragraph',
content: [
{
type: 'text',
text: cryptoRandomString({ length: 9 })
}
]
}
]
}
},
projectId,
resourceIdString: resourceIdStringBuilder.toString()
},
userId,
{
createdAt: params.createdAt
}
)
}