[test/functional/support] throw errors on invalid export usage

This commit is contained in:
spalger 2016-04-17 18:06:00 -07:00 committed by spalger
parent b63bfd2e0a
commit 263b55360f
3 changed files with 34 additions and 24 deletions

View file

@ -131,4 +131,4 @@ import { bdd, common, discoverPage, headerPage, settingsPage, scenarioManager }
});
});
}());
});
}());

View file

@ -129,5 +129,5 @@ import {
});
}); // end describe pagination
}); // end index result field sort
});
}());
}());

View file

@ -8,28 +8,38 @@ import VisualizePage from './pages/visualize_page';
const kbnInternVars = global.__kibana__intern__;
const NOT_AVAILABLE = {
toString() { return 'NOT AVAILABLE UNTIL TESTS START TO RUN'; }
};
exports.bdd = kbnInternVars.bdd;
exports.intern = kbnInternVars.intern;
exports.config = exports.intern.config;
exports.defaultTimeout = exports.config.defaultTimeout;
exports.scenarioManager = new ScenarioManager(url.format(exports.config.servers.elasticsearch));
export const bdd = kbnInternVars.bdd;
export const intern = kbnInternVars.intern;
export const config = intern.config;
export const defaultTimeout = config.defaultTimeout;
export const scenarioManager = new ScenarioManager(url.format(config.servers.elasticsearch));
defineDelayedExport('remote', (suite) => suite.remote);
defineDelayedExport('common', () => new Common());
defineDelayedExport('discoverPage', () => new DiscoverPage());
defineDelayedExport('headerPage', () => new HeaderPage());
defineDelayedExport('settingsPage', () => new SettingsPage());
defineDelayedExport('visualizePage', () => new VisualizePage());
export let remote = NOT_AVAILABLE;
export let common = NOT_AVAILABLE;
export let discoverPage = NOT_AVAILABLE;
export let settingsPage = NOT_AVAILABLE;
export let headerPage = NOT_AVAILABLE;
export let visualizePage = NOT_AVAILABLE;
// creates an export for values that aren't actually avaialable until
// until tests start to run. These getters will throw errors if the export
// is accessed before it's available, hopefully making debugging easier.
// Once the first before() handler is called the onEarliestBefore() handlers
// will fire and rewrite all of these exports to be their correct value.
function defineDelayedExport(name, define) {
Object.defineProperty(exports, name, {
configurable: true,
get() {
throw new TypeError(
'remote is not available until tests start to run. Move your ' +
'usage of the import inside a test setup hook or a test itself.'
);
}
});
kbnInternVars.onEarliestBefore(function () {
remote = this.remote;
common = new Common();
discoverPage = new DiscoverPage();
headerPage = new HeaderPage();
settingsPage = new SettingsPage();
visualizePage = new VisualizePage();
});
kbnInternVars.onEarliestBefore(function () {
Object.defineProperty(exports, name, {
value: define(this),
});
});
}