Skip to content
This repository was archived by the owner on Apr 4, 2025. It is now read-only.

Commit 64db07d

Browse files
welborniobtford
authored andcommitted
chore: enable ngHintModules in hint.js. and tests passing
1 parent 046b771 commit 64db07d

12 files changed

+133
-16
lines changed

Diff for: hint.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ var AVAILABLE_MODULES = [
2020
// 'ngHintDom',
2121
'ngHintEvents',
2222
// 'ngHintInterpolation',
23-
// 'ngHintModules',
23+
'ngHintModules',
2424
'ngHintScopes'
2525
];
2626

Diff for: karma.conf.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ module.exports = function(config) {
1717
'test/*.spec.js'
1818
],
1919
preprocessors: {
20-
'hint.js': ['browserify']
20+
'hint.js': ['browserify'],
21+
//todo ethan - make this pattern less ugly
22+
'test/{modules,getModule,getNgAppMod,getUndeclaredModules,getUnusedModules,hasNameSpace,inAttrsOrClasses,normalizeAttribute}.spec.js': ['browserify']
2123
},
2224
browsers: ['Chrome'],
2325
browserify: {

Diff for: src/modules/angular-hint-modules/display.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ var hintLog = angular.hint = require('./../log'),
33

44
module.exports = function(modules) {
55
modules.forEach(function(module) {
6-
hintLog.logMessage(MODULE_NAME, module.message, module.severity);
6+
hintLog.log(MODULE_NAME, module.message, module.severity);
77
});
88
};

Diff for: src/modules/angular-hint-modules/getNgAppMod.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ var hintLog = angular.hint = require('./../log'),
33
SEVERITY_ERROR = 1;
44
module.exports = function(attrs, ngAppFound) {
55
if(attrs['ng-app'] && ngAppFound) {
6-
hintLog.logMessage(MODULE_NAME, 'ng-app may only be included once. The module "' +
6+
hintLog.log(MODULE_NAME, 'ng-app may only be included once. The module "' +
77
attrs['ng-app'].value + '" was not used to bootstrap because ng-app was already included.',
88
SEVERITY_ERROR);
99
}

Diff for: test/getModule.spec.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
var getModule = require('../src/modules/angular-hint-modules/getModule');
2+
var modData = require('../src/modules/angular-hint-modules/moduleData');
3+
4+
describe('getModule()', function() {
5+
it('should return the correct module', function() {
6+
var CREATED = true, LOADED = false;
7+
modData.loadedModules['testLoaded'] = {name: 'testLoaded'};
8+
modData.createdModules['testCreated'] = {name: 'testCreated'};
9+
var res1 = getModule('testCreated', CREATED);
10+
var res2 = getModule('testLoaded', LOADED);
11+
expect(res1.name).toBe('testCreated');
12+
expect(res2.name).toBe('testLoaded');
13+
});
14+
});

Diff for: test/getNgAppMod.spec.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
var getNgAppMod = require('../src/modules/angular-hint-modules/getNgAppMod');
2+
var hintLog = angular.hint;
3+
4+
describe('getNgAppMod()', function() {
5+
it('should return the value of the ng-app attribute', function() {
6+
var attributes = {
7+
'width': {value: '10px'},
8+
'id': {value: 'idName'},
9+
'ng-app': {value: 'testModule'}
10+
};
11+
var res = getNgAppMod(attributes);
12+
expect(res).toBe('testModule');
13+
});
14+
15+
it('should log if multiple ng-apps are detected', function() {
16+
var attributes = {
17+
'width': {value: '10px'},
18+
'id': {value: 'idName'},
19+
'ng-app': {value: 'testModule'}
20+
};
21+
var foundNgApp = getNgAppMod(attributes, false);
22+
getNgAppMod(attributes, foundNgApp);
23+
var log = hintLog.flush();
24+
expect(log.Modules.error).toEqual(['ng-app may only be included once. The module ' +
25+
'"testModule" was not used to bootstrap because ng-app was already included.']);
26+
});
27+
});

Diff for: test/getUndeclaredModules.spec.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
var getUndeclaredModules = require('../src/modules/angular-hint-modules/getUndeclaredModules');
2+
3+
describe('getUndeclaredModules()', function() {
4+
it('should get undeclared modules', function() {
5+
var loadedModules = {};
6+
loadedModules['neverDeclared'] = 'neverDeclared';
7+
var res = getUndeclaredModules(loadedModules);
8+
expect(res[0].message).toBe('Module "neverDeclared" was loaded but does not exist.');
9+
});
10+
});

Diff for: test/getUnusedModules.spec.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
var getUnusedModules = require('../src/modules/angular-hint-modules/getUnusedModules');
2+
3+
describe('getUnusedModules()', function() {
4+
it('should get unused modules', function() {
5+
var createdModules = {};
6+
createdModules['neverLoaded'] = {name: 'neverLoaded'};
7+
var res = getUnusedModules(createdModules);
8+
expect(res[0].message).toBe('Module "neverLoaded" was created but never loaded.');
9+
});
10+
});

Diff for: test/hasNameSpace.spec.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
var hasNameSpace = require('../src/modules/angular-hint-modules/hasNameSpace');
2+
var hintLog = angular.hint;
3+
4+
describe('hasNameSpace()', function() {
5+
afterEach(function() {
6+
hintLog.flush();
7+
});
8+
9+
it('should check that a module has a correctly formatted name', function() {
10+
expect(hasNameSpace('MyApp')).toBe(false);
11+
expect(hasNameSpace('myapp')).toBe(false);
12+
expect(hasNameSpace('myApp')).toBe(true);
13+
});
14+
});

Diff for: test/inAttrsOrClasses.spec.js

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
var inAttrsOrClasses = require('../src/modules/angular-hint-modules/inAttrsOrClasses');
2+
3+
describe('inAttrsOrClasses()', function() {
4+
it('should identify if ng-view exists in the attributes', function() {
5+
var attrs = [
6+
{nodeName: 'id', value:'#testVal'},
7+
{nodeName: 'width', value:'100px'},
8+
{nodeName: 'ng-view', value:''}];
9+
var res = inAttrsOrClasses(attrs);
10+
expect(res).toBe(true);
11+
});
12+
it('should identify if ng-view exists in the class attribute', function() {
13+
var attrs = [
14+
{nodeName: 'id', value:'#testVal'},
15+
{nodeName: 'width', value:'100px'},
16+
{nodeName: 'class', value:'ng-view'}];
17+
var res = inAttrsOrClasses(attrs);
18+
expect(res).toBe(true);
19+
});
20+
it('should identify if ng-view does not exist', function() {
21+
var attrs = [
22+
{nodeName: 'id', value:'#testVal'},
23+
{nodeName: 'width', value:'100px'},
24+
{nodeName: 'height', value:'auto'}];
25+
var res = inAttrsOrClasses(attrs);
26+
expect(res).toBe(undefined);
27+
});
28+
});

Diff for: test/modules.xspec.js renamed to test/modules.spec.js

+13-12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
var hintLog = angular.hint;
2-
//var start = require('./src/start');
3-
var modData = require('./src/moduleData');
2+
var start = require('../src/modules/angular-hint-modules/start');
3+
var modData = require('../src/modules/angular-hint-modules/moduleData');
44

55
describe('hintModules', function() {
66
beforeEach(function() {
@@ -71,11 +71,11 @@ describe('hintModules', function() {
7171
start();
7272
var log = hintLog.flush();
7373
expect(log.Modules.suggestion[0]).toBe('The best practice for' +
74-
' module names is to use lowerCamelCase or dotted.segments. Check the name of "testmodule".');
74+
' module names is to use lowerCamelCase. Check the name of "testmodule".');
7575

7676
angular.module('Testmodule', []);
7777
expect(hintLog.flush().Modules.suggestion[0]).toBe('The best practice for' +
78-
' module names is to use lowerCamelCase or dotted.segments. Check the name of "Testmodule".');
78+
' module names is to use lowerCamelCase. Check the name of "Testmodule".');
7979
});
8080
});
8181

@@ -87,14 +87,15 @@ describe('hintModules integration', function() {
8787
modData.loadedModules = {};
8888
modData.createdMulti = {};
8989

90-
angular.module('ngHintControllers', []);
91-
angular.module('ngHintDirectives', []);
92-
angular.module('ngHintDom', []);
93-
angular.module('ngHintEvents', []);
94-
angular.module('ngHintInterpolation', []);
95-
angular.module('ngHintScopes', []);
96-
angular.module('ng', []);
97-
angular.module('ngLocale', []);
90+
// this blows other modules up sky high
91+
//angular.module('ngHintControllers', []);
92+
//angular.module('ngHintDirectives', []);
93+
//angular.module('ngHintDom', []);
94+
//angular.module('ngHintEvents', []);
95+
//angular.module('ngHintInterpolation', []);
96+
//angular.module('ngHintScopes', []);
97+
//angular.module('ng', []);
98+
//angular.module('ngLocale', []);
9899

99100
start();
100101
expect(hintLog.flush()['Modules']).not.toBeDefined();

Diff for: test/normalizeAttribute.spec.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
var normalizeAttribute = require('../src/modules/angular-hint-modules/normalizeAttribute');
2+
3+
describe('normalizeAttribute()', function() {
4+
it('should normalize attribute by stripping optional parameters', function() {
5+
var testAttrs = ['data:ng-click','x:ng:src','ng:href'];
6+
testAttrs = testAttrs.map(function(x){return normalizeAttribute(x);});
7+
expect(testAttrs[0]).toBe('ng-click');
8+
expect(testAttrs[1]).toBe('ng-src');
9+
expect(testAttrs[2]).toBe('ng-href');
10+
});
11+
});

0 commit comments

Comments
 (0)