import { expect } from 'chai';
import { PipeParser } from '../../src/parsers/pipe.parser';
describe('PipeParser', () => {
	const templateFilename: string = 'test.template.html';
	let parser: PipeParser;
	beforeEach(() => {
		parser = new PipeParser();
	});
	it('should only extract string using pipe', () => {
		const contents = ``;
		const keys = parser.extract(contents, templateFilename).keys();
		expect(keys).to.deep.equal(['SomeKey_NotWorking']);
	});
	it('should extract string using pipe, but between quotes only', () => {
		const contents = ``;
		const keys = parser.extract(contents, templateFilename).keys();
		expect(keys).to.deep.equal(['user.settings.form.phone.placeholder']);
	});
	it('should extract interpolated strings using translate pipe', () => {
		const contents = `Hello {{ 'World' | translate }}`;
		const keys = parser.extract(contents, templateFilename).keys();
		expect(keys).to.deep.equal(['World']);
	});
	it('should extract interpolated strings when translate pipe is used in conjunction with other pipes', () => {
		const contents = `Hello {{ 'World' | translate | upper }}`;
		const keys = parser.extract(contents, templateFilename).keys();
		expect(keys).to.deep.equal(['World']);
	});
	it('should extract strings with escaped quotes', () => {
		const contents = `Hello {{ 'World\\'s largest potato' | translate }}`;
		const keys = parser.extract(contents, templateFilename).keys();
		expect(keys).to.deep.equal([`World's largest potato`]);
	});
	it('should extract strings with multiple escaped quotes', () => {
		const contents = `{{ 'C\\'est ok. C\\'est ok' | translate }}`;
		const keys = parser.extract(contents, templateFilename).keys();
		expect(keys).to.deep.equal([`C'est ok. C'est ok`]);
	});
	it('should extract interpolated strings using translate pipe in attributes', () => {
		const contents = ``;
		const keys = parser.extract(contents, templateFilename).keys();
		expect(keys).to.deep.equal(['Hello World']);
	});
	it('should extract bound strings using translate pipe in attributes', () => {
		const contents = ``;
		const keys = parser.extract(contents, templateFilename).keys();
		expect(keys).to.deep.equal(['Hello World']);
	});
	it('should not use a greedy regular expression', () => {
		const contents = `
			 
						{{ error }}
					
{{ message | translate }}
'; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal([]); }); it('should be able to extract without html', () => { const contents = `{{ 'message' | translate }}`; const keys = parser.extract(contents, templateFilename).keys(); expect(keys).to.deep.equal(['message']); }); });