gergo/eventBus (#2498)

* feat(eventBus): WIP event bus typescript wizardy

* feat(eventBus): final eventbus setup with all the typescript foo

* fix(workspaces): fix workspace core imports

* test(workspaces): fix expected events name

* test(workspaces): fix tests
This commit is contained in:
Gergő Jedlicska
2024-07-12 15:35:40 +02:00
committed by GitHub
parent 4da196ec48
commit ee6e5e22b1
14 changed files with 355 additions and 32 deletions
@@ -10,7 +10,7 @@ import {
import db from '@/db/knex'
import cryptoRandomString from 'crypto-random-string'
import { expect } from 'chai'
import { Workspace, WorkspaceAcl } from '@/modules/workspaces/domain/types'
import { Workspace, WorkspaceAcl } from '@/modules/workspacesCore/domain/types'
import { expectToThrow } from '@/test/assertionHelper'
import { BasicTestUser, createTestUser } from '@/test/authHelper'
@@ -1,8 +1,9 @@
import { Workspace, WorkspaceAcl } from '@/modules/workspaces/domain/types'
import { Workspace, WorkspaceAcl } from '@/modules/workspacesCore/domain/types'
import { createWorkspaceFactory } from '@/modules/workspaces/services/workspaceCreation'
import { Roles } from '@speckle/shared'
import { expect } from 'chai'
import cryptoRandomString from 'crypto-random-string'
import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events'
describe('Workspace services', () => {
describe('createWorkspaceFactory creates a function, that', () => {
@@ -60,15 +61,15 @@ describe('Workspace services', () => {
it('emits a workspace created event', async () => {
const eventData = {
isCalled: false,
event: '',
eventName: '',
payload: {}
}
const createWorkspace = createWorkspaceFactory({
upsertWorkspace: async () => {},
upsertWorkspaceRole: async () => {},
emitWorkspaceEvent: async ({ event, payload }) => {
emitWorkspaceEvent: async ({ eventName, payload }) => {
eventData.isCalled = true
eventData.event = event
eventData.eventName = eventName
eventData.payload = payload
return []
},
@@ -88,8 +89,8 @@ describe('Workspace services', () => {
})
expect(eventData.isCalled).to.equal(true)
expect(eventData.event).to.equal('created')
expect(eventData.payload).to.deep.equal(workspace)
expect(eventData.eventName).to.equal(WorkspaceEvents.Created)
expect(eventData.payload).to.deep.equal({ ...workspace, createdByUserId: userId })
})
})
})
@@ -1,4 +1,4 @@
import { WorkspaceAcl } from '@/modules/workspaces/domain/types'
import { WorkspaceAcl } from '@/modules/workspacesCore/domain/types'
import {
deleteWorkspaceRoleFactory,
setWorkspaceRoleFactory
@@ -41,7 +41,7 @@ describe('Workspace role services', () => {
it('emits a role-deleted event', async () => {
const eventData = {
isCalled: false,
event: '',
eventName: '',
payload: {}
}
@@ -57,9 +57,9 @@ describe('Workspace role services', () => {
deleteWorkspaceRole: async () => {
return storedRoles[0]
},
emitWorkspaceEvent: async ({ event, payload }) => {
emitWorkspaceEvent: async ({ eventName, payload }) => {
eventData.isCalled = true
eventData.event = event
eventData.eventName = eventName
eventData.payload = payload
return []
@@ -69,7 +69,7 @@ describe('Workspace role services', () => {
await deleteWorkspaceRole({ userId, workspaceId })
expect(eventData.isCalled).to.be.true
expect(eventData.event).to.equal(WorkspaceEvents.RoleDeleted)
expect(eventData.eventName).to.equal(WorkspaceEvents.RoleDeleted)
expect(eventData.payload).to.deep.equal(role)
})
it('throws if attempting to delete the last admin from a workspace', async () => {
@@ -123,7 +123,7 @@ describe('Workspace role services', () => {
it('emits a role-updated event', async () => {
const eventData = {
isCalled: false,
event: '',
eventName: '',
payload: {}
}
@@ -135,9 +135,9 @@ describe('Workspace role services', () => {
const setWorkspaceRole = setWorkspaceRoleFactory({
getWorkspaceRoles: async () => [],
upsertWorkspaceRole: async () => {},
emitWorkspaceEvent: async ({ event, payload }) => {
emitWorkspaceEvent: async ({ eventName, payload }) => {
eventData.isCalled = true
eventData.event = event
eventData.eventName = eventName
eventData.payload = payload
return []
@@ -147,7 +147,7 @@ describe('Workspace role services', () => {
await setWorkspaceRole(role)
expect(eventData.isCalled).to.be.true
expect(eventData.event).to.equal(WorkspaceEvents.RoleUpdated)
expect(eventData.eventName).to.equal(WorkspaceEvents.RoleUpdated)
expect(eventData.payload).to.deep.equal(role)
})
it('throws if attempting to remove the last admin in a workspace', async () => {
@@ -1,5 +1,5 @@
import { isUserLastWorkspaceAdmin } from '@/modules/workspaces/utils/isUserLastWorkspaceAdmin'
import { WorkspaceAcl } from '@/modules/workspaces/domain/types'
import { WorkspaceAcl } from '@/modules/workspacesCore/domain/types'
import { expect } from 'chai'
import { Roles } from '@speckle/shared'