test(compiler): add a test for parsing multiline expressions in attributes (#42062)
This tests a scenario that was failing in an internal project. PR Close #42062
This commit is contained in:
parent
28b0c45fde
commit
fe12651580
|
@ -274,6 +274,33 @@ import {humanizeDom, humanizeDomSourceSpans, humanizeLineColumn, humanizeNodes}
|
|||
]);
|
||||
});
|
||||
|
||||
it('should parse attributes containing unquoted interpolation', () => {
|
||||
expect(humanizeDom(parser.parse('<div foo={{message}}></div>', 'TestComp'))).toEqual([
|
||||
[html.Element, 'div', 0],
|
||||
[html.Attribute, 'foo', '{{message}}', [''], ['{{', 'message', '}}'], ['']]
|
||||
]);
|
||||
});
|
||||
|
||||
it('should parse bound inputs with expressions containing newlines', () => {
|
||||
expect(humanizeDom(parser.parse(
|
||||
`<app-component
|
||||
[attr]="[
|
||||
{text: 'some text',url:'//www.google.com'},
|
||||
{text:'other text',url:'//www.google.com'}]"></app-component>`,
|
||||
'TestComp')))
|
||||
.toEqual([
|
||||
[html.Element, 'app-component', 0],
|
||||
[
|
||||
html.Attribute, '[attr]', `[
|
||||
{text: 'some text',url:'//www.google.com'},
|
||||
{text:'other text',url:'//www.google.com'}]`,
|
||||
[`[
|
||||
{text: 'some text',url:'//www.google.com'},
|
||||
{text:'other text',url:'//www.google.com'}]`]
|
||||
],
|
||||
]);
|
||||
});
|
||||
|
||||
it('should parse attributes containing encoded entities', () => {
|
||||
expect(humanizeDom(parser.parse('<div foo="&"></div>', 'TestComp'))).toEqual([
|
||||
[html.Element, 'div', 0],
|
||||
|
|
|
@ -407,6 +407,27 @@ import {ParseLocation, ParseSourceFile, ParseSourceSpan} from '../../src/parse_u
|
|||
]);
|
||||
});
|
||||
|
||||
it('should parse bound inputs with expressions containing newlines', () => {
|
||||
expect(tokenizeAndHumanizeParts(`<app-component
|
||||
[attr]="[
|
||||
{text: 'some text',url:'//www.google.com'},
|
||||
{text:'other text',url:'//www.google.com'}]">`))
|
||||
.toEqual([
|
||||
[TokenType.TAG_OPEN_START, '', 'app-component'],
|
||||
[TokenType.ATTR_NAME, '', '[attr]'],
|
||||
[TokenType.ATTR_QUOTE, '"'],
|
||||
[
|
||||
TokenType.ATTR_VALUE_TEXT,
|
||||
'[\n' +
|
||||
' {text: \'some text\',url:\'//www.google.com\'},\n' +
|
||||
' {text:\'other text\',url:\'//www.google.com\'}]'
|
||||
],
|
||||
[TokenType.ATTR_QUOTE, '"'],
|
||||
[TokenType.TAG_OPEN_END],
|
||||
[TokenType.EOF],
|
||||
]);
|
||||
});
|
||||
|
||||
it('should parse attributes with empty quoted value', () => {
|
||||
expect(tokenizeAndHumanizeParts('<t a="">')).toEqual([
|
||||
[TokenType.TAG_OPEN_START, '', 't'],
|
||||
|
|
Loading…
Reference in New Issue