
Also inserts comment nodes before/after projected nodes so that text nodes don’t get merged when we serialize/deserialize them. Closes #3356 First part of #3364
97 lines
3.2 KiB
TypeScript
97 lines
3.2 KiB
TypeScript
import {
|
|
AsyncTestCompleter,
|
|
beforeEach,
|
|
ddescribe,
|
|
describe,
|
|
el,
|
|
expect,
|
|
iit,
|
|
inject,
|
|
it,
|
|
xit,
|
|
beforeEachBindings,
|
|
SpyObject,
|
|
} from 'angular2/test_lib';
|
|
|
|
import {DOM} from 'angular2/src/dom/dom_adapter';
|
|
import {
|
|
prepareTemplateForClone,
|
|
ReferenceCloneableTemplate,
|
|
SerializedCloneableTemplate
|
|
} from 'angular2/src/render/dom/util';
|
|
|
|
export function main() {
|
|
describe('Dom util', () => {
|
|
|
|
describe('prepareTemplateForClone', () => {
|
|
it('should use a reference for small templates', () => {
|
|
var t = DOM.createTemplate('');
|
|
var ct = prepareTemplateForClone(t);
|
|
expect((<ReferenceCloneableTemplate>ct).templateRoot).toBe(t);
|
|
});
|
|
|
|
it('should use a reference for big templates with a force comment', () => {
|
|
var templateString = '<!--cache-->';
|
|
for (var i = 0; i < 100; i++) {
|
|
templateString += '<div></div>';
|
|
}
|
|
var t = DOM.createTemplate(templateString);
|
|
var ct = prepareTemplateForClone(t);
|
|
expect((<ReferenceCloneableTemplate>ct).templateRoot).toBe(t);
|
|
});
|
|
|
|
it('should serialize for big templates', () => {
|
|
var templateString = '';
|
|
for (var i = 0; i < 100; i++) {
|
|
templateString += '<div></div>';
|
|
}
|
|
var t = DOM.createTemplate(templateString);
|
|
var ct = prepareTemplateForClone(t);
|
|
expect((<SerializedCloneableTemplate>ct).templateString).toEqual(templateString);
|
|
});
|
|
|
|
it('should serialize for templates with the force comment', () => {
|
|
var templateString = '<!--nocache-->';
|
|
var t = DOM.createTemplate(templateString);
|
|
var ct = prepareTemplateForClone(t);
|
|
expect((<SerializedCloneableTemplate>ct).templateString).toEqual(templateString);
|
|
});
|
|
});
|
|
|
|
describe('ReferenceCloneableTemplate', () => {
|
|
it('should return template.content nodes (no import)', () => {
|
|
var t = DOM.createTemplate('a');
|
|
var ct = new ReferenceCloneableTemplate(t);
|
|
var clone = ct.clone(false);
|
|
expect(clone).not.toBe(DOM.content(t));
|
|
expect(DOM.getText(DOM.firstChild(clone))).toEqual('a');
|
|
});
|
|
|
|
it('should return template.content nodes (import into doc)', () => {
|
|
var t = DOM.createTemplate('a');
|
|
var ct = new ReferenceCloneableTemplate(t);
|
|
var clone = ct.clone(true);
|
|
expect(clone).not.toBe(DOM.content(t));
|
|
expect(DOM.getText(DOM.firstChild(clone))).toEqual('a');
|
|
});
|
|
});
|
|
|
|
describe('SerializedCloneableTemplate', () => {
|
|
it('should return template.content nodes (no import)', () => {
|
|
var t = DOM.createTemplate('a');
|
|
var ct = new SerializedCloneableTemplate(t);
|
|
var clone = ct.clone(false);
|
|
expect(clone).not.toBe(DOM.content(t));
|
|
expect(DOM.getText(DOM.firstChild(clone))).toEqual('a');
|
|
});
|
|
|
|
it('should return template.content nodes (import into doc)', () => {
|
|
var t = DOM.createTemplate('a');
|
|
var ct = new SerializedCloneableTemplate(t);
|
|
var clone = ct.clone(true);
|
|
expect(clone).not.toBe(DOM.content(t));
|
|
expect(DOM.getText(DOM.firstChild(clone))).toEqual('a');
|
|
});
|
|
});
|
|
});
|
|
} |