51 lines
2.9 KiB
JavaScript
51 lines
2.9 KiB
JavaScript
'use strict';
|
|
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
var root = path.resolve(__dirname, '..');
|
|
var passed = 0;
|
|
|
|
function read(file) { return fs.readFileSync(path.join(root, file), 'utf8'); }
|
|
function json(file) { return JSON.parse(read(file)); }
|
|
function assert(condition, message) {
|
|
if (!condition) { throw new Error(message); }
|
|
passed++;
|
|
}
|
|
|
|
['config/config.json', 'config/package-solution.json', 'config/serve.json',
|
|
'src/extensions/customBranding/CustomBrandingApplicationCustomizer.manifest.json',
|
|
'examples/custom-branding.example.json']
|
|
.forEach(function (file) { json(file); passed++; });
|
|
|
|
var packageJson = json('package.json');
|
|
var solution = json('config/package-solution.json').solution;
|
|
var serveText = read('config/serve.json').toLowerCase();
|
|
var appSource = read('src/extensions/customBranding/CustomBrandingApplicationCustomizer.ts');
|
|
var rendererSource = read('src/extensions/customBranding/BrandingDomRenderer.ts');
|
|
var classicSource = read('classic/custom-branding-classic.js');
|
|
|
|
assert(packageJson.version === '3.0.3', 'package.json hat nicht Version 3.0.3.');
|
|
assert(solution.version === '3.0.3.0', 'Solution-Version ist inkonsistent.');
|
|
assert(solution.skipFeatureDeployment === true, 'Tenantweite Bereitstellung ist nicht aktiviert.');
|
|
assert(!solution.features, 'Die alte web-scoped Feature-Registrierung ist noch vorhanden.');
|
|
assert(!fs.existsSync(path.join(root, 'sharepoint/assets/elements.xml')), 'elements.xml muss entfernt sein.');
|
|
assert(serveText.indexOf('onclick') < 0, 'serve.json enthaelt ein Event-Attribut.');
|
|
assert(serveText.indexOf('placeholdertop') >= 0, 'serve.json verwendet nicht das echte Schema.');
|
|
assert(rendererSource.indexOf('innerHTML') < 0 && appSource.indexOf('innerHTML') < 0, 'Der moderne Renderer darf innerHTML nicht verwenden.');
|
|
assert(classicSource.indexOf('innerHTML') < 0, 'Die Classic-Runtime darf innerHTML nicht verwenden.');
|
|
assert(classicSource.indexOf('~sitecollection/SitePages/PortalSettings.aspx') >= 0,
|
|
'Der Standard-Footer fehlt in der Classic-Runtime.');
|
|
assert(appSource.indexOf('changedEvent.remove') >= 0, 'Lifecycle-Cleanup fuer changedEvent fehlt.');
|
|
assert(appSource.indexOf('_onTopPlaceholderDisposed') >= 0 && appSource.indexOf('_onBottomPlaceholderDisposed') >= 0,
|
|
'Top- und Bottom-Placeholder brauchen unabhaengige Dispose-Handler.');
|
|
assert(appSource.indexOf("'CustomBrandingTopHost'") >= 0 && appSource.indexOf("'CustomBrandingBottomHost'") >= 0,
|
|
'Stabile Branding-Hosts fehlen.');
|
|
assert(appSource.indexOf("'1px solid #edebe9'") >= 0 && appSource.indexOf('Segoe UI Web') >= 0,
|
|
'SharePoint-Standardschrift und neutraler Host-Rahmen fehlen.');
|
|
assert(packageJson.scripts.package.indexOf('npm test') === 0, 'Paketierung muss mit Tests beginnen.');
|
|
assert(!packageJson.dependencies['@microsoft/sp-dialog'], 'Nicht verwendete Dialog-Abhaengigkeit ist noch vorhanden.');
|
|
|
|
new Function(classicSource);
|
|
passed++;
|
|
console.log('Statische Assets: ' + passed + ' Pruefungen erfolgreich.');
|