pp-parachute
Version:
Airdrop JS Applications
66 lines (57 loc) • 2.6 kB
JavaScript
var manager = require('../../shared/manager');
var path = require('path');
describe('Application Manager', function () {
var pathToTest1 = path.resolve(__dirname + '/../test_apps/test1/parachute.js');
var pathToTest2 = path.resolve(__dirname + '/../test_apps/test2/parachute.js');
var app1 = require(pathToTest1);
var app2 = require(pathToTest2);
beforeEach(function() {
manager.clear();
});
it('should load an application', function() {
var app = require(pathToTest1);
expect(function() {
manager.loadApplication('test1', pathToTest1);
}).not.toThrow();
expect(manager.getApplication('test1')).toBe(app);
});
it('should set an environment based on a url', function() {
var url = '/foo/bar/1'; //test app 1 env1
manager.loadApplication('test1', pathToTest1);
manager.setEnvironmentForUrl(url);
expect(manager.getCurrentEnvironment()).toBe(app1.environments['env1']);
});
it('should return an asset root for the current environment', function() {
var url = '/foo/bar/1'; //test app 1 env1
manager.loadApplication('test1', pathToTest1);
manager.setEnvironmentForUrl(url);
expect(manager.getAssetRoot()).toBe(app1.environments['env1'].getAssetRoot());
manager.clear();
expect(manager.getAssetRoot()).toBe(null);
});
it('should return the current environment', function() {
var url = '/foo/bar/1'; //test app 1 env1
manager.loadApplication('test1', pathToTest1);
manager.setEnvironmentForUrl(url);
expect(manager.getCurrentEnvironment()).toBe(app1.environments['env1']);
manager.clear();
expect(manager.getCurrentEnvironment()).toBe(null);
});
it('should require the application being loaded to exist', function() {
expect(function() {
manager.loadApplication('not_here', '/foobar/is/not/here.js');
}).toThrow();
});
it('should get view data', function() {
var file = '/path/to/view.jade';
var url = '/foo/bar/1'; //test app 1 env1
manager.loadApplication('test1', pathToTest1);
manager.setEnvironmentForUrl(url);
manager.getCurrentEnvironment().setViewFile(file);
var data = manager.getViewData();
expect(data.viewFile).toBe('view');
expect(data.viewDirectory.lastIndexOf('/path/to')).toBe(data.viewDirectory.length - ('/path/to'.length));
expect(data.viewEngine).toBe('jade');
});
//todo test all fns called form the command line
});