test: add notification preferences tests
This commit is contained in:
@@ -28,3 +28,6 @@ VK_CLIENT_SECRET=
|
||||
# Yandex OAuth: redirect URI = SERVER_PUBLIC_URL + /api/auth/oauth/yandex/callback
|
||||
YANDEX_CLIENT_ID=
|
||||
YANDEX_CLIENT_SECRET=
|
||||
|
||||
# Telegram Bot (оповещения админа)
|
||||
TELEGRAM_BOT_TOKEN=
|
||||
|
||||
@@ -6,7 +6,9 @@ import {
|
||||
resolveAuthCodeTargets,
|
||||
ensureUserNotificationPreference,
|
||||
} from '../preferences.js'
|
||||
import { NOTIFICATION_EVENTS } from '../../../../shared/constants/notification-events.js'
|
||||
|
||||
const ORDER_CREATED = 'order:created'
|
||||
const AUTH_CODE_REQUESTED = 'auth:codeRequested'
|
||||
|
||||
describe('preferences', () => {
|
||||
beforeEach(async () => {
|
||||
@@ -23,7 +25,7 @@ describe('preferences', () => {
|
||||
|
||||
it('returns empty targets when user has no preferences', async () => {
|
||||
const user = await prisma.user.create({ data: { email: 'test@test.com' } })
|
||||
const targets = await resolveUserNotificationTargets(NOTIFICATION_EVENTS.ORDER_CREATED, { userId: user.id })
|
||||
const targets = await resolveUserNotificationTargets(ORDER_CREATED, { userId: user.id })
|
||||
expect(targets).toEqual([])
|
||||
})
|
||||
|
||||
@@ -32,7 +34,7 @@ describe('preferences', () => {
|
||||
await prisma.notificationPreference.create({
|
||||
data: { userId: user.id, globalEnabled: true, orderCreated: true },
|
||||
})
|
||||
const targets = await resolveUserNotificationTargets(NOTIFICATION_EVENTS.ORDER_CREATED, { userId: user.id })
|
||||
const targets = await resolveUserNotificationTargets(ORDER_CREATED, { userId: user.id })
|
||||
expect(targets).toHaveLength(1)
|
||||
expect(targets[0]).toEqual({ channel: 'email', recipient: 'test@test.com' })
|
||||
})
|
||||
@@ -42,7 +44,7 @@ describe('preferences', () => {
|
||||
await prisma.notificationPreference.create({
|
||||
data: { userId: user.id, globalEnabled: false, orderCreated: true },
|
||||
})
|
||||
const targets = await resolveUserNotificationTargets(NOTIFICATION_EVENTS.ORDER_CREATED, { userId: user.id })
|
||||
const targets = await resolveUserNotificationTargets(ORDER_CREATED, { userId: user.id })
|
||||
expect(targets).toEqual([])
|
||||
})
|
||||
|
||||
@@ -51,7 +53,7 @@ describe('preferences', () => {
|
||||
await prisma.notificationPreference.create({
|
||||
data: { userId: user.id, globalEnabled: true, orderCreated: false },
|
||||
})
|
||||
const targets = await resolveUserNotificationTargets(NOTIFICATION_EVENTS.ORDER_CREATED, { userId: user.id })
|
||||
const targets = await resolveUserNotificationTargets(ORDER_CREATED, { userId: user.id })
|
||||
expect(targets).toEqual([])
|
||||
})
|
||||
|
||||
@@ -71,7 +73,7 @@ describe('preferences', () => {
|
||||
data: { emailEnabled: true, newOrder: true },
|
||||
})
|
||||
|
||||
const targets = await resolveAdminNotificationTargets(NOTIFICATION_EVENTS.ORDER_CREATED, {})
|
||||
const targets = await resolveAdminNotificationTargets(ORDER_CREATED, {})
|
||||
expect(targets.some((t) => t.channel === 'email' && t.recipient === 'admin@test.com')).toBe(true)
|
||||
|
||||
process.env.ADMIN_EMAIL = origAdminEmail
|
||||
@@ -82,7 +84,7 @@ describe('preferences', () => {
|
||||
data: { telegramEnabled: true, telegramChatId: '12345', authCodeDuplicate: true },
|
||||
})
|
||||
|
||||
const targets = await resolveAuthCodeTargets(NOTIFICATION_EVENTS.AUTH_CODE_REQUESTED, {
|
||||
const targets = await resolveAuthCodeTargets(AUTH_CODE_REQUESTED, {
|
||||
email: 'user@test.com',
|
||||
code: '123456',
|
||||
isAdmin: true,
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
import path from 'node:path'
|
||||
import { defineConfig } from 'vitest/config'
|
||||
|
||||
const projectRoot = path.resolve(__dirname, '..')
|
||||
|
||||
export default defineConfig({
|
||||
resolve: {
|
||||
alias: {
|
||||
'@shared': path.resolve(projectRoot, 'shared'),
|
||||
},
|
||||
},
|
||||
server: {
|
||||
fs: {
|
||||
allow: [projectRoot],
|
||||
},
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user