core-document-providers.spec.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { describe, expect, it } from 'vitest';
  2. import { parseHTML } from 'linkedom';
  3. import {
  4. createEmptyFileViewerSearchState,
  5. createFileViewerZoomState,
  6. findFileViewerSearchProvider,
  7. findFileViewerZoomProvider,
  8. registerFileViewerSearchProvider,
  9. registerFileViewerZoomProvider,
  10. unregisterFileViewerSearchProvider,
  11. unregisterFileViewerZoomProvider,
  12. type FileViewerSearchProvider,
  13. type FileViewerZoomProvider,
  14. } from '../packages/core/src';
  15. describe('core document providers', () => {
  16. it('registers providers in the core browser layer', async () => {
  17. const { document } = parseHTML(`
  18. <main id="root">
  19. <section id="search" data-viewer-search-provider="pdf"></section>
  20. <section id="zoom"></section>
  21. </main>
  22. `);
  23. const root = document.getElementById('root') as HTMLElement;
  24. const searchHost = document.getElementById('search') as HTMLElement;
  25. const zoomHost = document.getElementById('zoom') as HTMLElement;
  26. const searchProvider: FileViewerSearchProvider = {
  27. search: query => createEmptyFileViewerSearchState(query),
  28. };
  29. const zoomProvider: FileViewerZoomProvider = {
  30. zoomIn: () => createFileViewerZoomState({ scale: 1.25 }),
  31. zoomOut: () => createFileViewerZoomState({ scale: 0.75 }),
  32. resetZoom: () => createFileViewerZoomState(),
  33. getState: () => createFileViewerZoomState({ scale: 1 }),
  34. };
  35. registerFileViewerSearchProvider(searchHost, searchProvider);
  36. registerFileViewerZoomProvider(zoomHost, zoomProvider);
  37. expect(findFileViewerSearchProvider(root)).toBe(searchProvider);
  38. expect(findFileViewerZoomProvider(zoomHost)).toBe(zoomProvider);
  39. await expect(Promise.resolve(findFileViewerSearchProvider(root)?.search('pdf'))).resolves.toMatchObject({ query: 'pdf' });
  40. unregisterFileViewerSearchProvider(searchHost);
  41. unregisterFileViewerZoomProvider(zoomHost);
  42. expect(findFileViewerSearchProvider(root)).toBeNull();
  43. expect(findFileViewerZoomProvider(zoomHost)).toBeNull();
  44. });
  45. });