Skip to content

Commit a6dc3d1

Browse files
gautamaroraCompuIves
authored andcommitted
Adding unit tests for jest native integration (#464)
* Report testing errors in console * Add todo * Adding tests for jest-lite * Test cleanup
1 parent edd8101 commit a6dc3d1

File tree

6 files changed

+465
-39
lines changed

6 files changed

+465
-39
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"lerna run start --parallel --ignore app & lerna run start:dev_api --scope app --stream",
1616
"test": "lerna run test",
1717
"test:integrations": "lerna exec --scope app --stream -- yarn test:integrations",
18+
"test:jest-lite": "lerna exec --scope app --stream -- yarn run test jest-lite --watch --coverage",
1819
"lint": "lerna run lint",
1920
"add-contributor": "all-contributors add",
2021
"generate": "all-contributors generate",

packages/app/src/app/components/sandbox/CodeEditor/monaco/workers/fetch-dependency-typings.js

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -169,15 +169,16 @@ function fetchFromMeta(dependency, version, fetchedPaths) {
169169
return doFetch(`${depUrl}/?meta`)
170170
.then(response => JSON.parse(response))
171171
.then(meta => {
172-
const filterAndFlatten = files => files.reduce((paths, file) => {
173-
if (file.type === 'directory') {
174-
return paths.concat(filterAndFlatten(file.files));
175-
}
176-
if (/\.d\.ts$/.test(file.path)) {
177-
paths.push(file.path);
178-
}
179-
return paths;
180-
}, []);
172+
const filterAndFlatten = files =>
173+
files.reduce((paths, file) => {
174+
if (file.type === 'directory') {
175+
return paths.concat(filterAndFlatten(file.files));
176+
}
177+
if (/\.d\.ts$/.test(file.path)) {
178+
paths.push(file.path);
179+
}
180+
return paths;
181+
}, []);
181182

182183
const dtsFiles = filterAndFlatten(meta.files);
183184

@@ -187,11 +188,9 @@ function fetchFromMeta(dependency, version, fetchedPaths) {
187188

188189
dtsFiles.forEach(file => {
189190
doFetch(`${depUrl}/${file}`)
190-
.then(dtsFile => addLib(
191-
`node_modules/${dependency}${file}`,
192-
dtsFile,
193-
fetchedPaths
194-
))
191+
.then(dtsFile =>
192+
addLib(`node_modules/${dependency}${file}`, dtsFile, fetchedPaths)
193+
)
195194
.catch(() => {});
196195
});
197196
});
@@ -238,16 +237,18 @@ function fetchAndAddDependencies(dependencies) {
238237
fetchedPaths
239238
).catch(() => {
240239
// not available in package.json, try checking meta for inline .d.ts files
241-
fetchFromMeta(dep, getVersion(dependencies[dep]), fetchedPaths).catch(() => {
242-
// Not available in package.json or inline from meta, try checking in @types/
243-
fetchFromDefinitelyTyped(
244-
dep,
245-
dependencies[dep],
246-
fetchedPaths
247-
).catch(() => {
248-
// Do nothing if it still can't be fetched
249-
});
250-
});
240+
fetchFromMeta(dep, getVersion(dependencies[dep]), fetchedPaths).catch(
241+
() => {
242+
// Not available in package.json or inline from meta, try checking in @types/
243+
fetchFromDefinitelyTyped(
244+
dep,
245+
dependencies[dep],
246+
fetchedPaths
247+
).catch(() => {
248+
// Do nothing if it still can't be fetched
249+
});
250+
}
251+
);
251252
});
252253

253254
loadedTypings.push(dep);

packages/app/src/app/components/sandbox/Preview/DevTools/Console/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class Console extends React.Component<Props, State> {
105105
this.addMessage('warn', [undefined], 'return');
106106
}
107107
} else {
108-
this.addMessage('error', [aggregatedResults]);
108+
this.addMessage('log', [error]);
109109
}
110110
break;
111111
}

packages/app/src/sandbox/compile.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,11 @@ async function compile({
208208
result: transformJSON(aggregatedResults),
209209
});
210210
// End - Testing
211-
} catch (e) {
212-
// Fail silently
211+
} catch (error) {
212+
dispatch({
213+
type: 'test-result',
214+
error: manager.testRunner.reportError(error),
215+
});
213216
}
214217

215218
debug(`Total time: ${Date.now() - startTime}ms`);

packages/app/src/sandbox/eval/tests/jest-lite.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,14 @@ export default class TestRunner {
8888
});
8989
}
9090

91+
/* istanbul ignore next */
9192
async transpileTests() {
9293
for (let t of this.tests) {
9394
await this.manager.transpileModules(t, true);
9495
}
9596
}
9697

98+
/* istanbul ignore next */
9799
async runTests() {
98100
await this.transpileTests();
99101
this.tests.forEach(t => {
@@ -157,22 +159,14 @@ export default class TestRunner {
157159
: '👻';
158160
summaryMessage = `Test Summary: ${summaryEmoji}\n\n`;
159161
summaryMessage += 'Test Suites: ';
160-
if (aggregatedResults.failedTestSuites !== null) {
161-
summaryMessage += `${aggregatedResults.failedTestSuites} failed, `;
162-
}
163-
if (aggregatedResults.passedTestSuites !== null) {
164-
summaryMessage += `${aggregatedResults.passedTestSuites} passed, `;
165-
}
162+
summaryMessage += `${aggregatedResults.failedTestSuites} failed, `;
163+
summaryMessage += `${aggregatedResults.passedTestSuites} passed, `;
166164
summaryMessage += `${aggregatedResults.totalTestSuites} total`;
167165
summaryMessage += '\n';
168166

169167
summaryMessage += 'Tests: ';
170-
if (aggregatedResults.failedTests !== null) {
171-
summaryMessage += `${aggregatedResults.failedTests} failed, `;
172-
}
173-
if (aggregatedResults.passedTests !== null) {
174-
summaryMessage += `${aggregatedResults.passedTests} passed, `;
175-
}
168+
summaryMessage += `${aggregatedResults.failedTests} failed, `;
169+
summaryMessage += `${aggregatedResults.passedTests} passed, `;
176170
summaryMessage += `${aggregatedResults.totalTests} total`;
177171
summaryMessage += '\n';
178172

@@ -186,6 +180,10 @@ export default class TestRunner {
186180
return aggregatedResults;
187181
}
188182

183+
reportError({ message = 'something went wrong' }) {
184+
return `Test Summary: 😢\nError: ${message}`;
185+
}
186+
189187
resetResults() {
190188
this.aggregatedResults = this._makeEmptyAggregatedResults();
191189
}

0 commit comments

Comments
 (0)