You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
1.4 KiB
TypeScript
25 lines
1.4 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { openDb } from '../src/db'
|
|
import { createClient } from '../src/repos-clients'
|
|
import { createModule, assignModule, updateClientModule } from '../src/repos-modules'
|
|
|
|
describe('client modules', () => {
|
|
it('enforces allowed kinds and single-subscription', () => {
|
|
const db = openDb(':memory:')
|
|
const c = createClient(db, 'u1', { name: 'Acme', stateCode: '32' })
|
|
const m = createModule(db, 'u1', { code: 'POS', name: 'POS', allowedKinds: ['one_time','yearly'] })
|
|
expect(() => assignModule(db, 'u1', { clientId: c.id, moduleId: m.id, kind: 'monthly' })).toThrow(/allow/)
|
|
const cm = assignModule(db, 'u1', { clientId: c.id, moduleId: m.id, kind: 'yearly' })
|
|
expect(() => assignModule(db, 'u1', { clientId: c.id, moduleId: m.id, kind: 'yearly' })).toThrow(/already/)
|
|
const up = updateClientModule(db, 'u1', cm.id, { status: 'installed', installedOn: '2026-07-01' })
|
|
expect(up.status).toBe('installed')
|
|
})
|
|
it('allows concurrent rows when multi_subscription = 1', () => {
|
|
const db = openDb(':memory:')
|
|
const c = createClient(db, 'u1', { name: 'Acme', stateCode: '32' })
|
|
const m = createModule(db, 'u1', { code: 'CLOUD', name: 'Cloud', multiSubscription: true })
|
|
assignModule(db, 'u1', { clientId: c.id, moduleId: m.id, kind: 'usage' })
|
|
expect(() => assignModule(db, 'u1', { clientId: c.id, moduleId: m.id, kind: 'usage' })).not.toThrow()
|
|
})
|
|
})
|