core-renderer-registry.spec.ts 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { describe, expect, it } from 'vitest';
  2. import {
  3. DEFAULT_RENDERER_DEFINITIONS,
  4. DEFAULT_SUPPORTED_EXTENSIONS,
  5. CORE_LITE_RENDERER_IDS,
  6. createFileViewerCoreRendererRegistry,
  7. createRendererRegistry,
  8. fileViewerCoreRendererRegistry,
  9. missingFileViewerCoreRendererHandlers,
  10. } from '../packages/core/src';
  11. describe('core renderer registry alignment', () => {
  12. it('uses the core format matrix as the extension source', () => {
  13. const supported = [...DEFAULT_SUPPORTED_EXTENSIONS];
  14. const registry = createRendererRegistry(DEFAULT_RENDERER_DEFINITIONS);
  15. expect(registry.listExtensions()).toEqual(supported);
  16. expect(registry.getByExtension('xlsx')?.id).toBe(registry.getByExtension('xls')?.id);
  17. expect(registry.getByExtension('dwg')?.id).toBe(registry.getByExtension('dwf')?.id);
  18. expect(registry.getByExtension('zip')?.id).toBe(registry.getByExtension('rar')?.id);
  19. });
  20. it('keeps key renderer definitions available through core', () => {
  21. const supported = [...DEFAULT_SUPPORTED_EXTENSIONS];
  22. const registry = createRendererRegistry(DEFAULT_RENDERER_DEFINITIONS);
  23. expect(registry.listExtensions()).toEqual(supported);
  24. expect(registry.getByExtension('docx')?.id).toBe('office-word-openxml');
  25. expect(registry.getByExtension('pdf')?.id).toBe('pdf');
  26. expect(registry.getByExtension('dwf')?.id).toBe('cad');
  27. });
  28. it('exposes migrated browser renderers through the core renderer registry', () => {
  29. expect(missingFileViewerCoreRendererHandlers).not.toContain('audio');
  30. expect(missingFileViewerCoreRendererHandlers).not.toContain('video');
  31. expect(missingFileViewerCoreRendererHandlers).not.toContain('code');
  32. expect(missingFileViewerCoreRendererHandlers).not.toContain('image');
  33. expect(missingFileViewerCoreRendererHandlers).not.toContain('umd');
  34. expect(missingFileViewerCoreRendererHandlers).not.toContain('geo');
  35. expect(missingFileViewerCoreRendererHandlers).not.toContain('open-document');
  36. expect(missingFileViewerCoreRendererHandlers).not.toContain('office-word-openxml');
  37. expect(missingFileViewerCoreRendererHandlers).not.toContain('office-word-binary');
  38. expect(missingFileViewerCoreRendererHandlers).not.toContain('spreadsheet-openxml');
  39. expect(missingFileViewerCoreRendererHandlers).not.toContain('email');
  40. expect(missingFileViewerCoreRendererHandlers).not.toContain('eda');
  41. expect(missingFileViewerCoreRendererHandlers).not.toContain('cad');
  42. expect(missingFileViewerCoreRendererHandlers).not.toContain('typst');
  43. expect(missingFileViewerCoreRendererHandlers).not.toContain('office-presentation');
  44. expect(missingFileViewerCoreRendererHandlers).not.toContain('epub');
  45. expect(missingFileViewerCoreRendererHandlers).not.toContain('model');
  46. expect(missingFileViewerCoreRendererHandlers).not.toContain('drawing');
  47. expect(missingFileViewerCoreRendererHandlers).not.toContain('data-asset');
  48. expect(missingFileViewerCoreRendererHandlers).not.toContain('archive');
  49. expect(fileViewerCoreRendererRegistry.getByExtension('mp3')?.load).toBeTypeOf('function');
  50. expect(fileViewerCoreRendererRegistry.getByExtension('mp4')?.load).toBeTypeOf('function');
  51. expect(fileViewerCoreRendererRegistry.getByExtension('ts')?.load).toBeTypeOf('function');
  52. expect(fileViewerCoreRendererRegistry.getByExtension('png')?.load).toBeTypeOf('function');
  53. expect(fileViewerCoreRendererRegistry.getByExtension('umd')?.load).toBeTypeOf('function');
  54. expect(fileViewerCoreRendererRegistry.getByExtension('geojson')?.load).toBeTypeOf('function');
  55. expect(fileViewerCoreRendererRegistry.getByExtension('odt')?.load).toBeTypeOf('function');
  56. expect(fileViewerCoreRendererRegistry.getByExtension('docx')?.load).toBeTypeOf('function');
  57. expect(fileViewerCoreRendererRegistry.getByExtension('doc')?.load).toBeTypeOf('function');
  58. expect(fileViewerCoreRendererRegistry.getByExtension('xlsx')?.load).toBeTypeOf('function');
  59. expect(fileViewerCoreRendererRegistry.getByExtension('eml')?.load).toBeTypeOf('function');
  60. expect(fileViewerCoreRendererRegistry.getByExtension('olb')?.load).toBeTypeOf('function');
  61. expect(fileViewerCoreRendererRegistry.getByExtension('dwg')?.load).toBeTypeOf('function');
  62. expect(fileViewerCoreRendererRegistry.getByExtension('typ')?.load).toBeTypeOf('function');
  63. expect(fileViewerCoreRendererRegistry.getByExtension('pptx')?.load).toBeTypeOf('function');
  64. expect(fileViewerCoreRendererRegistry.getByExtension('epub')?.load).toBeTypeOf('function');
  65. expect(fileViewerCoreRendererRegistry.getByExtension('glb')?.load).toBeTypeOf('function');
  66. expect(fileViewerCoreRendererRegistry.getByExtension('drawio')?.load).toBeTypeOf('function');
  67. expect(fileViewerCoreRendererRegistry.getByExtension('sqlite')?.load).toBeTypeOf('function');
  68. expect(fileViewerCoreRendererRegistry.getByExtension('zip')?.load).toBeTypeOf('function');
  69. });
  70. it('can build explicit lite and empty built-in renderer registries', () => {
  71. const lite = createFileViewerCoreRendererRegistry({ builtinRenderers: 'lite' });
  72. const none = createFileViewerCoreRendererRegistry({ builtinRenderers: 'none' });
  73. expect(lite.missingRendererIds).toEqual([]);
  74. expect(lite.registry.list().map(definition => definition.id).sort()).toEqual(
  75. [...CORE_LITE_RENDERER_IDS].sort()
  76. );
  77. expect(lite.registry.getByExtension('png')?.load).toBeTypeOf('function');
  78. expect(lite.registry.getByExtension('mp3')?.load).toBeTypeOf('function');
  79. expect(lite.registry.getByExtension('pdf')).toBeUndefined();
  80. expect(lite.registry.getByExtension('docx')).toBeUndefined();
  81. expect(none.registry.list()).toEqual([]);
  82. expect(none.registry.getByExtension('png')).toBeUndefined();
  83. expect(none.registry.getByExtension('pdf')).toBeUndefined();
  84. });
  85. });