-
-
Notifications
You must be signed in to change notification settings - Fork 8.7k
/
index.js
85 lines (77 loc) · 3 KB
/
index.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
it("should receive a namespace object when importing commonjs", function(done) {
import("./cjs").then(function(result) {
result.should.be.eql({ named: "named", default: { named: "named", default: "default" } });
done();
}).catch(done);
});
it("should receive a namespace object when importing commonjs with __esModule", function(done) {
import("./cjs-esmodule").then(function(result) {
result.should.be.eql({ __esModule: true, named: "named", default: "default" });
done();
}).catch(done);
});
function contextCJS(name) {
return Promise.all([
import(`./dir-cjs/${name}`),
import(/* webpackMode: "lazy-once" */`./dir-cjs?1/${name}`),
import(/* webpackMode: "eager" */`./dir-cjs?2/${name}`)
]).then(function(results) {
return import(/* webpackMode: "weak" */`./dir-cjs/${name}`).then(function(r) {
results.push(r);
return results;
});
});
}
function contextHarmony(name) {
return Promise.all([
import(`./dir-harmony/${name}`),
import(/* webpackMode: "lazy-once" */`./dir-harmony?1/${name}`),
import(/* webpackMode: "eager" */`./dir-harmony?2/${name}`)
]).then(function(results) {
return import(/* webpackMode: "weak" */`./dir-harmony/${name}`).then(function(r) {
results.push(r);
return results;
});
});
}
function contextMixed(name) {
return Promise.all([
import(`./dir-mixed/${name}`),
import(/* webpackMode: "lazy-once" */`./dir-mixed?1/${name}`),
import(/* webpackMode: "eager" */`./dir-mixed?2/${name}`)
]).then(function(results) {
return import(/* webpackMode: "weak" */`./dir-mixed/${name}`).then(function(r) {
results.push(r);
return results;
});
});
}
function promiseTest(promise, equalsTo) {
return promise.then(function(results) {
for(const result of results)
result.should.be.eql(equalsTo);
});
}
it("should receive a namespace object when importing commonjs via context", function() {
return Promise.all([
promiseTest(contextCJS("one"), { named: "named", default: { named: "named", default: "default" } }),
promiseTest(contextCJS("two"), { __esModule: true, named: "named", default: "default" }),
promiseTest(contextCJS("three"), { named: "named", default: { named: "named", default: "default" } }),
promiseTest(contextCJS("null"), { default: null })
]);
});
it("should receive a namespace object when importing harmony via context", function() {
return Promise.all([
promiseTest(contextHarmony("one"), { named: "named", default: "default" }),
promiseTest(contextHarmony("two"), { named: "named", default: "default" }),
promiseTest(contextHarmony("three"), { named: "named", default: "default" })
]);
});
it("should receive a namespace object when importing mixed content via context", function() {
return Promise.all([
promiseTest(contextMixed("one"), { named: "named", default: { named: "named", default: "default" } }),
promiseTest(contextMixed("two"), { __esModule: true, named: "named", default: "default" }),
promiseTest(contextMixed("three"), { named: "named", default: "default" }),
promiseTest(contextMixed("null"), { default: null })
]);
});