Scaffold webu na Payload CMS 3 + Next.js nad SQLite
Kostra prezentace s vlastní administrací pro Martina Reinera. Obsah: - kolekce Products (obrázky, volné parametry, cena, dostupnost, skrytí), Media se zmenšeninami, Pages, Users bez veřejné registrace - veřejná část: výpis nabídky, detail položky, statické stránky - /api/health pro Docker HEALTHCHECK Provoz: - Dockerfile, docker-compose.yml (vývoj) a docker-compose.prod.yml (nasazení z Gitea registry) - CI v Gitea Actions: lint -> testy -> build -> push image - úvodní migrace databáze Stránky jsou force-dynamic, aby se úprava položky projevila hned; schéma se za běhu nedomýšlí (push: false), migrace se commitují. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import { getPayload, Payload } from 'payload'
|
||||
import config from '@/payload.config'
|
||||
|
||||
import { describe, it, beforeAll, expect } from 'vitest'
|
||||
|
||||
let payload: Payload
|
||||
|
||||
describe('Payload API', () => {
|
||||
beforeAll(async () => {
|
||||
// Schéma vznikne z konfigurace (`push` je zapnuté jen v testech).
|
||||
payload = await getPayload({ config: await config })
|
||||
})
|
||||
|
||||
it('má nadefinované všechny kolekce', () => {
|
||||
const slugy = Object.keys(payload.collections)
|
||||
expect(slugy).toEqual(expect.arrayContaining(['products', 'media', 'pages', 'users']))
|
||||
})
|
||||
|
||||
it('umí založit a najít položku nabídky', async () => {
|
||||
const vytvorena = await payload.create({
|
||||
collection: 'products',
|
||||
data: {
|
||||
nazev: 'CZ 75 SP-01 Shadow',
|
||||
kategorie: 'zbrane',
|
||||
cena: 28900,
|
||||
stav: 'skladem',
|
||||
},
|
||||
})
|
||||
|
||||
expect(vytvorena.id).toBeDefined()
|
||||
// slug se doplňuje hookem z názvu
|
||||
expect(vytvorena.slug).toBe('cz-75-sp-01-shadow')
|
||||
|
||||
const nalezene = await payload.find({
|
||||
collection: 'products',
|
||||
where: { slug: { equals: 'cz-75-sp-01-shadow' } },
|
||||
})
|
||||
|
||||
expect(nalezene.docs).toHaveLength(1)
|
||||
expect(nalezene.docs[0]?.cena).toBe(28900)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user