'use strict'; var fs = require('fs'); function read(path) { return fs.readFileSync(path, 'utf8'); } function json(path) { return JSON.parse(read(path)); } function assert(name, condition) { if (!condition) { throw new Error('FAILED: ' + name); } console.log('OK:', name); } var packageJson = json('package.json'); var solution = json('config/package-solution.json').solution; var manifest = json('src/extensions/currentNavigation/CurrentNavigationApplicationCustomizer.manifest.json'); var app = read('src/extensions/currentNavigation/CurrentNavigationApplicationCustomizer.ts'); var renderer = read('src/extensions/currentNavigation/CurrentNavigationRenderer.ts'); var service = read('src/services/CurrentNavigationTaxonomyService.ts'); assert('package version', packageJson.version === '1.1.4'); assert('solution version', solution.version === '1.1.4.0'); assert('tenant deployment', solution.skipFeatureDeployment === true); assert('component type', manifest.extensionType === 'ApplicationCustomizer'); assert('safe renderer', renderer.indexOf('innerHTML') < 0 && app.indexOf('innerHTML') < 0); assert('does not use Top placeholder', app.indexOf('PlaceholderName.Top') < 0); assert('targets modern SiteNavigation', app.indexOf('data-automationid="SiteNavigation"') >= 0); assert('targets SharePoint ms-Nav fallback', app.indexOf('nav[role="navigation"].ms-Nav') >= 0 && app.indexOf("querySelector('.ms-Nav-navItems')") >= 0); assert('native navigation is not hidden', app.indexOf('current-navigation-managed') < 0 && read('src/extensions/currentNavigation/CurrentNavigation.module.scss').indexOf(':not(#CurrentNavigationHost)') < 0); assert('whole row hover', read('src/extensions/currentNavigation/CurrentNavigation.module.scss').indexOf('.current-navigation-row:hover') >= 0); assert('custom navigation is appended below SiteNavigation', app.indexOf('this.siteNavigation.appendChild(this.host)') >= 0); assert('observer cleanup', app.indexOf('observer.disconnect()') >= 0); assert('treeview semantics', renderer.indexOf("setAttribute('role', root ? 'tree' : 'group')") >= 0 && renderer.indexOf("setAttribute('role', 'treeitem')") >= 0); assert('legacy selector compatibility', renderer.indexOf(':scope') < 0); assert('local properties loaded', service.indexOf('LocalCustomProperties') >= 0); assert('root property present', read('src/services/CurrentNavigationCore.ts').indexOf('CurrentNavigation.Root') >= 0); assert('hidden property present', read('src/services/CurrentNavigationCore.ts').indexOf('CurrentNavigation.Hidden') >= 0); console.log('CurrentNavigation static tests passed.');