Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
it(markup, function () {
const ctx = TestContext.createHTMLTestContext();
const { dom, container } = ctx;
container.register(CustomAttribute.define({ name: 'attr', bindables: ['a', 'b', 'c'] }, class {}));
const resources = new ResourceModel(container);
const attrParser = container.get(IAttributeParser);
const exprParser = container.get(IExpressionParser);
const transformer = container.get(IAttrSyntaxTransformer);
const factory = container.get(ITemplateElementFactory);
const sut = new TemplateBinder(dom, resources, attrParser, exprParser, transformer);
const template = factory.createTemplate(markup) as HTMLTemplateElement;
const manifestRoot = sut.bind(template);
const div = manifestRoot.childNodes[0] as PlainElementSymbol;
const { customAttributes } = div;
assert.strictEqual(customAttributes.length, 1, 'customAttributes.length');
const [{ bindings }] = customAttributes;
assert.strictEqual(bindings.length, expectedBindings.length, 'bindings.length');
for (const expectedBinding of expectedBindings) {
const binding = bindings.find(b => b.target === expectedBinding.target && b.rawValue === expectedBinding.rawValue);
assert.notStrictEqual(binding, void 0, `${JSON.stringify(bindings.map(({ target, rawValue }) => ({ target, rawValue })))}.find(b => b.target === ${expectedBinding.target} && b.rawValue === ${expectedBinding.rawValue})`);
}
});
it.skip(escaped, function () {
const ctx = TestContext.createHTMLTestContext();
const parser = new ctx.DOMParser();
const doc = parser.parseFromString(markup, 'application/xml');
const fakeSurrogate = { firstChild: doc, attributes: [] };
const binder = new TemplateBinder(
ctx.dom,
new ResourceModel(new RuntimeCompilationResources(ctx.container)),
ctx.container.get(IAttributeParser),
ctx.container.get(IExpressionParser),
ctx.container.get(IAttrSyntaxTransformer)
);
const result = binder.bind(fakeSurrogate as any);
assert.strictEqual(result.physicalNode, fakeSurrogate, `result.physicalNode`);
});
}