Files
old.cms.fellies.org/packages/content/src/media.test.ts

56 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest"
import {
attachArtworkRenditionInputSchema,
createGroupingInputSchema,
createMediaAssetInputSchema,
linkArtworkGroupingInputSchema,
} from "./media"
describe("media schemas", () => {
it("accepts supported media asset type payload", () => {
const parsed = createMediaAssetInputSchema.parse({
type: "artwork",
title: "Artwork",
licenseType: "CC BY",
usageContext: "homepage hero",
capturedAt: new Date("2026-01-02T10:30:00.000Z"),
tags: ["tag-a"],
})
expect(parsed.type).toBe("artwork")
expect(parsed.licenseType).toBe("CC BY")
expect(parsed.tags).toEqual(["tag-a"])
})
it("validates grouping link payload", () => {
const parsed = linkArtworkGroupingInputSchema.parse({
artworkId: "f40f4bcc-7148-45d7-a19d-856f7146a47e",
groupType: "gallery",
groupId: "f4e094df-0edf-4d5a-8b7b-c51f09cae95e",
})
expect(parsed.groupType).toBe("gallery")
})
it("enforces rendition slot enum", () => {
const parsed = attachArtworkRenditionInputSchema.parse({
artworkId: "f40f4bcc-7148-45d7-a19d-856f7146a47e",
mediaAssetId: "f4e094df-0edf-4d5a-8b7b-c51f09cae95e",
slot: "thumbnail",
})
expect(parsed.slot).toBe("thumbnail")
})
it("supports grouping defaults", () => {
const parsed = createGroupingInputSchema.parse({
name: "Featured",
slug: "featured",
})
expect(parsed.sortOrder).toBe(0)
expect(parsed.isVisible).toBe(true)
})
})