74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { expect } from 'chai';
 | 
						|
 | 
						|
import { AbstractTemplateParser } from '../../src/parsers/abstract-template.parser';
 | 
						|
 | 
						|
class TestTemplateParser extends AbstractTemplateParser {
 | 
						|
 | 
						|
	public isAngularComponent(filePath: string): boolean {
 | 
						|
		return this._isAngularComponent(filePath);
 | 
						|
	}
 | 
						|
 | 
						|
	public extractInlineTemplate(contents: string): string {
 | 
						|
		return this._extractInlineTemplate(contents);
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
describe('AbstractTemplateParser', () => {
 | 
						|
 | 
						|
	let parser: TestTemplateParser;
 | 
						|
 | 
						|
	beforeEach(() => {
 | 
						|
		parser = new TestTemplateParser();
 | 
						|
	});
 | 
						|
 | 
						|
	it('should recognize js extension as angular component', () => {
 | 
						|
		const result = parser.isAngularComponent('test.js');
 | 
						|
		expect(result).to.equal(true);
 | 
						|
	});
 | 
						|
 | 
						|
	it('should recognize ts extension as angular component', () => {
 | 
						|
		const result = parser.isAngularComponent('test.ts');
 | 
						|
		expect(result).to.equal(true);
 | 
						|
	});
 | 
						|
 | 
						|
	it('should not recognize html extension as angular component', () => {
 | 
						|
		const result = parser.isAngularComponent('test.html');
 | 
						|
		expect(result).to.equal(false);
 | 
						|
	});
 | 
						|
 | 
						|
	it('should extract inline template', () => {
 | 
						|
		const contents = `
 | 
						|
			@Component({
 | 
						|
				selector: 'test',
 | 
						|
				template: '<p translate>Hello World</p>'
 | 
						|
			})
 | 
						|
			export class TestComponent { }
 | 
						|
		`;
 | 
						|
		const template = parser.extractInlineTemplate(contents);
 | 
						|
		expect(template).to.equal('<p translate>Hello World</p>');
 | 
						|
	});
 | 
						|
 | 
						|
	it('should extract inline template spanning multiple lines', () => {
 | 
						|
		const contents = `
 | 
						|
			@Component({
 | 
						|
				selector: 'test',
 | 
						|
				template: '
 | 
						|
					<p>
 | 
						|
						Hello World
 | 
						|
					</p>
 | 
						|
				',
 | 
						|
				styles: ['
 | 
						|
					p {
 | 
						|
						color: red;
 | 
						|
					}
 | 
						|
				']
 | 
						|
			})
 | 
						|
			export class TestComponent { }
 | 
						|
		`;
 | 
						|
		const template = parser.extractInlineTemplate(contents);
 | 
						|
		expect(template).to.equal('\n\t\t\t\t\t<p>\n\t\t\t\t\t\tHello World\n\t\t\t\t\t</p>\n\t\t\t\t');
 | 
						|
	});
 | 
						|
 | 
						|
});
 |