UNPKG

criticizer

Version:

Linting for Angular applications, following angular.io/styleguide.

253 lines (247 loc) 9.15 kB
import {assertFailure, assertSuccess} from './testHelper'; describe('directive-selector-name', () => { describe('invalid directive selectors', () => { it('should fail when directive named kebab-case', () => { let source = ` @Directive({ selector: '[sg-foo-bar]' }) class Test {}`; assertFailure('directive-selector', source, { message: 'The selector of the directive "Test" should be named camelCase ($$02-06$$)', startPosition: { line: 2, character: 18 }, endPosition: { line: 2, character: 32 } }, ['attribute','sg','camelCase']); }); }); describe('valid directive selector, using multiple selectors', () => { it('should succeed when set valid selector in @Directive', () => { let source = ` @Directive({ selector: 'test[sgBarFoo].test:not(p)' }) class Test {}`; assertSuccess('directive-selector', source, ['attribute','sg','camelCase']); }); }); describe('valid directive selector, using multiple selectors, element type and kebap-case', () => { it('should succeed when set valid selector in @Directive', () => { let source = ` @Directive({ selector: 'sg-bar-foo[test].test:not(p)' }) class Test {}`; assertSuccess('directive-selector', source, ['element','sg','kebab-case']); }); }); describe('invalid directive selector, using multiple selectors', () => { it('should succeed when set valid selector in @Directive and multiple selectors', () => { let source = ` @Directive({ selector: 'test[sg-bar-foo].test:not(p)' }) class Test {}`; assertFailure('directive-selector', source, { message: 'The selector of the directive "Test" should be named camelCase ($$02-06$$)', startPosition: { line: 2, character: 18 }, endPosition: { line: 2, character: 48 } }, ['attribute','sg','camelCase']); }); }); }); describe('directive-selector-prefix', () => { describe('invalid directive selectors', () => { it('should fail when directive used without prefix', () => { let source = ` @Directive({ selector: '[fooBar]' }) class Test {}`; assertFailure('directive-selector', source, { message: 'The selector of the directive "Test" should have prefix "sg" ($$02-08$$)', startPosition: { line: 2, character: 22 }, endPosition: { line: 2, character: 32 } }, ['attribute','sg','camelCase']); }); it('should fail when directive used without longer prefix', () => { let source = ` @Directive({ selector: '[fooBar]' }) class Test {}`; assertFailure('directive-selector', source, { message: 'The selector of the directive "Test" should have prefix "fo" ($$02-08$$)', startPosition: { line: 2, character: 22 }, endPosition: { line: 2, character: 32 } }, ['attribute','fo','camelCase']); }); it('should fail when directive used without prefix applying multiple prefixes', () => { let source = ` @Directive({ selector: '[fooBar]' }) class Test {}`; assertFailure('directive-selector', source, { message: 'The selector of the directive "Test" should have one of the prefixes: sg,ng,mg ($$02-08$$)', startPosition: { line: 2, character: 22 }, endPosition: { line: 2, character: 32 } }, ['attribute',['sg', 'ng', 'mg'],'camelCase']); }); it('should fail when directive used without prefix applying multiple prefixes and selectors', () => { let source = ` @Directive({ selector: 'baz.bar[fooBar]' }) class Test {}`; assertFailure('directive-selector', source, { message: 'The selector of the directive "Test" should have one of the prefixes: sg,ng,mg ($$02-08$$)', startPosition: { line: 2, character: 22 }, endPosition: { line: 2, character: 39 } }, ['attribute',['sg', 'ng', 'mg'],'camelCase']); }); }); describe('valid directive selector', () => { it('should succeed when set valid selector in @Directive', () => { let source = ` @Directive({ selector: '[sgBarFoo]' }) class Test {}`; assertSuccess('directive-selector', source, ['attribute','sg','camelCase']); }); it('should succeed when set valid selector in @Directive using multiple prefixes', () => { let source = ` @Directive({ selector: '[ngBarFoo]' }) class Test {}`; assertSuccess('directive-selector', source, ['attribute',['ng','sg','mg'],'camelCase']); }); it('should succeed when set valid selector in @Directive using multiple prefixes and selectors', () => { let source = ` @Directive({ selector: 'bar[ngBarFoo].baz' }) class Test {}`; assertSuccess('directive-selector', source, ['attribute',['ng','sg','mg'],'camelCase']); }); }); }); describe('directive-selector-type', () => { describe('invalid directive selectors', () => { it('should fail when directive used as attribute', () => { let source = ` @Directive({ selector: 'foo-bar' }) class Test {}`; assertFailure('directive-selector', source, { message: 'The selector of the directive "Test" should be used as attribute ($$02-06$$)', startPosition: { line: 2, character: 18 }, endPosition: { line: 2, character: 27 } }, ['attribute','sg','camelCase']); }); }); describe('invalid directive selector, using multiple selectors', () => { it('should fail when set non attribute selectors in @Directive', () => { let source = ` @Directive({ selector: 'test.test:not(p)' }) class Test {}`; assertFailure('directive-selector', source, { message: 'The selector of the directive "Test" should be used as attribute ($$02-06$$)', startPosition: { line: 2, character: 18 }, endPosition: { line: 2, character: 36 } }, ['attribute','sg','camelCase']); }); }); describe('valid directive selector', () => { it('should succeed when set valid selector in @Directive', () => { let source = ` @Directive({ selector: '[sgBarFoo]' }) class Test {}`; assertSuccess('directive-selector', source, ['attribute','sg','camelCase']); }); it('should not validate @Component', () => { let source = ` @Component({ selector: 'sg-bar-foo' }) class Test {}`; assertSuccess('directive-selector', source, ['attribute','sg','camelCase']); }); it('should succeed when set valid selector using multiple selectors in @Directive', () => { let source = ` @Directive({ selector: 'baz[sgBarFoo].bai' }) class Test {}`; assertSuccess('directive-selector', source, ['attribute','sg','camelCase']); }); it('should succeed when set valid selector using multiple selectors in @Directive', () => { let source = ` @Directive({ selector: '[past][formControlName],[past][formControl],[past][ngModel]', providers: [{ provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePastValidator), multi: true, }], host: {'[attr.date]': 'date? "" : null'}, }) class Test {}`; assertSuccess('directive-selector', source, ['attribute', 'ng','camelCase']); }); }); });