-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathisFile.test.ts
74 lines (51 loc) · 1.28 KB
/
isFile.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import test from "ava"
import {File, Blob} from "formdata-node"
import type {FileLike} from "../FileLike.js"
import {isFile} from "./isFile.js"
test("Returns true for a File", t => {
const file = new File(["Content"], "name.txt")
t.true(isFile(file))
})
test("Returns true for a class that implements File", t => {
class MyFile implements FileLike {
name = ""
type = ""
size = 0
lastModified = Date.now()
async *stream(): AsyncIterable<Uint8Array> {
yield new Uint8Array(0)
}
get [Symbol.toStringTag](): string {
return "File"
}
}
t.true(isFile(new MyFile()))
})
test("Returns true for a file-shaped object", t => {
const object = {
name: "",
type: "",
size: 0,
lastModified: Date.now(),
async *stream(): AsyncGenerator<Uint8Array> {
yield new Uint8Array(0)
},
get [Symbol.toStringTag](): string {
return "File"
}
}
t.true(isFile(object))
})
test("Returns false for null", t => {
t.false(isFile(null))
})
test("Returns false for undefined", t => {
t.false(isFile(undefined))
})
test("Returns false for non-File object", t => {
t.false(isFile(new Map()))
})
test("Returns false for Blob", t => {
const blob = new Blob(["Content"], {type: "text/plain"})
t.false(isFile(blob))
})