When XML fragments without code not getting context from parent

This commit is contained in:
Panayot Cankov
2015-12-01 12:28:31 +02:00
parent fe209cdd02
commit e5ec759cbb
6 changed files with 40 additions and 2 deletions

View File

@ -0,0 +1,5 @@
<tc:TemplateView id="template-view" xmlns:tc="xml-declaration/template-builder-tests/template-view">
<tc:TemplateView.template>
<tc:TemplateView text="Click!" test="test" />
</tc:TemplateView.template>
</tc:TemplateView>

View File

@ -0,0 +1,2 @@
// Our unit test will set this function and expect it to be set as a handler on a View in the XML.
export var test: (args: any) => void;

View File

@ -0,0 +1,4 @@
<Page xmlns="http://schemas.nativescript.org/tns.xsd"
xmlns:fragment="xml-declaration/template-builder-tests">
<fragment:event-in-codeless-fragment-the-fragment />
</Page>

View File

@ -905,5 +905,31 @@ export function test_EventInTemplate() {
object: childTemplateView
});
TKUnit.assert(notified, "Expected the child to raise the test event.");
}
export function test_EventInCodelessFragment() {
var pageCode = require("./template-builder-tests/event-in-codeless-fragment");
var notified = false;
pageCode.test = (args) => {
notified = true;
}
var basePath = "xml-declaration/";
var message;
var page = builder.load(__dirname + "/template-builder-tests/event-in-codeless-fragment.xml", pageCode);
TKUnit.assert(view, "Expected the xml to generate a page");
var templateView = <TemplateView>page.getViewById("template-view");
TKUnit.assert(templateView, "Expected the page to have a TemplateView with 'temaplte-view' id.");
templateView.parseTemplate();
TKUnit.assertEqual(templateView.getChildrenCount(), 1, "Expected TemplateView initially to have 1 child.");
var childTemplateView = <TemplateView>templateView.getChildAt(0);
TKUnit.assert(childTemplateView, "Expected the TemplateView's template to create a child TemplateView.");
childTemplateView.notify({
eventName: "test",
object: childTemplateView
});
TKUnit.assert(notified, "Expected the child to raise the test event.");
}

View File

@ -319,8 +319,9 @@
"apps/tests/xml-declaration/mainPage.ts",
"apps/tests/xml-declaration/mymodule/MyControl.ts",
"apps/tests/xml-declaration/mymodulewithxml/MyControl.ts",
"apps/tests/xml-declaration/template-builder-tests/event-in-template.ts",
"apps/tests/xml-declaration/template-builder-tests/template-view.ts",
"apps/tests/xml-declaration/template-builder-tests/event-in-template.ts",
"apps/tests/xml-declaration/template-builder-tests/event-in-codeless-fragment.ts",
"apps/tests/xml-declaration/xml-declaration-tests.ts",
"apps/tests/xml-parser-tests/xml-parser-tests.ts",
"apps/transforms/app.ts",

View File

@ -63,7 +63,7 @@ function loadCustomComponent(componentPath: string, componentName?: string, attr
// Custom components with XML
var jsFilePath = fileResolverModule.resolveFileName(fullComponentPathFilePathWithoutExt, "js");
var subExports;
var subExports = context;
if (jsFilePath) {
// Custom components with XML and code
subExports = require(jsFilePath)