-
Notifications
You must be signed in to change notification settings - Fork 193
/
Copy pathrestrictions.test.js
107 lines (95 loc) · 2.87 KB
/
restrictions.test.js
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
const path = require("path");
const fs = require("fs");
const ResolverFactory = require("../lib/ResolverFactory");
const CachedInputFileSystem = require("../lib/CachedInputFileSystem");
const fixture = path.resolve(__dirname, "fixtures", "restrictions");
const nodeFileSystem = new CachedInputFileSystem(fs, 4000);
describe("restrictions", () => {
it("should respect RegExp restriction", done => {
const resolver = ResolverFactory.createResolver({
extensions: [".js"],
fileSystem: nodeFileSystem,
restrictions: [/\.(sass|scss|css)$/]
});
resolver.resolve({}, fixture, "pck1", {}, (err, result) => {
if (!err) return done(new Error(`expect error, got ${result}`));
expect(err).toBeInstanceOf(Error);
done();
});
});
it("should try to find alternative #1", done => {
const resolver = ResolverFactory.createResolver({
extensions: [".js", ".css"],
fileSystem: nodeFileSystem,
mainFiles: ["index"],
restrictions: [/\.(sass|scss|css)$/]
});
resolver.resolve({}, fixture, "pck1", {}, (err, result) => {
if (err) return done(err);
if (!result) return done(new Error("No result"));
expect(result).toEqual(
path.resolve(fixture, "node_modules/pck1/index.css")
);
done();
});
});
it("should respect string restriction", done => {
const resolver = ResolverFactory.createResolver({
extensions: [".js"],
fileSystem: nodeFileSystem,
restrictions: [fixture]
});
resolver.resolve({}, fixture, "pck2", {}, (err, result) => {
if (!err) return done(new Error(`expect error, got ${result}`));
expect(err).toBeInstanceOf(Error);
done();
});
});
it("should try to find alternative #2", done => {
const resolver = ResolverFactory.createResolver({
extensions: [".js"],
fileSystem: nodeFileSystem,
mainFields: ["main", "style"],
restrictions: [fixture, /\.(sass|scss|css)$/]
});
resolver.resolve({}, fixture, "pck2", {}, (err, result) => {
if (err) return done(err);
if (!result) return done(new Error("No result"));
expect(result).toEqual(
path.resolve(fixture, "node_modules/pck2/index.css")
);
done();
});
});
it("should try to find alternative #3", done => {
const resolver = ResolverFactory.createResolver({
extensions: [".js"],
fileSystem: nodeFileSystem,
mainFields: ["main", "module", "style"],
restrictions: [fixture, /\.(sass|scss|css)$/]
});
const log = [];
resolver.resolve(
{},
fixture,
"pck2",
{ log: log.push.bind(log) },
(err, result) => {
if (err) return done(err);
if (!result) return done(new Error("No result"));
expect(result).toEqual(
path.resolve(fixture, "node_modules/pck2/index.css")
);
expect(
log.map(line =>
line
.replace(path.resolve(__dirname, ".."), "...")
.replace(path.resolve(__dirname, ".."), "...")
.replace(/\\/g, "/")
)
).toMatchSnapshot();
done();
}
);
});
});