feat(workspaces): added GQL fitlering capabilities to activeUser workspaces
* added filtering mechanism for getWorkspaces completed or not completed workspaces * added filtering mechanism to filter workspaces of active user by string hitting on slug or name
This commit is contained in:
committed by
GitHub
parent
3d4c4395f4
commit
fa5f2eb1f5
@@ -7,6 +7,7 @@ import {
|
||||
} from '@/test/graphqlHelper'
|
||||
import {
|
||||
BasicTestUser,
|
||||
buildBasicTestUser,
|
||||
createAuthTokenForUser,
|
||||
createTestUser,
|
||||
createTestUsers,
|
||||
@@ -35,11 +36,12 @@ import {
|
||||
WorkspaceEmbedOptionsDocument,
|
||||
ProjectEmbedOptionsDocument
|
||||
} from '@/test/graphql/generated/graphql'
|
||||
import { beforeEachContext } from '@/test/hooks'
|
||||
import { beforeEachContext, truncateTables } from '@/test/hooks'
|
||||
import { AllScopes } from '@/modules/core/helpers/mainConstants'
|
||||
import {
|
||||
assignToWorkspace,
|
||||
BasicTestWorkspace,
|
||||
buildBasicTestWorkspace,
|
||||
createTestWorkspace,
|
||||
createWorkspaceInviteDirectly
|
||||
} from '@/modules/workspaces/tests/helpers/creation'
|
||||
@@ -76,6 +78,7 @@ import { itEach } from '@/test/assertionHelper'
|
||||
import { assignWorkspaceSeatFactory } from '@/modules/workspaces/services/workspaceSeat'
|
||||
import { createWorkspaceSeatFactory } from '@/modules/gatekeeper/repositories/workspaceSeat'
|
||||
import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing'
|
||||
import { Workspaces } from '@/modules/workspaces/helpers/db'
|
||||
|
||||
const grantStreamPermissions = grantStreamPermissionsFactory({ db })
|
||||
const validateAndCreateUserEmail = validateAndCreateUserEmailFactory({
|
||||
@@ -700,16 +703,26 @@ describe('Workspaces GQL CRUD', () => {
|
||||
})
|
||||
|
||||
describe('query activeUser.workspaces', () => {
|
||||
it('should return all workspaces for a user', async () => {
|
||||
const testUser: BasicTestUser = {
|
||||
id: '',
|
||||
name: 'John Speckle',
|
||||
email: 'foobar@example.org',
|
||||
role: Roles.Server.Admin,
|
||||
verified: true
|
||||
}
|
||||
const testUser = buildBasicTestUser({ role: Roles.Server.Admin })
|
||||
|
||||
before(async () => {
|
||||
await truncateTables([Workspaces.name])
|
||||
|
||||
await createTestUser(testUser)
|
||||
|
||||
await createTestWorkspace(buildBasicTestWorkspace(), testUser)
|
||||
await createTestWorkspace(
|
||||
buildBasicTestWorkspace({
|
||||
name: 'A loooooooooong name'
|
||||
}),
|
||||
testUser
|
||||
)
|
||||
await createTestWorkspace(buildBasicTestWorkspace(), testUser, {
|
||||
addCreationState: { completed: false, state: {} }
|
||||
})
|
||||
})
|
||||
|
||||
it('should return all workspaces for a user', async () => {
|
||||
const testApollo: TestApolloServer = await testApolloServer({
|
||||
context: await createTestContext({
|
||||
auth: true,
|
||||
@@ -720,36 +733,53 @@ describe('Workspaces GQL CRUD', () => {
|
||||
})
|
||||
})
|
||||
|
||||
const workspace1: BasicTestWorkspace = {
|
||||
id: '',
|
||||
ownerId: '',
|
||||
name: 'Workspace A',
|
||||
slug: cryptoRandomString({ length: 10 })
|
||||
}
|
||||
|
||||
const workspace2: BasicTestWorkspace = {
|
||||
id: '',
|
||||
ownerId: '',
|
||||
name: 'Workspace A',
|
||||
slug: cryptoRandomString({ length: 10 })
|
||||
}
|
||||
|
||||
const workspace3: BasicTestWorkspace = {
|
||||
id: '',
|
||||
ownerId: '',
|
||||
name: 'Workspace A',
|
||||
slug: cryptoRandomString({ length: 10 })
|
||||
}
|
||||
|
||||
await createTestWorkspace(workspace1, testUser)
|
||||
await createTestWorkspace(workspace2, testUser)
|
||||
await createTestWorkspace(workspace3, testUser)
|
||||
|
||||
const res = await testApollo.execute(GetActiveUserWorkspacesDocument, {})
|
||||
expect(res).to.not.haveGraphQLErrors()
|
||||
// TODO: this test depends on the previous tests
|
||||
|
||||
expect(res.data?.activeUser?.workspaces?.items?.length).to.equal(3)
|
||||
})
|
||||
|
||||
it('omits non complete workspaces on request', async () => {
|
||||
const testApollo: TestApolloServer = await testApolloServer({
|
||||
context: await createTestContext({
|
||||
auth: true,
|
||||
userId: testUser.id,
|
||||
token: '',
|
||||
role: testUser.role,
|
||||
scopes: AllScopes
|
||||
})
|
||||
})
|
||||
|
||||
const res = await testApollo.execute(GetActiveUserWorkspacesDocument, {
|
||||
filter: {
|
||||
completed: true
|
||||
}
|
||||
})
|
||||
|
||||
expect(res).to.not.haveGraphQLErrors()
|
||||
expect(res.data?.activeUser?.workspaces?.items?.length).to.equal(2)
|
||||
})
|
||||
|
||||
it('filters by name workspaces on request', async () => {
|
||||
const testApollo: TestApolloServer = await testApolloServer({
|
||||
context: await createTestContext({
|
||||
auth: true,
|
||||
userId: testUser.id,
|
||||
token: '',
|
||||
role: testUser.role,
|
||||
scopes: AllScopes
|
||||
})
|
||||
})
|
||||
|
||||
const res = await testApollo.execute(GetActiveUserWorkspacesDocument, {
|
||||
filter: {
|
||||
search: 'loooooooooong'
|
||||
}
|
||||
})
|
||||
|
||||
expect(res).to.not.haveGraphQLErrors()
|
||||
expect(res.data?.activeUser?.workspaces?.items?.length).to.equal(1)
|
||||
})
|
||||
})
|
||||
|
||||
describe('query workspace.projects', () => {
|
||||
|
||||
Reference in New Issue
Block a user