fixture-manifest.spec.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { describe, expect, it } from 'vitest'
  2. import {
  3. parsePreviewFixtureManifest, PREVIEW_FIXTURE_MANIFEST_VERSION,
  4. } from '../src/fixture-manifest.ts'
  5. describe('Preview fixture manifest', () => {
  6. it('accepts a unique named fixture with ordered overlays', () => {
  7. expect(parsePreviewFixtureManifest({
  8. version: PREVIEW_FIXTURE_MANIFEST_VERSION,
  9. defaultFixture: 'example',
  10. fixtures: [{
  11. id: 'example',
  12. label: 'Example',
  13. description: 'A deterministic example.',
  14. overlays: ['fixtures/base.tar.gz', 'fixtures/tail.tar.gz'],
  15. }],
  16. })).toEqual({
  17. version: PREVIEW_FIXTURE_MANIFEST_VERSION,
  18. defaultFixture: 'example',
  19. fixtures: [{
  20. id: 'example',
  21. label: 'Example',
  22. description: 'A deterministic example.',
  23. overlays: ['fixtures/base.tar.gz', 'fixtures/tail.tar.gz'],
  24. }],
  25. })
  26. })
  27. it.each([
  28. [{ version: 2, defaultFixture: null, fixtures: [] }, /must use version/],
  29. [{ version: 1, defaultFixture: 'missing', fixtures: [] }, /defaultFixture/],
  30. [{
  31. version: 1,
  32. defaultFixture: 'duplicate',
  33. fixtures: [
  34. { id: 'duplicate', label: 'One', description: 'First.', overlays: ['one.tar.gz'] },
  35. { id: 'duplicate', label: 'Two', description: 'Second.', overlays: ['two.tar.gz'] },
  36. ],
  37. }, /repeats id/],
  38. [{
  39. version: 1,
  40. defaultFixture: 'none',
  41. fixtures: [{ id: 'none', label: 'None', description: 'Reserved.', overlays: ['none.tar.gz'] }],
  42. }, /invalid fixture entry/],
  43. ])('rejects malformed catalogs', (value, error) => {
  44. expect(() => parsePreviewFixtureManifest(value)).toThrow(error)
  45. })
  46. })