ng-dependencies
Version:
> Analyze javascript code using [esprima](https://github.com/ariya/esprima) and return a list of objects representing the module dependencies in the code.
122 lines (107 loc) • 3.28 kB
JavaScript
require('chai').should();
var lookup = require('../');
describe('lookup', function () {
it('should return empty dependency list and empty module map for non-angular files', function () {
var source = 'var jquery = {};';
var deps = {
dependencies: [],
modules: {}
};
lookup(source).should.eql(deps);
});
it('should capture simple module declaration', function () {
var source = 'angular.module("test", []);';
var deps = {
dependencies: ['ng'],
modules: {
'test': []
}
};
lookup(source).should.eql(deps);
});
it('should capture the module dependencies', function () {
var source = 'angular.module("test", ["one"]);';
var deps = {
dependencies: ['ng', 'one'],
modules: {
'test': ['one']
}
};
lookup(source).should.eql(deps);
});
it('should capture module dependencies at root level', function () {
var source = 'angular.module("test");\nangular.module("another").controller("Ctrl", ["$scope", function ($scope) {}]);';
var deps = {
dependencies: ['ng', 'test', 'another'],
modules: {}
};
lookup(source).should.eql(deps);
});
it('should capture multiple module declarations', function () {
var source = 'angular.module("test", []);\nangular.module("another", ["that"]);';
var deps = {
dependencies: ['ng', 'that'],
modules: {
'test': [],
'another': ['that']
}
};
lookup(source).should.eql(deps);
});
it('should not include locally declared modules in `dependencies` list', function () {
var source = 'angular.module("test", []);\nangular.module("another", ["that", "test"]);';
var deps = {
dependencies: ['ng', 'that'],
modules: {
'test': [],
'another': ['that', 'test']
}
};
lookup(source).should.eql(deps);
});
it('should capture only one copy of duplicated module declaration', function () {
var source = 'angular.module("test", ["one"]);\nangular.module("test", ["another"]);';
var deps = {
dependencies: ['ng', 'another'],
modules: {
'test': ['another']
}
};
lookup(source).should.eql(deps);
});
it('should detect \'ng\' module declaration within angular itself', function () {
var source = 'function angularModule(){}; function modules(){angularModule(\'ng\')};';
var deps = {
dependencies: [],
modules: {
'ng': []
}
};
lookup(source).should.eql(deps);
});
it('should ignore import in source', function () {
var source = 'import angular from "angular";\n' +
'angular.module("test", []);';
var deps = {
dependencies: ['ng'],
modules: {
'test': []
}
};
lookup(source).should.eql(deps);
});
it('should capture simple module declaration using a variable instead of a literal module name', function () {
var source = 'var moduleName = "test"; angular.module(moduleName, []);';
var deps = {
dependencies: ['ng'],
modules: {
'test': []
}
};
lookup(source).should.eql(deps);
});
it('should not crash on uninitialized variables', function () {
var source = 'var uninitializedVar;';
lookup(source);
});
});