37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from 'vitest'
|
|
import { promises as fs } from 'fs'
|
|
import os from 'os'
|
|
import path from 'path'
|
|
|
|
const originalAppRoot = process.env.APP_ROOT
|
|
const createdRoots = []
|
|
|
|
afterEach(async () => {
|
|
vi.resetModules()
|
|
if (originalAppRoot === undefined) delete process.env.APP_ROOT
|
|
else process.env.APP_ROOT = originalAppRoot
|
|
await Promise.all(createdRoots.splice(0).map(root => fs.rm(root, { recursive: true, force: true })))
|
|
})
|
|
|
|
describe('membership applications', () => {
|
|
it('rejects a second pending application with the same name and birth date', async () => {
|
|
const root = await fs.mkdtemp(path.join(os.tmpdir(), 'harheimertc-membership-'))
|
|
createdRoots.push(root)
|
|
await fs.mkdir(path.join(root, 'server', 'data'), { recursive: true })
|
|
process.env.APP_ROOT = root
|
|
|
|
const { createMembershipApplication } = await import('../server/utils/membership-applications.js')
|
|
const data = {
|
|
vorname: 'Jörg',
|
|
nachname: 'Beispiel',
|
|
geburtsdatum: '1990-02-03',
|
|
mitgliedschaftsart: 'aktiv'
|
|
}
|
|
|
|
const application = await createMembershipApplication(data)
|
|
expect(application.status).toBe('pending')
|
|
await expect(createMembershipApplication({ ...data, vorname: ' JÖRG ' }))
|
|
.rejects.toMatchObject({ statusCode: 409 })
|
|
})
|
|
})
|