gerrit/polygerrit-ui/app/template_test_srcs/template_test.js
Viktar Donich 2f3ee89d02 Plugin popup() api
Changes to JS API:
- popups have backdrop and is centered
- plugin.popup() takes a string custom element name
- plugin.popup() returns an API for closing and reopening the popup
- plugin.deprecated.popup() takes Element (similar to GWT Plugin JS API)

Recommended usage:

``` js
  Gerrit.install(function(plugin) {
    const popup = plugin.popup('my-plugin-popup-simple');;
    // ... work
    popup.close();
    // ... more work
    popup.open();
  });

```

``` html
<dom-module id="my-plugin-popup-simple">
  <template>
    <div>popup popup popup popup popup </div>
  </template>
  <script>
    Polymer({is: 'my-plugin-popup-simple'});
  </script>
</dom-module>
```

Change-Id: Icb3f83d35f3c60915f12b77bc8a7d548d50d5695
2017-09-06 14:51:09 -07:00

108 lines
2.6 KiB
JavaScript

const fs = require('fs');
const twinkie = require('fried-twinkie');
/**
* For the purposes of template type checking, externs should be added for
* anything set on the window object. Note that sub-properties of these
* declared properties are considered something separate.
*
* @todo (beckysiegel) Gerrit's class definitions should be recognized in
* closure types.
*/
const EXTERN_NAMES = [
'Gerrit',
'GrAnnotation',
'GrAttributeHelper',
'GrChangeActionsInterface',
'GrChangeReplyInterface',
'GrDiffBuilder',
'GrDiffBuilderImage',
'GrDiffBuilderSideBySide',
'GrDiffBuilderUnified',
'GrDiffGroup',
'GrDiffLine',
'GrDomHooks',
'GrEtagDecorator',
'GrGapiAuth',
'GrGerritAuth',
'GrLinkTextParser',
'GrPluginEndpoints',
'GrPopupInterface',
'GrRangeNormalizer',
'GrReporting',
'GrReviewerUpdatesParser',
'GrThemeApi',
'moment',
'page',
'util',
];
fs.readdir('./polygerrit-ui/temp/behaviors/', (err, data) => {
if (err) {
console.log('error /polygerrit-ui/temp/behaviors/ directory');
}
const behaviors = data;
const externs = [];
for (const behavior of behaviors) {
externs.push({
path: `./polygerrit-ui/temp/behaviors/${behavior}`,
src: fs.readFileSync(
`./polygerrit-ui/temp/behaviors/${behavior}`, 'utf-8'),
});
}
let mappings = JSON.parse(fs.readFileSync(
`./polygerrit-ui/temp/map.json`, 'utf-8'));
// The directory is passed as arg2 by the test target.
const directory = process.argv[2];
if (directory) {
const mappingSpecificDirectory = {};
for (key of Object.keys(mappings)) {
if (directory === mappings[key].directory) {
mappingSpecificDirectory[key] = mappings[key];
}
}
mappings = mappingSpecificDirectory;
}
// If a particular file was passed by the user, don't test everything.
const file = process.argv[3];
if (file) {
const mappingSpecificFile = {};
for (key of Object.keys(mappings)) {
if (key.includes(file)) {
mappingSpecificFile[key] = mappings[key];
}
}
mappings = mappingSpecificFile;
}
externs.push({
path: 'custom-externs.js',
src: '/** @externs */' +
EXTERN_NAMES.map( name => { return `var ${name};`; }).join(' '),
});
const promises = [];
for (key of Object.keys(mappings)) {
if (mappings[key].html && mappings[key].js) {
promises.push(twinkie.checkTemplate(
mappings[key].html,
mappings[key].js,
'polygerrit.' + mappings[key].package,
externs
));
}
}
Promise.all(promises).then(() => {}, joinedErrors => {
if (joinedErrors) {
process.exit(1);
}
});
});