aurelia-bundler
Version:
A library for bundling JavaScript, HTML and CSS for use with SystemJS.
153 lines (136 loc) • 3.63 kB
text/typescript
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);
});
});