UNPKG

aurelia-bundler

Version:

A library for bundling JavaScript, HTML and CSS for use with SystemJS.

153 lines (136 loc) 3.63 kB
import { expect } from 'chai'; import { isSystem, isSystemJS, readConfig, serializeConfig } from '../lib/config-serializer'; describe('Config Serializer', () => { let inpCfg = 'System.config({ defaultJSExtensions: true })'; it('reads configuration from the config file', () => { let cfg = readConfig([inpCfg]); expect(cfg.defaultJSExtensions).to.be.true; }); it('can read configuration from SystemJS', () => { let systemJSCfg = 'SystemJS.config({ defaultJSExtensions: true })'; let cfg = readConfig([systemJSCfg]); expect(cfg.defaultJSExtensions).to.be.true; }); it('reads config from multiple files', () => { let inpCfg = 'System.config({ defaultJSExtensions: true })'; let inpCfg2 = 'System.config({ baseURL : "abc" })'; let cfg = readConfig([inpCfg, inpCfg2]); expect(cfg.defaultJSExtensions).to.be.true; expect(cfg.baseURL).to.be.equal('abc'); }); describe('Multiple config calls', () => { it('reads config from single file', () => { let inpCfg = ` SystemJS.config({ packages: { "aurelia-animator-css": { "map": { "aurelia-metadata": "npm:aurelia-metadata@1.0.3", } } } }); SystemJS.config({ packages: { "siopa-skeleton": { "format": "amd" } } })`; let cfg = readConfig([inpCfg]); expect(cfg.packages['aurelia-animator-css'].map['aurelia-metadata']).to.be.equal('npm:aurelia-metadata@1.0.3'); expect(cfg.packages['siopa-skeleton'].format).to.be.equal('amd'); }); it('should extend the config not orverrite it', () => { let inpCfg = 'System.config({ defaultJSExtensions: true }); System.config({ baseURL : "abc" })'; let cfg = readConfig([inpCfg]); expect(cfg.defaultJSExtensions).to.be.true; expect(cfg.baseURL).to.be.equal('abc'); }); }); it('can serialize updated configuration', () => { let cfg = readConfig([inpCfg]); let outCfg = `System.config({ defaultJSExtensions: true, bundles: { "app-bundle.js": [ "app/boot", "app/main" ] } });`; cfg.bundles = { 'app-bundle.js': [ 'app/boot', 'app/main' ] }; let str = serializeConfig(cfg); expect(str).to.be.equal(outCfg); }); it('can serialize System configuration', () => { let cfg = readConfig([inpCfg]); let str = serializeConfig(cfg); let outCfg = `System.config({ defaultJSExtensions: true });`; expect(str).to.be.equal(outCfg); }); it('can serialize SystemJS configuration', () => { let cfg = readConfig([inpCfg]); let outCfg = `SystemJS.config({ defaultJSExtensions: true });`; let str = serializeConfig(cfg, true); expect(str).to.be.equal(outCfg); }); it('can detect System and/or SystemJS', () => { let inpCfg = 'System.config({ defaultJSExtensions: true })'; let inpCfg2 = 'SystemJS.config({ valueFrom2ndFile : true })'; expect(isSystem(inpCfg)).to.be.true; expect(isSystemJS(inpCfg2)).to.be.true; }); it('does not quote top-level keys', () => { let cfg = { defaultJSExtensions: true, baseURL: '', bundles: { 'app-bundle.js': [ 'app/boot', 'app/main' ] }, depCache: { a: 'b', c: 'd' }, map: {} }; let out = `System.config({ defaultJSExtensions: true, baseURL: "", bundles: { "app-bundle.js": [ "app/boot", "app/main" ] }, depCache: { "a": "b", "c": "d" }, map: {} });`; let str = serializeConfig(cfg); expect(str).to.be.equal(out); }); });