mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-28 04:19:56 +00:00
133 lines
4.4 KiB
JavaScript
133 lines
4.4 KiB
JavaScript
/*\
|
|
title: test-parsetextreference.js
|
|
type: application/javascript
|
|
tags: [[$:/tags/test-spec]]
|
|
|
|
Tests for source attribute in parser returned from wiki.parseTextReference
|
|
|
|
\*/
|
|
(function(){
|
|
|
|
/*jslint node: true, browser: true */
|
|
/*global $tw: false */
|
|
"use strict";
|
|
|
|
describe("Wiki.parseTextReference tests", function() {
|
|
|
|
// Create a wiki
|
|
var wiki = new $tw.Wiki();
|
|
wiki.addTiddler({
|
|
title: "TiddlerOne",
|
|
text: "The quick brown fox in $:/TiddlerTwo",
|
|
tags: ["one"],
|
|
authors: "Joe Bloggs",
|
|
modifier: "JoeBloggs",
|
|
modified: "201304152222"});
|
|
wiki.addTiddler({
|
|
title: "$:/TiddlerTwo",
|
|
tags: ["two"],
|
|
authors: "[[John Doe]]",
|
|
modifier: "John",
|
|
modified: "201304152211"});
|
|
wiki.addTiddler({
|
|
title: "Tiddler Three",
|
|
text: '{"oct":31,"nov":30,"dec":31,"jan":""}',
|
|
tags: ["one","two"],
|
|
type: "application/json",
|
|
modifier: "John",
|
|
modified: "201304162202"});
|
|
wiki.addTiddler({
|
|
title: "TiddlerFour",
|
|
text: "The quick brown fox in $:/TiddlerTwo",
|
|
tags: ["one"],
|
|
type: "text/vnd.tiddlywiki",
|
|
authors: "",
|
|
modifier: "JoeBloggs",
|
|
modified: "201304152222"});
|
|
// Add a plugin containing some shadow tiddlers
|
|
var shadowTiddlers = {
|
|
tiddlers: {
|
|
"$:/TiddlerFive": {
|
|
title: "$:/TiddlerFive",
|
|
text: "Everything in federation",
|
|
tags: ["two"]
|
|
},
|
|
"TiddlerSix": {
|
|
title: "TiddlerSix",
|
|
text: "Missing inaction from TiddlerOne",
|
|
filter: "[[one]] [[a a]] [subfilter{hasList!!list}]",
|
|
tags: []
|
|
},
|
|
"TiddlerSeventh": {
|
|
title: "TiddlerSeventh",
|
|
text: "",
|
|
list: "TiddlerOne [[Tiddler Three]] [[a fourth tiddler]] MissingTiddler",
|
|
tags: ["one"]
|
|
},
|
|
"Tiddler8": {
|
|
title: "Tiddler8",
|
|
text: "Tidd",
|
|
tags: ["one"],
|
|
"test-field": "JoeBloggs",
|
|
"myfield":""
|
|
}
|
|
}
|
|
};
|
|
wiki.addTiddler({
|
|
title: "$:/ShadowPlugin",
|
|
text: JSON.stringify(shadowTiddlers),
|
|
"plugin-type": "plugin",
|
|
type: "application/json"});
|
|
wiki.addTiddler({
|
|
title: "TiddlerNine",
|
|
text: "this is plain text",
|
|
type: "text/plain"
|
|
});
|
|
|
|
// Define a parsing shortcut for souce attribute of parser returned by wiki.parseTextReference
|
|
var parseAndGetSource = function(title,field,index,subTiddler) {
|
|
var parser = wiki.parseTextReference(title,field,index,{subTiddler: subTiddler});
|
|
return parser ? parser.source : null;
|
|
};
|
|
|
|
it("should parse text references and return correct source attribute", function(){
|
|
// Existing tiddler with a text field, no field argument specified
|
|
expect(parseAndGetSource("TiddlerOne")).toEqual("The quick brown fox in $:/TiddlerTwo");
|
|
// Existing tiddler with a text field, field argument specified as text
|
|
expect(parseAndGetSource("TiddlerOne","text")).toEqual("The quick brown fox in $:/TiddlerTwo");
|
|
// Existing tiddler with no text field
|
|
expect(parseAndGetSource("$:/TiddlerTwo")).toEqual("");
|
|
// Existing tiddler, field argument specified as authors
|
|
expect(parseAndGetSource("TiddlerOne","authors")).toEqual("Joe Bloggs");
|
|
// Non-existent tiddler, no field argument
|
|
expect(parseAndGetSource("MissingTiddler")).toEqual(null);
|
|
// Non-existent tiddler, field argument
|
|
expect(parseAndGetSource("MissingTiddler","missing-field")).toEqual(null);
|
|
// Non-existent tiddler, index specified
|
|
expect(parseAndGetSource("MissingTiddler",null,"missing-index")).toEqual(null);
|
|
// Existing tiddler with non existent field
|
|
expect(parseAndGetSource("TiddlerOne","missing-field")).toEqual(null);
|
|
// Existing tiddler with blank field
|
|
expect(parseAndGetSource("TiddlerFour","authors")).toEqual("");
|
|
// Data tiddler with index specified
|
|
expect(parseAndGetSource("Tiddler Three",null,"oct")).toEqual("31");
|
|
// Data tiddler with blank index
|
|
expect(parseAndGetSource("Tiddler Three",null,"jan")).toEqual("");
|
|
// Data tiddler with non-existent index
|
|
expect(parseAndGetSource("Tiddler Three",null,"feb")).toEqual(null);
|
|
// Existing tiddler with a text field, type set to vnd.tiddlywiki
|
|
expect(parseAndGetSource("TiddlerFour")).toEqual("The quick brown fox in $:/TiddlerTwo");
|
|
// Existing subtiddler of a plugin
|
|
expect(parseAndGetSource("$:/ShadowPlugin","text",null,"Tiddler8")).toEqual("Tidd");
|
|
// Existing blank field of a subtiddler of a plugin
|
|
expect(parseAndGetSource("$:/ShadowPlugin","myfield",null,"Tiddler8")).toEqual("");
|
|
// Non-existent subtiddler of a plugin
|
|
expect(parseAndGetSource("$:/ShadowPlugin","text",null,"MyMissingTiddler")).toEqual(null);
|
|
// Plain text tiddler
|
|
expect(parseAndGetSource("TiddlerNine")).toEqual(undefined);
|
|
});
|
|
|
|
});
|
|
|
|
})();
|