@@ -2,11 +2,71 @@ import {
22 getDownscaleSize ,
33 getFileExtension ,
44 getFileExtensionFromMime ,
5+ getFileExtensionFromUri ,
6+ getFileType ,
57 getMimeFromFileExtension ,
68 normalizeFileName ,
79 parseMimeType ,
810} from '../../shared/file' ;
911
12+ describe ( 'getFileType' , function ( ) {
13+ it ( 'should return the proper file type with mime-type' , ( ) => {
14+ expect ( getFileType ( 'image/jpeg' ) ) . toBe ( 'image' ) ;
15+ expect ( getFileType ( 'image/png' ) ) . toBe ( 'image' ) ;
16+ expect ( getFileType ( 'image/gif' ) ) . toBe ( 'image' ) ;
17+ expect ( getFileType ( 'video/mp4' ) ) . toBe ( 'video' ) ;
18+ expect ( getFileType ( 'video/quicktime' ) ) . toBe ( 'video' ) ;
19+ expect ( getFileType ( 'audio/mpeg' ) ) . toBe ( 'audio' ) ;
20+ expect ( getFileType ( 'audio/mp3' ) ) . toBe ( 'audio' ) ;
21+ expect ( getFileType ( 'audio/ogg' ) ) . toBe ( 'audio' ) ;
22+ expect ( getFileType ( 'application/pdf' ) ) . toBe ( 'file' ) ;
23+ expect ( getFileType ( 'application/json' ) ) . toBe ( 'file' ) ;
24+ expect ( getFileType ( 'application/zip' ) ) . toBe ( 'file' ) ;
25+ expect ( getFileType ( 'application/x-gzip' ) ) . toBe ( 'file' ) ;
26+ expect ( getFileType ( 'text/plain' ) ) . toBe ( 'file' ) ;
27+ } ) ;
28+
29+ it ( 'should return the proper file type with file extension' , ( ) => {
30+ expect ( getFileType ( '.jpeg' ) ) . toBe ( 'image' ) ;
31+ expect ( getFileType ( 'jpeg' ) ) . toBe ( 'image' ) ;
32+ expect ( getFileType ( '.jpg' ) ) . toBe ( 'image' ) ;
33+ expect ( getFileType ( 'jpg' ) ) . toBe ( 'image' ) ;
34+ expect ( getFileType ( '.png' ) ) . toBe ( 'image' ) ;
35+ expect ( getFileType ( 'png' ) ) . toBe ( 'image' ) ;
36+ expect ( getFileType ( '.gif' ) ) . toBe ( 'image' ) ;
37+ expect ( getFileType ( 'gif' ) ) . toBe ( 'image' ) ;
38+ expect ( getFileType ( '.mp4' ) ) . toBe ( 'video' ) ;
39+ expect ( getFileType ( 'mp4' ) ) . toBe ( 'video' ) ;
40+ expect ( getFileType ( '.mov' ) ) . toBe ( 'video' ) ;
41+ expect ( getFileType ( 'mov' ) ) . toBe ( 'video' ) ;
42+ expect ( getFileType ( '.mpeg' ) ) . toBe ( 'video' ) ;
43+ expect ( getFileType ( 'mpeg' ) ) . toBe ( 'video' ) ;
44+ expect ( getFileType ( '.mp3' ) ) . toBe ( 'audio' ) ;
45+ expect ( getFileType ( 'mp3' ) ) . toBe ( 'audio' ) ;
46+ expect ( getFileType ( '.ogg' ) ) . toBe ( 'audio' ) ;
47+ expect ( getFileType ( 'ogg' ) ) . toBe ( 'audio' ) ;
48+ expect ( getFileType ( '.wav' ) ) . toBe ( 'audio' ) ;
49+ expect ( getFileType ( 'wav' ) ) . toBe ( 'audio' ) ;
50+ expect ( getFileType ( '.pdf' ) ) . toBe ( 'file' ) ;
51+ expect ( getFileType ( 'pdf' ) ) . toBe ( 'file' ) ;
52+ expect ( getFileType ( '.json' ) ) . toBe ( 'file' ) ;
53+ expect ( getFileType ( 'json' ) ) . toBe ( 'file' ) ;
54+ expect ( getFileType ( '.zip' ) ) . toBe ( 'file' ) ;
55+ expect ( getFileType ( 'zip' ) ) . toBe ( 'file' ) ;
56+ expect ( getFileType ( '.gzip' ) ) . toBe ( 'file' ) ;
57+ expect ( getFileType ( 'gzip' ) ) . toBe ( 'file' ) ;
58+ expect ( getFileType ( '.txt' ) ) . toBe ( 'file' ) ;
59+ expect ( getFileType ( 'txt' ) ) . toBe ( 'file' ) ;
60+ } ) ;
61+
62+ it ( 'should return the proper file type with type' , ( ) => {
63+ expect ( getFileType ( 'image' ) ) . toBe ( 'image' ) ;
64+ expect ( getFileType ( 'video' ) ) . toBe ( 'video' ) ;
65+ expect ( getFileType ( 'audio' ) ) . toBe ( 'audio' ) ;
66+ expect ( getFileType ( 'invalid-value' ) ) . toBe ( 'file' ) ;
67+ } ) ;
68+ } ) ;
69+
1070describe ( 'getDownscaleSize' , ( ) => {
1171 it ( 'should return the original size when no resizing is necessary' , ( ) => {
1272 const origin = { width : 500 , height : 400 } ;
@@ -66,6 +126,13 @@ describe('normalizeFileName', () => {
66126 expect ( result ) . toEqual ( `${ fileName } .${ extension } ` ) ;
67127 } ) ;
68128
129+ it ( 'should append dot+extension to filename if it does not exist' , ( ) => {
130+ const fileName = 'testFile' ;
131+ const extension = '.txt' ;
132+ const result = normalizeFileName ( fileName , extension ) ;
133+ expect ( result ) . toEqual ( `${ fileName } ${ extension } ` ) ;
134+ } ) ;
135+
69136 it ( 'should return filename as is if it already contains extension' , ( ) => {
70137 const fileName = 'testFile.txt' ;
71138 const extension = 'txt' ;
@@ -121,12 +188,12 @@ describe('getFileExtensionFromMime', () => {
121188 } ) ;
122189
123190 it ( 'should return correct extension for known mime type' , ( ) => {
124- expect ( getFileExtensionFromMime ( 'image/jpeg' ) ) . toMatch ( / j p g | j p e g / ) ;
125- expect ( getFileExtensionFromMime ( 'video/mp4' ) ) . toBe ( 'mp4' ) ;
126- expect ( getFileExtensionFromMime ( 'audio/mpeg' ) ) . toBe ( 'mp3' ) ;
127- expect ( getFileExtensionFromMime ( 'text/plain' ) ) . toBe ( 'txt' ) ;
128- expect ( getFileExtensionFromMime ( 'application/pdf' ) ) . toBe ( 'pdf' ) ;
129- expect ( getFileExtensionFromMime ( 'application/vnd.ms-excel' ) ) . toBe ( 'xls' ) ;
191+ expect ( getFileExtensionFromMime ( 'image/jpeg' ) ) . toMatch ( / \. j p g | \. j p e g / ) ;
192+ expect ( getFileExtensionFromMime ( 'video/mp4' ) ) . toBe ( '. mp4' ) ;
193+ expect ( getFileExtensionFromMime ( 'audio/mpeg' ) ) . toBe ( '. mp3' ) ;
194+ expect ( getFileExtensionFromMime ( 'text/plain' ) ) . toBe ( '. txt' ) ;
195+ expect ( getFileExtensionFromMime ( 'application/pdf' ) ) . toBe ( '. pdf' ) ;
196+ expect ( getFileExtensionFromMime ( 'application/vnd.ms-excel' ) ) . toBe ( '. xls' ) ;
130197 } ) ;
131198
132199 it ( 'should return empty string for unknown mime type' , ( ) => {
@@ -143,6 +210,14 @@ describe('getMimeFromFileExtension', () => {
143210 ) ;
144211 } ) ;
145212
213+ it ( 'should return the correct MIME type for a given file extension with dot' , ( ) => {
214+ expect ( getMimeFromFileExtension ( '..pdf' ) ) . toEqual ( 'application/pdf' ) ;
215+ expect ( getMimeFromFileExtension ( '.jpg' ) ) . toEqual ( 'image/jpeg' ) ;
216+ expect ( getMimeFromFileExtension ( '.docx' ) ) . toEqual (
217+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ,
218+ ) ;
219+ } ) ;
220+
146221 it ( 'should return an empty string for null or undefined input' , ( ) => {
147222 expect ( getMimeFromFileExtension ( null ) ) . toEqual ( '' ) ;
148223 expect ( getMimeFromFileExtension ( undefined ) ) . toEqual ( '' ) ;
@@ -179,3 +254,18 @@ describe('getFileExtension', () => {
179254 expect ( getFileExtension ( '/path/to/file?query=string;key=test123' ) ) . toEqual ( '' ) ;
180255 } ) ;
181256} ) ;
257+
258+ describe ( 'getFileExtensionFromUri' , ( ) => {
259+ it ( 'should return the correct file extension for a given file uri' , async ( ) => {
260+ await expect (
261+ getFileExtensionFromUri (
262+ 'https://user-images.githubusercontent.com/26326015/253041267-4fd6c9f8-7bb4-4197-813c-43a45d0de95e.png' ,
263+ ) ,
264+ ) . resolves . toEqual ( '.png' ) ;
265+ await expect (
266+ getFileExtensionFromUri (
267+ 'https://user-images.githubusercontent.com/26326015/253041558-3028125e-a016-402c-a9bd-d30b1831d19b.jpg' ,
268+ ) ,
269+ ) . resolves . toEqual ( '.jpg' ) ;
270+ } ) ;
271+ } ) ;
0 commit comments