Files
speckle-server/packages/server/modules/gatekeeper/tests/unit/readOnly.spec.ts
T
Alessandro Magionami a363f0e81a feat(workspaces): expose graphql field readonly for workspace type (#3659)
* feat(workspaces): add readOnly field to workspace gql type

* feat(workspaces): add readOnly logic for workspace

* refactor(gatekeeper): use exhaustive switch pattern

* chore(billing): fix test

* feat(gatekeeper): fix tests

---------

Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
2024-12-18 13:47:27 +00:00

57 lines
2.5 KiB
TypeScript

import { GetWorkspacePlan } from '@/modules/gatekeeper/domain/billing'
import { isWorkspaceReadOnlyFactory } from '@/modules/gatekeeper/services/readOnly'
import { expect } from 'chai'
describe('@gatekeeper readOnly', () => {
describe('isWorkspaceReadOnlyFactory returns a function that', () => {
it('returns true if workspace plan status is expired', async () => {
const getWorkspacePlan: GetWorkspacePlan = () =>
({ status: 'expired' } as unknown as ReturnType<GetWorkspacePlan>)
const isWorkspaceReadOnly = isWorkspaceReadOnlyFactory({ getWorkspacePlan })
expect(await isWorkspaceReadOnly({ workspaceId: '' })).to.be.true
})
it('returns true if workspace plan status is paymentFailed', async () => {
const getWorkspacePlan: GetWorkspacePlan = () =>
({ status: 'paymentFailed' } as unknown as ReturnType<GetWorkspacePlan>)
const isWorkspaceReadOnly = isWorkspaceReadOnlyFactory({ getWorkspacePlan })
expect(await isWorkspaceReadOnly({ workspaceId: '' })).to.be.false
})
it('returns true if workspace plan status is canceled', async () => {
const getWorkspacePlan: GetWorkspacePlan = () =>
({ status: 'canceled' } as unknown as ReturnType<GetWorkspacePlan>)
const isWorkspaceReadOnly = isWorkspaceReadOnlyFactory({ getWorkspacePlan })
expect(await isWorkspaceReadOnly({ workspaceId: '' })).to.be.true
})
it('returns false if workspace plan status is trial', async () => {
const getWorkspacePlan: GetWorkspacePlan = () =>
({ status: 'trial' } as unknown as ReturnType<GetWorkspacePlan>)
const isWorkspaceReadOnly = isWorkspaceReadOnlyFactory({ getWorkspacePlan })
expect(await isWorkspaceReadOnly({ workspaceId: '' })).to.be.false
})
it('returns false if workspace plan status is valid', async () => {
const getWorkspacePlan: GetWorkspacePlan = () =>
({ status: 'valid' } as unknown as ReturnType<GetWorkspacePlan>)
const isWorkspaceReadOnly = isWorkspaceReadOnlyFactory({ getWorkspacePlan })
expect(await isWorkspaceReadOnly({ workspaceId: '' })).to.be.false
})
it('returns false if workspace plan status is cancelationScheduled', async () => {
const getWorkspacePlan: GetWorkspacePlan = () =>
({ status: 'cancelationScheduled' } as unknown as ReturnType<GetWorkspacePlan>)
const isWorkspaceReadOnly = isWorkspaceReadOnlyFactory({ getWorkspacePlan })
expect(await isWorkspaceReadOnly({ workspaceId: '' })).to.be.false
})
})
})