Skip to content

Commit 40a9032

Browse files
committed
[INTERNAL] ResourceCollector: Add tests for handling of dbg files and -bundles
1 parent 7ec38a4 commit 40a9032

File tree

1 file changed

+67
-7
lines changed

1 file changed

+67
-7
lines changed

test/lib/lbt/resources/ResourceCollector.js

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,7 @@ test.serial("determineResourceDetails: properties", async (t) => {
118118
});
119119

120120
test.serial("determineResourceDetails: view.xml", async (t) => {
121-
const resourceCollector = new ResourceCollector({
122-
getModuleInfo: async (moduleInfo) => {
123-
return {
124-
name: "myName"
125-
};
126-
}
127-
});
121+
const resourceCollector = new ResourceCollector();
128122
const enrichWithDependencyInfoStub = sinon.stub(resourceCollector, "enrichWithDependencyInfo")
129123
.returns(Promise.resolve());
130124
await resourceCollector.visitResource({getPath: () => "/resources/mylib/my.view.xml", getSize: async () => 13});
@@ -133,6 +127,72 @@ test.serial("determineResourceDetails: view.xml", async (t) => {
133127
t.is(enrichWithDependencyInfoStub.getCall(0).args[0].name, "mylib/my.view.xml", "is called with view");
134128
});
135129

130+
test.serial("determineResourceDetails: Debug bundle", async (t) => {
131+
const resourceCollector = new ResourceCollector();
132+
133+
const enrichWithDependencyInfoStub = sinon.stub(resourceCollector, "enrichWithDependencyInfo").resolves();
134+
await resourceCollector.visitResource({getPath: () => "/resources/MyBundle-dbg.js", getSize: async () => 13});
135+
136+
await resourceCollector.determineResourceDetails({
137+
debugBundles: ["MyBundle-dbg.js"]
138+
});
139+
t.is(enrichWithDependencyInfoStub.callCount, 1, "enrichWithDependencyInfo is called once");
140+
t.is(enrichWithDependencyInfoStub.getCall(0).args[0].name, "MyBundle-dbg.js",
141+
"enrichWithDependencyInfo is called with debug bundle");
142+
});
143+
144+
test.serial("determineResourceDetails: Debug files and non-debug files", async (t) => {
145+
const resourceCollector = new ResourceCollector();
146+
147+
const enrichWithDependencyInfoStub = sinon.stub(resourceCollector, "enrichWithDependencyInfo")
148+
.callsFake((resourceInfo) => {
149+
// Simulate enriching resource info with dependency info to test whether it gets shared
150+
// with the dbg resource alter on
151+
resourceInfo.dynRequired = true;
152+
});
153+
await Promise.all([
154+
"/resources/MyBundle-dbg.js",
155+
"/resources/mylib/MyControlA-dbg.js",
156+
"/resources/mylib/MyControlA.js",
157+
"/resources/mylib/MyControlB.js",
158+
"/resources/mylib/MyControlB-dbg.js"
159+
].map((resourcePath) => {
160+
return resourceCollector.visitResource({getPath: () => resourcePath, getSize: async () => 13});
161+
}));
162+
163+
await resourceCollector.determineResourceDetails({
164+
debugResources: ["**/*-dbg.js"],
165+
debugBundles: ["MyBundle-dbg.js"]
166+
});
167+
t.is(enrichWithDependencyInfoStub.callCount, 3, "enrichWithDependencyInfo is called three times");
168+
t.is(enrichWithDependencyInfoStub.getCall(0).args[0].name, "MyBundle-dbg.js",
169+
"enrichWithDependencyInfo called with debug bundle");
170+
t.is(enrichWithDependencyInfoStub.getCall(1).args[0].name, "mylib/MyControlA.js",
171+
"enrichWithDependencyInfo called with non-debug control A");
172+
t.is(enrichWithDependencyInfoStub.getCall(2).args[0].name, "mylib/MyControlB.js",
173+
"enrichWithDependencyInfo called with non-debug control B");
174+
175+
t.is(resourceCollector._resources.get("MyBundle-dbg.js").isDebug, true, "MyBundle-dbg is a debug file");
176+
t.is(resourceCollector._resources.get("MyBundle-dbg.js").dynRequired, true,
177+
"MyBundle-dbg is flagged as dynRequired");
178+
179+
t.is(resourceCollector._resources.get("mylib/MyControlA.js").isDebug, false, "MyControlA is no debug file");
180+
t.is(resourceCollector._resources.get("mylib/MyControlA.js").dynRequired, true,
181+
"MyControlA is flagged as dynRequired");
182+
183+
t.is(resourceCollector._resources.get("mylib/MyControlA-dbg.js").isDebug, true, "MyControlA-dbg is a debug file");
184+
t.is(resourceCollector._resources.get("mylib/MyControlA-dbg.js").dynRequired, true,
185+
"MyControlA-dbg is flagged as dynRequired");
186+
187+
t.is(resourceCollector._resources.get("mylib/MyControlB.js").isDebug, false, "MyControlB is no debug file");
188+
t.is(resourceCollector._resources.get("mylib/MyControlB.js").dynRequired, true,
189+
"MyControlB is flagged as dynRequired");
190+
191+
t.is(resourceCollector._resources.get("mylib/MyControlB-dbg.js").isDebug, true, "MyControlB-dbg is a debug file");
192+
t.is(resourceCollector._resources.get("mylib/MyControlB-dbg.js").dynRequired, true,
193+
"MyControlB-dbg is flagged as dynRequired");
194+
});
195+
136196
test.serial("enrichWithDependencyInfo: add infos to resourceinfo", async (t) => {
137197
const resourceCollector = new ResourceCollector({
138198
getModuleInfo: async () => {

0 commit comments

Comments
 (0)