@@ -2,11 +2,71 @@ import {
2
2
getDownscaleSize ,
3
3
getFileExtension ,
4
4
getFileExtensionFromMime ,
5
+ getFileExtensionFromUri ,
6
+ getFileType ,
5
7
getMimeFromFileExtension ,
6
8
normalizeFileName ,
7
9
parseMimeType ,
8
10
} from '../../shared/file' ;
9
11
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
+
10
70
describe ( 'getDownscaleSize' , ( ) => {
11
71
it ( 'should return the original size when no resizing is necessary' , ( ) => {
12
72
const origin = { width : 500 , height : 400 } ;
@@ -66,6 +126,13 @@ describe('normalizeFileName', () => {
66
126
expect ( result ) . toEqual ( `${ fileName } .${ extension } ` ) ;
67
127
} ) ;
68
128
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
+
69
136
it ( 'should return filename as is if it already contains extension' , ( ) => {
70
137
const fileName = 'testFile.txt' ;
71
138
const extension = 'txt' ;
@@ -121,12 +188,12 @@ describe('getFileExtensionFromMime', () => {
121
188
} ) ;
122
189
123
190
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' ) ;
130
197
} ) ;
131
198
132
199
it ( 'should return empty string for unknown mime type' , ( ) => {
@@ -143,6 +210,14 @@ describe('getMimeFromFileExtension', () => {
143
210
) ;
144
211
} ) ;
145
212
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
+
146
221
it ( 'should return an empty string for null or undefined input' , ( ) => {
147
222
expect ( getMimeFromFileExtension ( null ) ) . toEqual ( '' ) ;
148
223
expect ( getMimeFromFileExtension ( undefined ) ) . toEqual ( '' ) ;
@@ -179,3 +254,18 @@ describe('getFileExtension', () => {
179
254
expect ( getFileExtension ( '/path/to/file?query=string;key=test123' ) ) . toEqual ( '' ) ;
180
255
} ) ;
181
256
} ) ;
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