'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.0', 'package.json hat nicht Version 3.0.0.'); assert(solution.version === '3.0.0.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(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(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.');