import { getDocumentIconType, getSourceType } from './mimeType' describe('getSourceType', () => { it('returns video for video/* types', () => { expect(getSourceType('video/mp4')).toBe('video') expect(getSourceType('video/webm')).toBe('video') expect(getSourceType('video/quicktime')).toBe('video') }) it('returns audio for audio/* types', () => { expect(getSourceType('audio/mpeg')).toBe('audio') expect(getSourceType('audio/mp4')).toBe('audio') expect(getSourceType('audio/ogg')).toBe('audio') }) it('returns image for image/* types', () => { expect(getSourceType('image/jpeg')).toBe('image') expect(getSourceType('image/png')).toBe('image') expect(getSourceType('image/webp')).toBe('image') }) it('returns document for application/* types', () => { expect(getSourceType('application/pdf')).toBe('document') expect(getSourceType('application/msword')).toBe('document') expect(getSourceType('application/zip')).toBe('document') }) it('returns document for text/* types', () => { expect(getSourceType('text/plain')).toBe('document') expect(getSourceType('text/csv')).toBe('document') expect(getSourceType('text/markdown')).toBe('document') }) }) describe('getDocumentIconType', () => { it('returns pdf for application/pdf', () => { expect(getDocumentIconType('application/pdf')).toBe('pdf') }) it('returns doc for Word types', () => { expect(getDocumentIconType('application/msword')).toBe('doc') expect( getDocumentIconType( 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ) ).toBe('doc') }) it('returns xls for Excel types', () => { expect(getDocumentIconType('application/vnd.ms-excel')).toBe('xls') expect( getDocumentIconType( 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ) ).toBe('xls') }) it('returns csv for text/csv', () => { expect(getDocumentIconType('text/csv')).toBe('csv') }) it('returns ppt for PowerPoint types', () => { expect(getDocumentIconType('application/vnd.ms-powerpoint')).toBe('ppt') expect( getDocumentIconType( 'application/vnd.openxmlformats-officedocument.presentationml.presentation' ) ).toBe('ppt') }) it('returns zip for archive types', () => { expect(getDocumentIconType('application/zip')).toBe('zip') expect(getDocumentIconType('application/x-zip-compressed')).toBe('zip') expect(getDocumentIconType('application/gzip')).toBe('zip') expect(getDocumentIconType('application/x-gzip')).toBe('zip') expect(getDocumentIconType('application/x-rar-compressed')).toBe('zip') expect(getDocumentIconType('application/x-7z-compressed')).toBe('zip') expect(getDocumentIconType('application/x-tar')).toBe('zip') }) it('returns text for plain text and rtf', () => { expect(getDocumentIconType('text/plain')).toBe('text') expect(getDocumentIconType('text/rtf')).toBe('text') expect(getDocumentIconType('application/rtf')).toBe('text') expect(getDocumentIconType('application/x-rtf')).toBe('text') }) it('returns markdown for markdown types', () => { expect(getDocumentIconType('text/markdown')).toBe('markdown') expect(getDocumentIconType('text/x-markdown')).toBe('markdown') }) it('returns xls for macro-enabled Excel', () => { expect( getDocumentIconType('application/vnd.ms-excel.sheet.macroEnabled.12') ).toBe('xls') }) it('returns ppt for macro-enabled PowerPoint', () => { expect( getDocumentIconType( 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' ) ).toBe('ppt') }) it('returns generic for unknown types', () => { expect(getDocumentIconType('application/octet-stream')).toBe('generic') expect(getDocumentIconType('application/json')).toBe('generic') expect(getDocumentIconType('text/html')).toBe('generic') expect(getDocumentIconType('application/vnd.rar')).toBe('generic') expect(getDocumentIconType('application/vnd.oasis.opendocument.text')).toBe( 'generic' ) expect( getDocumentIconType('application/vnd.oasis.opendocument.spreadsheet') ).toBe('generic') }) })