56 lines
1.5 KiB
TypeScript
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)
|
|
})
|
|
})
|