-
-
Notifications
You must be signed in to change notification settings - Fork 503
Expand file tree
/
Copy pathutils.js
More file actions
54 lines (48 loc) · 1.81 KB
/
utils.js
File metadata and controls
54 lines (48 loc) · 1.81 KB
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
const { createAssetsFilter } = require("../src/utils");
describe("createAssetsFilter", () => {
it("should create a noop filter if pattern is not set", () => {
for (const pattern of [undefined, null, []]) {
const filter = createAssetsFilter(pattern);
expect(filter("foo")).toBe(true);
}
});
it("should allow a string as a pattern", () => {
const filter = createAssetsFilter("^foo");
expect(filter("foo")).toBe(false);
expect(filter("foo-bar")).toBe(false);
expect(filter("bar")).toBe(true);
expect(filter("bar-foo")).toBe(true);
});
it("should allow a RegExp as a pattern", () => {
const filter = createAssetsFilter(/^foo/iu);
expect(filter("foo")).toBe(false);
expect(filter("FOO")).toBe(false);
expect(filter("foo-bar")).toBe(false);
expect(filter("bar")).toBe(true);
expect(filter("bar-foo")).toBe(true);
});
it("should allow a filter function as a pattern", () => {
const filter = createAssetsFilter((asset) => asset.startsWith("foo"));
expect(filter("foo")).toBe(false);
expect(filter("foo-bar")).toBe(false);
expect(filter("bar")).toBe(true);
expect(filter("bar-foo")).toBe(true);
});
it("should throw on invalid pattern types", () => {
expect(() => createAssetsFilter(5)).toThrow('but "5" got');
expect(() => createAssetsFilter({ a: 1 })).toThrow('but "{ a: 1 }" got');
expect(() => createAssetsFilter([true])).toThrow('but "true" got');
});
it("should allow an array of patterns", () => {
const filter = createAssetsFilter([
"^foo",
/bar$/iu,
(asset) => asset.includes("baz"),
]);
expect(filter("foo")).toBe(false);
expect(filter("bar")).toBe(false);
expect(filter("fooBar")).toBe(false);
expect(filter("fooBARbaz")).toBe(false);
expect(filter("bar-foo")).toBe(true);
});
});