Files
speckle-server/packages/server/test/speckle-helpers/commentHelper.ts
T
Kristaps Fabians Geikins a6287fc06d feat(fe2 & server): saved views foundation (list & view) + bits n bobs (#5163)
* init db migration

* WIP store view

* create service call

* WIP insertion

* insert sort of works

* moving code arounmd

* creation tests

* avoid duplicate entries

* fixes from main

* basic group retrieval works

* group filtering works

* WIP view listing

* filter by acl

* fixes + WIP single group retrieval

* wip pivot

* more pivot query fixes

* tests fixed after pivot

* views list tests

* fixing test command

* business plan only checks

* more tests for coverage

* .dts import fix

* cli fix

* anutha one

* auth policy tests for business plan access

* WIP saved views panel base

* BE listing adjustments

* WIP group rendering

* group render done

* WIP post create cache updates

* listing fine?

* my vs theirs

* auto open

* minor fixes

* click load omg

* nicely loading views

* type fix

* less spammy loading

* another type fix:

* more lint fix

* test fix

* codecov disable

* moar coverage

* fix sidebar flashin

* more test coverage

* more test cvoverage

* minor adfjustments

* adj

* saved view wipe fixes

* CSR viewer

* more improvements

* extra feature flag checks

* lint fix

* feature flags fix

* more test fixes
2025-08-05 11:52:50 +03:00

93 lines
3.2 KiB
TypeScript

import { getBlobsFactory } from '@/modules/blobstorage/repositories'
import type { 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 {
getBranchesByIdsFactory,
getBranchLatestCommitsFactory,
getStreamBranchesByNameFactory
} from '@/modules/core/repositories/branches'
import {
getAllBranchCommitsFactory,
getSpecificBranchCommitsFactory
} from '@/modules/core/repositories/commits'
import { getStreamObjectsFactory } from '@/modules/core/repositories/objects'
import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector'
import {
getViewerResourceGroupsFactory,
getViewerResourceItemsUngroupedFactory
} from '@/modules/viewer/services/viewerResources'
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 }),
getBranchesByIds: getBranchesByIdsFactory({ 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
}
)
}