- Add Superforms + Zod 4 for all admin form validation - Replace address isDefault with three separate boolean defaults (Mailing, Billing, Shipping) - Update profiles page with three-checkbox address form and toast improvements - Convert all admin page server actions to pass request directly to crud - Export superFormErrorsToFieldErrors helper for profiles server actions - Regenerate Prisma client for new schema fields
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
import { isHttpError } from '@sveltejs/kit';
|
|
import { mockProclamation } from '$lib/test-utils';
|
|
|
|
vi.mock('$lib/db', () => ({
|
|
prisma: {
|
|
proclamation: { findUnique: vi.fn() }
|
|
}
|
|
}));
|
|
|
|
import { prisma } from '$lib/db';
|
|
import { load } from './+page.server';
|
|
|
|
const findUnique = prisma.proclamation.findUnique as ReturnType<typeof vi.fn>;
|
|
|
|
describe('(protected)/admin/proclamations/[id] page server load', () => {
|
|
beforeEach(() => {
|
|
findUnique.mockReset();
|
|
});
|
|
|
|
it('throws 404 when proclamation is not found', async () => {
|
|
findUnique.mockResolvedValue(null);
|
|
|
|
const err = await Promise.resolve(load({ params: { id: 'nonexistent' } } as any)).catch(
|
|
(e: unknown) => e
|
|
);
|
|
expect(isHttpError(err, 404)).toBe(true);
|
|
});
|
|
|
|
it('returns proclamation when found', async () => {
|
|
const proclamation = mockProclamation();
|
|
findUnique.mockResolvedValue(proclamation);
|
|
|
|
const result = (await load({ params: { id: 'proc-1' } } as any)) as any;
|
|
expect(result.proclamation).toEqual(proclamation);
|
|
});
|
|
|
|
it('queries by params.id with frequency and category (including parent)', async () => {
|
|
findUnique.mockResolvedValue(mockProclamation());
|
|
|
|
await load({ params: { id: 'proc-1' } } as any);
|
|
|
|
expect(findUnique).toHaveBeenCalledWith({
|
|
where: { id: 'proc-1' },
|
|
include: {
|
|
solfeggioFrequency: true,
|
|
category: { include: { parent: true } },
|
|
subscriptionLevel: true
|
|
}
|
|
});
|
|
});
|
|
|
|
it('returns proclamation with parent category when present', async () => {
|
|
const proclamation = mockProclamation({
|
|
category: {
|
|
id: 2,
|
|
name: 'Inner Healing',
|
|
parentId: 1,
|
|
parent: { id: 1, name: 'Healing', parentId: null }
|
|
}
|
|
});
|
|
findUnique.mockResolvedValue(proclamation);
|
|
|
|
const result = (await load({ params: { id: 'proc-1' } } as any)) as any;
|
|
expect(result.proclamation.category.parent.name).toBe('Healing');
|
|
});
|
|
});
|