mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-02-09 07:30:01 +00:00
Don't have data widget rendering its own JSON
Making the data widget render its raw JSON (introduced in 683ec3300490714da21ef0a1e1e50d348473d868) was a bad idea as it messes up the innerwiki use of the data widget. Instead we use the testcase widget with a special template to render the raw JSON of the payload of a testcase, thus giving us a way to test the data widget
This commit is contained in:
parent
c6f15d8e8c
commit
d9b6384884
@ -31,12 +31,7 @@ DataWidget.prototype.render = function(parent,nextSibling) {
|
|||||||
this.parentDomNode = parent;
|
this.parentDomNode = parent;
|
||||||
this.computeAttributes();
|
this.computeAttributes();
|
||||||
this.execute();
|
this.execute();
|
||||||
var domNode = this.document.createTextNode("");
|
|
||||||
parent.insertBefore(domNode,nextSibling);
|
|
||||||
this.renderChildren(parent,nextSibling);
|
this.renderChildren(parent,nextSibling);
|
||||||
// Children must have been rendered before we can read the data values
|
|
||||||
domNode.textContent = JSON.stringify(this.readDataTiddlerValues());
|
|
||||||
this.domNodes.push(domNode);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -57,11 +57,14 @@ TestCaseWidget.prototype.render = function(parent,nextSibling) {
|
|||||||
}
|
}
|
||||||
loadTiddler("$:/core");
|
loadTiddler("$:/core");
|
||||||
loadTiddler("$:/plugins/tiddlywiki/codemirror");
|
loadTiddler("$:/plugins/tiddlywiki/codemirror");
|
||||||
|
// Load the test case template
|
||||||
|
// loadTiddler(this.testcaseTemplate);
|
||||||
// Load tiddlers from child data widgets
|
// Load tiddlers from child data widgets
|
||||||
var tiddlers = [];
|
var tiddlers = [];
|
||||||
this.findChildrenDataWidgets(this.contentRoot.children,"data",function(widget) {
|
this.findChildrenDataWidgets(this.contentRoot.children,"data",function(widget) {
|
||||||
Array.prototype.push.apply(tiddlers,widget.readDataTiddlerValues());
|
Array.prototype.push.apply(tiddlers,widget.readDataTiddlerValues());
|
||||||
});
|
});
|
||||||
|
var jsonPayload = JSON.stringify(tiddlers);
|
||||||
this.testcaseWiki.addTiddlers(tiddlers);
|
this.testcaseWiki.addTiddlers(tiddlers);
|
||||||
// Unpack plugin tiddlers
|
// Unpack plugin tiddlers
|
||||||
this.testcaseWiki.readPluginInfo();
|
this.testcaseWiki.readPluginInfo();
|
||||||
@ -69,15 +72,9 @@ TestCaseWidget.prototype.render = function(parent,nextSibling) {
|
|||||||
this.testcaseWiki.unpackPluginTiddlers();
|
this.testcaseWiki.unpackPluginTiddlers();
|
||||||
this.testcaseWiki.addIndexersToWiki();
|
this.testcaseWiki.addIndexersToWiki();
|
||||||
// Generate a `transclusion` variable that depends on the values of the payload tiddlers so that the template can easily make unique state tiddlers
|
// Generate a `transclusion` variable that depends on the values of the payload tiddlers so that the template can easily make unique state tiddlers
|
||||||
this.setVariable("transclusion",$tw.utils.hashString(this.testcaseWiki.getTiddlersAsJson("[all[tiddlers]]")));
|
this.setVariable("transclusion",$tw.utils.hashString(jsonPayload));
|
||||||
// Generate a `testcaseInfo` variable that contains information about the subwiki in JSON format
|
// Generate a `payloadTiddlers` variable that contains the payload in JSON format
|
||||||
var testcaseInfoData = {
|
this.setVariable("payloadTiddlers",jsonPayload);
|
||||||
tiddlers: {} // Hashmap of tiddler titles mapped to array of field names
|
|
||||||
};
|
|
||||||
this.testcaseWiki.each(function(tiddler,title) {
|
|
||||||
testcaseInfoData.tiddlers[title] = Object.keys(tiddler.fields);
|
|
||||||
});
|
|
||||||
this.setVariable("testcaseInfo",JSON.stringify(testcaseInfoData));
|
|
||||||
// Render the page root template of the subwiki
|
// Render the page root template of the subwiki
|
||||||
var rootWidget = this.testcaseWiki.makeTranscludeWidget(this.testcaseTemplate,{document: this.document, parseAsInline: false, parentWidget: this});
|
var rootWidget = this.testcaseWiki.makeTranscludeWidget(this.testcaseTemplate,{document: this.document, parseAsInline: false, parentWidget: this});
|
||||||
rootWidget.render(parent,nextSibling);
|
rootWidget.render(parent,nextSibling);
|
||||||
|
4
core/ui/TestCases/RawJSONTemplate.tid
Normal file
4
core/ui/TestCases/RawJSONTemplate.tid
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
title: $:/core/ui/testcases/RawJSONTemplate
|
||||||
|
|
||||||
|
\whitespace trim
|
||||||
|
<$text text=<<payloadTiddlers>>/>
|
@ -9,7 +9,9 @@ text: Importing a compound payload tiddler and adding custom fields
|
|||||||
title: Output
|
title: Output
|
||||||
|
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
|
<$testcase template="$:/core/ui/testcases/RawJSONTemplate">
|
||||||
<$data $compound-tiddler="Compound" custom="Alpha"/>
|
<$data $compound-tiddler="Compound" custom="Alpha"/>
|
||||||
|
</$testcase>
|
||||||
+
|
+
|
||||||
title: Compound
|
title: Compound
|
||||||
type: text/vnd.tiddlywiki-multiple
|
type: text/vnd.tiddlywiki-multiple
|
||||||
@ -22,4 +24,4 @@ This is a payload tiddler from a compound tiddler
|
|||||||
+
|
+
|
||||||
title: ExpectedResult
|
title: ExpectedResult
|
||||||
|
|
||||||
<p>[{"title":"Payload Tiddler","tags":"Alpha Beta Gamma","text":"This is a payload tiddler from a compound tiddler","custom":"Alpha"}]</p>
|
<p><div>[{"title":"Payload Tiddler","tags":"Alpha Beta Gamma","text":"This is a payload tiddler from a compound tiddler","custom":"Alpha"}]</div></p>
|
@ -9,7 +9,9 @@ text: Importing a payload filter and adding custom fields
|
|||||||
title: Output
|
title: Output
|
||||||
|
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
|
<$testcase template="$:/core/ui/testcases/RawJSONTemplate">
|
||||||
<$data $filter="[tag[Definitions]]" custom="Alpha"/>
|
<$data $filter="[tag[Definitions]]" custom="Alpha"/>
|
||||||
|
</$testcase>
|
||||||
+
|
+
|
||||||
title: HelloThere
|
title: HelloThere
|
||||||
tags: Definitions
|
tags: Definitions
|
||||||
@ -23,4 +25,4 @@ This is the tiddler AnotherDefinition
|
|||||||
+
|
+
|
||||||
title: ExpectedResult
|
title: ExpectedResult
|
||||||
|
|
||||||
<p>[{"title":"AnotherDefinition","tags":"Definitions","text":"This is the tiddler AnotherDefinition","custom":"Alpha"},{"title":"HelloThere","tags":"Definitions","text":"This is the tiddler HelloThere","custom":"Alpha"}]</p>
|
<p><div>[{"title":"AnotherDefinition","tags":"Definitions","text":"This is the tiddler AnotherDefinition","custom":"Alpha"},{"title":"HelloThere","tags":"Definitions","text":"This is the tiddler HelloThere","custom":"Alpha"}]</div></p>
|
@ -9,7 +9,9 @@ text: Importing a payload tiddler and adding custom fields
|
|||||||
title: Output
|
title: Output
|
||||||
|
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
|
<$testcase template="$:/core/ui/testcases/RawJSONTemplate">
|
||||||
<$data $tiddler="HelloThere" custom="Alpha"/>
|
<$data $tiddler="HelloThere" custom="Alpha"/>
|
||||||
|
</$testcase>
|
||||||
+
|
+
|
||||||
title: HelloThere
|
title: HelloThere
|
||||||
tags: Definitions
|
tags: Definitions
|
||||||
@ -18,4 +20,4 @@ This is the tiddler HelloThere
|
|||||||
+
|
+
|
||||||
title: ExpectedResult
|
title: ExpectedResult
|
||||||
|
|
||||||
<p>[{"title":"HelloThere","tags":"Definitions","text":"This is the tiddler HelloThere","custom":"Alpha"}]</p>
|
<p><div>[{"title":"HelloThere","tags":"Definitions","text":"This is the tiddler HelloThere","custom":"Alpha"}]</div></p>
|
@ -9,8 +9,10 @@ text: Standalone data widget to create individual tiddlers
|
|||||||
title: Output
|
title: Output
|
||||||
|
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
|
<$testcase template="$:/core/ui/testcases/RawJSONTemplate">
|
||||||
<$data title="Epsilon" text="Theta"/>
|
<$data title="Epsilon" text="Theta"/>
|
||||||
|
</$testcase>
|
||||||
+
|
+
|
||||||
title: ExpectedResult
|
title: ExpectedResult
|
||||||
|
|
||||||
<p>[{"title":"Epsilon","text":"Theta"}]</p>
|
<p><div>[{"title":"Epsilon","text":"Theta"}]</div></p>
|
@ -24,7 +24,11 @@ describe("Wiki-based tests", function() {
|
|||||||
var tiddler = $tw.wiki.getTiddler(title);
|
var tiddler = $tw.wiki.getTiddler(title);
|
||||||
it(tiddler.fields.title + ": " + tiddler.fields.description, function() {
|
it(tiddler.fields.title + ": " + tiddler.fields.description, function() {
|
||||||
// Add our tiddlers
|
// Add our tiddlers
|
||||||
var wiki = new $tw.Wiki();
|
var wiki = new $tw.Wiki(),
|
||||||
|
coreTiddler = $tw.wiki.getTiddler("$:/core");
|
||||||
|
if(coreTiddler) {
|
||||||
|
wiki.addTiddler(coreTiddler);
|
||||||
|
}
|
||||||
wiki.addTiddlers(readMultipleTiddlersTiddler(title));
|
wiki.addTiddlers(readMultipleTiddlersTiddler(title));
|
||||||
// Complain if we don't have the ouput and expected results
|
// Complain if we don't have the ouput and expected results
|
||||||
if(!wiki.tiddlerExists("Output")) {
|
if(!wiki.tiddlerExists("Output")) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user