react-monaco-editor
Version:
Monaco Editor for React
71 lines (61 loc) • 1.83 kB
JavaScript
;
const path = require("path");
function mockPromise(value) {
const isValueAPromise = (value || {}).then;
const mockedPromise = {
then: function(callback) {
return mockPromise(callback(value));
}
};
return isValueAPromise ? value : mockedPromise;
}
function spawnChild(pkg) {
return pkg;
}
function getLoc(option) {
let packageModule = [];
option.filter(pkg => {
mockPromise(spawnChild(pkg)).then(_ => {
try {
let loc = path.join("..", "..", "node_modules", pkg);
packageModule.push(loc);
} catch (err) {
throw new Error(
"Package wasn't validated correctly.." + "Submit an issue for",
pkg,
"if this persists"
);
}
});
return packageModule;
});
return packageModule;
}
describe("resolve-packages", () => {
let moduleLoc;
afterEach(() => {
moduleLoc = null;
});
it("should resolve a location of a published module", () => {
moduleLoc = getLoc(["webpack-addons-ylvis"]);
expect(moduleLoc).toEqual([
path.normalize("../../node_modules/webpack-addons-ylvis")
]);
});
it("should be empty if argument is blank", () => {
// normally caught before getting resolved
moduleLoc = getLoc([" "]);
expect(moduleLoc).toEqual([path.normalize("../../node_modules/ ")]);
});
it("should resolve multiple locations of published modules", () => {
/* we're testing multiple paths here. At Github this up for discussion, because if
* we validate each package on each run, we can catch and build the questions in init gradually
* while we get one filepath at the time. If not, this is a workaround.
*/
moduleLoc = getLoc(["webpack-addons-ylvis", "webpack-addons-noop"]);
expect(moduleLoc).toEqual([
path.normalize("../../node_modules/webpack-addons-ylvis"),
path.normalize("../../node_modules/webpack-addons-noop")
]);
});
});