Skip to content

Commit

Permalink
test(bundler): better client reset
Browse files Browse the repository at this point in the history
  • Loading branch information
thepian committed Mar 8, 2015
1 parent 9a1acd1 commit eb6495f
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 21 deletions.
41 changes: 25 additions & 16 deletions lib/client/index.js
Expand Up @@ -14,18 +14,23 @@ var fs = require('fs'),
log = require('../utils/log'),
systemAssets = require('./system');

// Determine if assets should be (re)packed on startup
var packAssets = process.env['SS_PACK'];

// Set defaults
var options = {
packedAssets: packAssets || false,
liveReload: ['code', 'css', 'static', 'templates', 'views'],
defaultEntryInit: 'require("/entry");',
urls: {
var options = {};

function setDefaultOptions(options) {

// Determine if assets should be (re)packed on startup
var packAssets = process.env['SS_PACK'];

//TODO packAssets vs packedAssets
options.packedAssets = packAssets || false;

options.liveReload = ['code', 'css', 'static', 'templates', 'views'];
options.defaultEntryInit = 'require("/entry");';
options.urls = {
assets: '/assets/'
},
dirs: {
};
options.dirs = {
client: '/client',
code: '/client/code',
css: '/client/css',
Expand All @@ -34,8 +39,10 @@ var options = {
templates: '/client/templates',
views: '/client/views',
workers: '/client/workers'
}
};
};
}

setDefaultOptions(options);

// Store each client as an object
var clients = {};
Expand Down Expand Up @@ -66,7 +73,6 @@ module.exports = function(ss, router) {
formatters.add('html');
formatters.add('map');


systemAssets.load();

// Return API
Expand All @@ -75,6 +81,7 @@ module.exports = function(ss, router) {
templateEngine: templateEngine,
assets: systemAssets,
options: options,
needToPackAssets: options.packedAssets,

// Merge optional options
set: function(newOption) {
Expand Down Expand Up @@ -167,10 +174,11 @@ module.exports = function(ss, router) {
systemAssets.send('code', 'init', options.defaultEntryInit);

if (options.packedAssets) {
var api = this;

// Attempt to find and serve existing pre-packed assets
// If unsuccessful, assets will be re-packed automatically
if (!packAssets) {
if (!this.needToPackAssets) {
log.info('i'.green, 'Attempting to find pre-packed assets... (force repack with SS_PACK=1)'.grey);
ss.bundler.forEach(function(bundler) {
var id = options.packedAssets.id || bundler.latestPackedId;
Expand All @@ -179,13 +187,13 @@ module.exports = function(ss, router) {
log.info('✓'.green, ('Serving client \'' + bundler.client.name + '\' using pre-packed assets (ID ' + bundler.client.id + ')').grey);
} else {
log.info('!'.red, ('Unable to find pre-packed assets for \'' + bundler.client.name + '\'. All assets will be repacked').grey);
packAssets = true;
api.needToPackAssets = true;
}
});
}

// Pack Assets
if (packAssets) {
if (this.needToPackAssets) {
for (var name in clients) {
if (clients.hasOwnProperty(name)) {
ss.bundler.pack(clients[name]);
Expand All @@ -210,6 +218,7 @@ module.exports = function(ss, router) {

forget: function() {
clients = {};
setDefaultOptions(options);
}
};
};
3 changes: 3 additions & 0 deletions lib/client/serve/ondemand.js
Expand Up @@ -24,6 +24,7 @@ module.exports = function(ss, router, options) {
function serve(processor) {
return function(request, response) {
var path = utils.parseUrl(request.url);
//TODO packAssets vs packedAssets
if (options.packAssets && queryCache[path]) {
return utils.serve.js(queryCache[path], response);
} else {
Expand All @@ -50,6 +51,7 @@ module.exports = function(ss, router, options) {
client: params.client,
clientId: params.ts,
//pathPrefix: options.globalModules? null : path,
//TODO packAssets vs packedAssets
compress: options.packAssets
}, function(js) {
output.push(js);
Expand All @@ -70,6 +72,7 @@ module.exports = function(ss, router, options) {
params = qs.parse(thisUrl.query);

return bundler.get(params).asset.worker(path, {
//TODO packAssets vs packedAssets
compress: options.packAssets
}, cb);
}
Expand Down
1 change: 1 addition & 0 deletions test/unit/client/bundler/default.test.js
Expand Up @@ -159,6 +159,7 @@ describe('default bundler', function () {
options.defaultEntryInit = origDefaultEntryInit;

ss.client.assets.unload();
ss.client.forget();
ss.client.assets.load();
});

Expand Down
31 changes: 26 additions & 5 deletions test/unit/client/index.test.js
Expand Up @@ -152,20 +152,41 @@ describe('client asset manager index', function () {
var view = require('../../../lib/client/view');

describe('unpacked #view',function() {
it('should render the SS view');

beforeEach(function() {

// back to initial client state
ss.client.unload();
ss.client.assets.unload();
ss.client.forget();
ss.client.assets.load();

// options and load client
options.packedAssets = false;
ss.client.load();
});

afterEach(function() {
ss.client.unload();
});

it('should render the SS view');

});

describe('packed #view', function() {

options.packedAssets = true;

beforeEach(function() {

options.defaultEntryInit = origDefaultEntryInit;

ss.client.load();
// back to initial client state
ss.client.unload();
ss.client.assets.unload();
ss.client.forget();
ss.client.assets.load();

// options and load client
options.packedAssets = true;
ss.client.load();
});

Expand Down

0 comments on commit eb6495f

Please sign in to comment.