UNPKG

cozy-iiif

Version:

A developer-friendly collection of abstractions and utilities built on top of @iiif/presentation-3 and @iiif/parser

92 lines (70 loc) 3.35 kB
import { describe, it, expect } from 'vitest'; import { Cozy, CozyCollection, CozyManifest, DynamicImageServiceResource } from '../src'; import { COLLECTION, NESTED_COLLECTION, INFO_JSON_V3, WITH_MULTI_IMAGE, WITH_STRUCTURES, SHARED_CANVAS, } from './fixtures'; describe('Cozy', () => { it('should parse collection manifests correctly', async () => { const result = await Cozy.parseURL(COLLECTION); expect(result.type).toBe('collection'); const collection = (result as any).resource as CozyCollection; expect(collection.items.length).toBe(16); }); it('should parse nested collection manifests correctly', async () => { const result = await Cozy.parseURL(NESTED_COLLECTION); expect(result.type).toBe('collection'); const collection = (result as any).resource as CozyCollection; expect(collection.items.length).toBe(7); expect(collection.items.every(item => item.type === 'Collection')) }); it('should parse structures in presentation manifests', async () => { const result = await Cozy.parseURL(WITH_STRUCTURES); expect(result.type).toBe('manifest'); expect('resource' in result).toBeTruthy(); // const manifest = (result as any).resource as CozyManifest; // expect(manifest.structure.length > 0).toBeTruthy(); // // const tableOfContents = manifest.getTableOfContents(); // expect(tableOfContents.root.length).toBe(1); // expect(tableOfContents.root[0].children.length).toBe(14); }); it('should allow (deprecated) shared-canvas manifests', async () => { const result = await Cozy.parseURL(SHARED_CANVAS); expect(result.type).toBe('manifest'); }), it('should parse the v3 info.json correctly', async () => { const result = await Cozy.parseURL(INFO_JSON_V3); expect(result.type).toBe('iiif-image'); const resource = (result as any).resource as DynamicImageServiceResource; expect(resource.width).toBe(4032); expect(resource.height).toBe(3024); expect(resource.type).toBe('dynamic'); expect(resource.serviceUrl).toBe('https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/info.json') const regionURL = resource.getRegionURL({ x: 10, y: 10, w: 100, h: 100 }); expect(regionURL).toBe( 'https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/10,10,100,100/!400,400/0/default.jpg') const imageURL = resource.getImageURL(800); expect(imageURL).toBe( 'https://iiif.io/api/image/3.0/example/reference/918ecd18c2592080851777620de9bcb5-gottingen/full/!600,800/0/default.jpg') }); it('should parse a multi-image canvas correctly', () => { const result = Cozy.parse(WITH_MULTI_IMAGE); expect(result.type).toBe('manifest'); const manifest = (result as any).resource as CozyManifest; expect(manifest.canvases.length).toBe(1); const canvas = manifest.canvases[0]; expect (canvas.images.length).toBe(2); const [fullSizeImage, positionedImage] = canvas.images; expect(fullSizeImage.target).toBeUndefined(); expect(positionedImage.target).toBeDefined(); expect(positionedImage.target?.x).toBe(1307); expect(positionedImage.target?.y).toBe(2609); expect(positionedImage.target?.w).toBe(1967); expect(positionedImage.target?.h).toBe(2929); }); });