chore: canvas tasks - local tests

This commit is contained in:
joe fleming 2018-09-07 16:58:47 -07:00
parent c200854f4a
commit 60ea466b1a
14 changed files with 174 additions and 3 deletions

View file

@ -61,6 +61,7 @@ export const LICENSE_WHITELIST = [
]; ];
export const LICENSE_OVERRIDES = { export const LICENSE_OVERRIDES = {
'scriptjs@2.5.8': ['MIT'], // license header appended in the dist
'react-lib-adler32@1.0.1': ['BSD'], // adler32 extracted from react source 'react-lib-adler32@1.0.1': ['BSD'], // adler32 extracted from react source
// TODO can be removed once we upgrade past elasticsearch-browser@14.0.0 // TODO can be removed once we upgrade past elasticsearch-browser@14.0.0

View file

@ -34,8 +34,10 @@
"axios": "^0.18.0", "axios": "^0.18.0",
"babel-jest": "^23.4.2", "babel-jest": "^23.4.2",
"babel-plugin-inline-react-svg": "^0.5.4", "babel-plugin-inline-react-svg": "^0.5.4",
"babel-plugin-mock-imports": "^0.0.5",
"babel-plugin-pegjs-inline-precompile": "^0.1.0", "babel-plugin-pegjs-inline-precompile": "^0.1.0",
"babel-plugin-transform-react-remove-prop-types": "^0.4.14", "babel-plugin-transform-react-remove-prop-types": "^0.4.14",
"babel-register": "^6.26.0",
"chalk": "^2.4.1", "chalk": "^2.4.1",
"chance": "1.0.10", "chance": "1.0.10",
"checksum": "0.1.1", "checksum": "0.1.1",
@ -56,6 +58,7 @@
"jest": "^23.5.0", "jest": "^23.5.0",
"jest-cli": "^23.5.0", "jest-cli": "^23.5.0",
"jest-styled-components": "^6.1.1", "jest-styled-components": "^6.1.1",
"jsdom": "9.9.1",
"mocha": "3.3.0", "mocha": "3.3.0",
"mustache": "^2.3.0", "mustache": "^2.3.0",
"mutation-observer": "^1.0.3", "mutation-observer": "^1.0.3",

View file

@ -10,7 +10,12 @@
"kbn": "node ../../../scripts/kbn", "kbn": "node ../../../scripts/kbn",
"start": "../../node_modules/.bin/gulp canvas:dev", "start": "../../node_modules/.bin/gulp canvas:dev",
"lint": "node ../../../scripts/eslint '*.js' '__tests__/**/*.js' 'tasks/**/*.js' 'server/**/*.js' 'common/**/*.js' 'public/**/*.{js,jsx}' 'canvas_plugin_src/**/*.{js,jsx}' --ignore-pattern 'canvas_plugin_src/lib/flot-charts/**/*' --ignore-pattern 'common/lib/grammar.js' --ignore-pattern 'canvas_plugin/**/*'", "lint": "node ../../../scripts/eslint '*.js' '__tests__/**/*.js' 'tasks/**/*.js' 'server/**/*.js' 'common/**/*.js' 'public/**/*.{js,jsx}' 'canvas_plugin_src/**/*.{js,jsx}' --ignore-pattern 'canvas_plugin_src/lib/flot-charts/**/*' --ignore-pattern 'common/lib/grammar.js' --ignore-pattern 'canvas_plugin/**/*'",
"test": "echo NOT READY; exit 1", "test": "../../node_modules/.bin/gulp canvas:test",
"test:common": "../../node_modules/.bin/gulp canvas:test:common",
"test:server": "../../node_modules/.bin/gulp canvas:test:server",
"test:browser": "../../node_modules/.bin/gulp canvas:test:browser",
"test:plugins": "../../node_modules/.bin/gulp canvas:test:plugins",
"test:dev": "../../node_modules/.bin/gulp canvas:test:dev",
"peg:build": "../../node_modules/.bin/gulp canvas:peg:build", "peg:build": "../../node_modules/.bin/gulp canvas:peg:build",
"peg:dev": "../../node_modules/.bin/gulp canvas:peg:dev", "peg:dev": "../../node_modules/.bin/gulp canvas:peg:dev",
"build": "echo Run build from x-pack root; exit 1", "build": "echo Run build from x-pack root; exit 1",

View file

@ -0,0 +1,48 @@
const { resolve } = require('path');
const register = require('babel-register');
const options = {
sourceMaps: false,
plugins: [
[
'mock-imports',
[
{
pattern: 'scriptjs',
location: resolve(__dirname, '..', 'mocks', 'noop'),
},
{
pattern: 'ui/chrome',
location: resolve(__dirname, '..', 'mocks', 'uiChrome'),
},
{
pattern: 'ui/notify',
location: resolve(__dirname, '..', 'mocks', 'uiNotify'),
},
{
pattern: 'ui/url/absolute_to_parsed_url',
location: resolve(__dirname, '..', 'mocks', 'absoluteToParsedUrl'),
},
{
pattern: 'socket.io-client',
location: resolve(__dirname, '..', 'mocks', 'socketClient'),
},
{
// ugly hack so that importing non-js files works, required for the function docs
pattern: '.(less|png|svg)$',
location: resolve(__dirname, '..', 'mocks', 'noop'),
},
{
pattern: 'plugins/canvas/apps',
location: resolve(__dirname, '..', 'mocks', 'noop'),
},
{
pattern: '/state/store',
location: resolve(__dirname, '..', 'mocks', 'stateStore'),
},
],
],
],
};
register(options);

View file

@ -0,0 +1,16 @@
import { JSDOM } from 'jsdom';
import { APP_ROUTE } from '../../common/lib/constants';
import chrome from '../mocks/uiChrome';
const basePath = chrome.getBasePath();
const basename = `${basePath}${APP_ROUTE}`;
const { window } = new JSDOM('', {
url: `http://localhost:5601/${basename}`,
pretendToBeVisual: true,
});
global.window = window;
global.document = window.document;
global.navigator = window.navigator;
global.requestAnimationFrame = window.requestAnimationFrame;
global.HTMLElement = window.HTMLElement;

View file

@ -0,0 +1,4 @@
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
configure({ adapter: new Adapter() });

View file

@ -1,13 +1,13 @@
import dev from './dev'; import dev from './dev';
// import test from './test';
import peg from './peg'; import peg from './peg';
import plugins from './plugins'; import plugins from './plugins';
import prepare from './prepare'; import prepare from './prepare';
import test from './test';
export default function canvasTasks(gulp, gulpHelpers) { export default function canvasTasks(gulp, gulpHelpers) {
dev(gulp, gulpHelpers); dev(gulp, gulpHelpers);
// test(gulp, gulpHelpers);
peg(gulp, gulpHelpers); peg(gulp, gulpHelpers);
plugins(gulp, gulpHelpers); plugins(gulp, gulpHelpers);
prepare(gulp, gulpHelpers); prepare(gulp, gulpHelpers);
test(gulp, gulpHelpers);
} }

View file

@ -0,0 +1,4 @@
export const absoluteToParsedUrl = () => {
getAbsoluteUrl: () =>
'http://localhost:5601/kbp/app/canvas#/workpad/workpad-24d56dad-ae70-42b8-9ef1-c5350ecd426c/page/1';
}; // noop

View file

@ -0,0 +1 @@
export default function() {}

View file

@ -0,0 +1,11 @@
const noop = () => {};
// arguments: url, options
// https://github.com/socketio/socket.io-client/blob/master/docs/API.md#iourl-options
export default function mockIo() {
return {
on: noop,
emit: noop,
once: noop,
};
}

View file

@ -0,0 +1,7 @@
export function getState() {
return {
assets: {
yay: { value: 'here is your image' },
},
};
}

View file

@ -0,0 +1,4 @@
export default {
getBasePath: () => '/abc',
trackSubUrlForApp: () => undefined, // noop
};

View file

@ -0,0 +1,11 @@
const notifierProto = {
error: msg => `error: ${msg}`,
warning: msg => `warning: ${msg}`,
info: msg => `info: ${msg}`,
};
export class Notifier {
constructor() {
Object.assign(this, notifierProto);
}
}

View file

@ -0,0 +1,56 @@
import { resolve, join } from 'path';
export default function testTasks(gulp, { mocha }) {
const canvasRoot = resolve(__dirname, '..');
function runMocha(globs, { withEnzyme = false, withDOM = false } = {}) {
const requires = [join(canvasRoot, 'tasks/helpers/babelhook')];
if (withDOM) requires.push(join(canvasRoot, 'tasks/helpers/dom_setup'));
if (withEnzyme) requires.push(join(canvasRoot, 'tasks/helpers/enzyme_setup'));
return gulp.src(globs, { read: false }).pipe(
mocha({
ui: 'bdd',
require: requires,
})
);
}
const getTestGlobs = rootPath => [
join(canvasRoot, `${rootPath}/**/__tests__/**/*.js`),
join(canvasRoot, `!${rootPath}/**/__tests__/fixtures/**/*.js`),
];
const getRootGlobs = rootPath => [join(canvasRoot, `${rootPath}/**/*.js`)];
gulp.task('canvas:test:common', () => {
return runMocha(getTestGlobs('common'), { withDOM: true });
});
gulp.task('canvas:test:server', () => {
return runMocha(getTestGlobs('server'));
});
gulp.task('canvas:test:browser', () => {
return runMocha(getTestGlobs('public'), { withEnzyme: true, withDOM: true });
});
gulp.task('canvas:test:plugins', () => {
return runMocha(getTestGlobs('canvas_plugin_src'));
});
gulp.task('canvas:test', [
'canvas:test:plugins',
'canvas:test:common',
'canvas:test:server',
'canvas:test:browser',
]);
gulp.task('canvas:test:dev', () => {
gulp.watch(getRootGlobs('common'), ['canvas:test:common']);
gulp.watch(getRootGlobs('server'), ['canvas:test:server']);
gulp.watch(getRootGlobs('public'), ['canvas:test:browser']);
gulp.watch(getRootGlobs('canvas_plugin_src'), ['canvas:test:plugins']);
});
}