2013-05-25 16:26:22 +00:00
/ * \
title : test - filters . js
type : application / javascript
tags : [ [ $ : / t a g s / t e s t - s p e c ] ]
Tests the filtering mechanism .
\ * /
( function ( ) {
/*jslint node: true, browser: true */
2019-12-19 13:38:09 +00:00
/*global $tw: false, describe: false, it: false, expect: false, require: false*/
2013-05-25 16:26:22 +00:00
"use strict" ;
describe ( "Filter tests" , function ( ) {
2018-10-30 17:39:18 +00:00
// Test filter parsing
it ( "should parse new-style rich operator suffixes" , function ( ) {
expect ( $tw . wiki . parseFilter ( "[search:: four, , five,, six [operand]]" ) ) . toEqual (
[ { prefix : '' , operators : [ { operator : 'search' , suffix : ': four, , five,, six ' , suffixes : [ [ ] , [ 'four' , 'five' , 'six' ] ] , operand : 'operand' } ] } ]
) ;
expect ( $tw . wiki . parseFilter ( "[search: one, two ,three :[operand]]" ) ) . toEqual (
[ { prefix : '' , operators : [ { operator : 'search' , suffix : ' one, two ,three :' , suffixes : [ [ 'one' , 'two' , 'three' ] , [ ] ] , operand : 'operand' } ] } ]
) ;
expect ( $tw . wiki . parseFilter ( "[search: one, two ,three :[operand]]" ) ) . toEqual (
[ { prefix : '' , operators : [ { operator : 'search' , suffix : ' one, two ,three :' , suffixes : [ [ 'one' , 'two' , 'three' ] , [ ] ] , operand : 'operand' } ] } ]
) ;
expect ( $tw . wiki . parseFilter ( "[search: one, two ,three : four, , five,, six [operand]]" ) ) . toEqual (
[ { prefix : '' , operators : [ { operator : 'search' , suffix : ' one, two ,three : four, , five,, six ' , suffixes : [ [ 'one' , 'two' , 'three' ] , [ 'four' , 'five' , 'six' ] ] , operand : 'operand' } ] } ]
) ;
expect ( $tw . wiki . parseFilter ( "[search: , : [operand]]" ) ) . toEqual (
2019-12-19 13:38:09 +00:00
[ { prefix : '' , operators : [ { operator : 'search' , suffix : ' , : ' , suffixes : [ [ ] , [ ] ] , operand : 'operand' } ] } ]
2018-10-30 17:39:18 +00:00
) ;
} ) ;
2019-05-24 20:07:37 +00:00
describe ( "With no indexers" , function ( ) {
var wiki = setupWiki ( { enableIndexers : [ ] } ) ;
2019-07-16 15:53:37 +00:00
it ( "should not create indexes when requested not to" , function ( ) {
2019-12-19 13:38:09 +00:00
expect ( wiki . getIndexer ( "FieldIndexer" ) ) . toBe ( null ) ;
2019-07-16 15:53:37 +00:00
} ) ;
2019-05-24 20:07:37 +00:00
runTests ( wiki ) ;
} ) ;
describe ( "With all indexers" , function ( ) {
var wiki = setupWiki ( ) ;
2019-07-16 15:53:37 +00:00
if ( wiki . getIndexer ( "FieldIndexer" ) ) {
2019-12-19 13:38:09 +00:00
wiki . getIndexer ( "FieldIndexer" ) . setMaxIndexedValueLength ( 8 ) ; // Note that JoeBloggs is 9, and John is 5
2019-07-16 15:53:37 +00:00
}
2019-05-24 20:07:37 +00:00
runTests ( wiki ) ;
} ) ;
2018-10-30 17:39:18 +00:00
2019-05-24 20:07:37 +00:00
function setupWiki ( wikiOptions ) {
2013-05-25 16:26:22 +00:00
// Create a wiki
2019-07-16 15:53:37 +00:00
var wiki = new $tw . Wiki ( wikiOptions ) ;
// Add a plugin containing some shadow tiddlers
var shadowTiddlers = {
tiddlers : {
2014-03-17 10:50:18 +00:00
"$:/TiddlerFive" : {
2019-07-16 15:53:37 +00:00
title : "$:/TiddlerFive" ,
text : "Everything in federation" ,
tags : [ "two" ]
2014-03-17 10:50:18 +00:00
} ,
"TiddlerSix" : {
2019-07-16 15:53:37 +00:00
title : "TiddlerSix" ,
text : "Missing inaction from TiddlerOne" ,
2019-12-19 13:38:09 +00:00
filter : "[[one]] [[a a]] [subfilter{hasList!!list}]" ,
2019-07-16 15:53:37 +00:00
tags : [ ]
2014-03-17 10:50:18 +00:00
} ,
"TiddlerSeventh" : {
2019-07-16 15:53:37 +00:00
title : "TiddlerSeventh" ,
text : "" ,
list : "TiddlerOne [[Tiddler Three]] [[a fourth tiddler]] MissingTiddler" ,
tags : [ "one" ]
2014-03-17 10:50:18 +00:00
} ,
"Tiddler8" : {
2019-07-16 15:53:37 +00:00
title : "Tiddler8" ,
text : "Tidd" ,
tags : [ "one" ] ,
"test-field" : "JoeBloggs"
2019-12-19 13:38:09 +00:00
}
2014-03-17 10:50:18 +00:00
}
2019-07-16 15:53:37 +00:00
} ;
wiki . addTiddler ( {
title : "$:/ShadowPlugin" ,
text : JSON . stringify ( shadowTiddlers ) ,
"plugin-type" : "plugin" ,
type : "application/json" } ) ;
2013-05-25 16:26:22 +00:00
// Add a few tiddlers
wiki . addTiddler ( {
title : "TiddlerOne" ,
text : "The quick brown fox in $:/TiddlerTwo" ,
tags : [ "one" ] ,
2015-01-27 01:02:15 +00:00
authors : "Joe Bloggs" ,
2013-05-27 16:59:47 +00:00
modifier : "JoeBloggs" ,
2014-01-30 06:11:54 +00:00
modified : "201304152222" } ) ;
2013-05-25 16:26:22 +00:00
wiki . addTiddler ( {
title : "$:/TiddlerTwo" ,
text : "The rain in Spain\nfalls mainly on the plain and [[a fourth tiddler]]" ,
2013-05-27 16:59:47 +00:00
tags : [ "two" ] ,
2015-01-27 01:02:15 +00:00
authors : "[[John Doe]]" ,
2019-12-19 13:38:09 +00:00
modifier : "John" ,
2014-01-30 06:11:54 +00:00
modified : "201304152211" } ) ;
2013-05-25 16:26:22 +00:00
wiki . addTiddler ( {
title : "Tiddler Three" ,
text : "The speed of sound in light\n\nThere is no TiddlerZero but TiddlerSix" ,
2013-05-27 16:59:47 +00:00
tags : [ "one" , "two" ] ,
2019-12-19 13:38:09 +00:00
modifier : "John" ,
2014-01-30 14:28:54 +00:00
modified : "201304162202" } ) ;
2013-05-25 16:26:22 +00:00
wiki . addTiddler ( {
title : "a fourth tiddler" ,
text : "The quality of mercy is not drained by [[Tiddler Three]]" ,
2013-05-27 16:59:47 +00:00
tags : [ ] ,
2017-02-22 12:13:59 +00:00
empty : "not" ,
2019-12-19 13:38:09 +00:00
modifier : "John" } ) ;
2013-08-07 15:06:46 +00:00
wiki . addTiddler ( {
title : "one" ,
text : "This is the text of tiddler [[one]]" ,
list : "[[Tiddler Three]] [[TiddlerOne]]" ,
2017-02-22 12:13:59 +00:00
empty : "" ,
2019-12-19 13:38:09 +00:00
modifier : "John" } ) ;
wiki . addTiddler ( {
title : "hasList" ,
text : "This is the text of tiddler [[hasList]]" ,
list : "[[Tiddler Three]] [[TiddlerOne]]" ,
modifier : "PMario" } ) ;
wiki . addTiddler ( {
title : "has filter" ,
text : "This is the text of tiddler [[has filter]]" ,
filter : "[[Tiddler Three]] [[TiddlerOne]] [subfilter{hasList!!list}]" ,
modifier : "PMario" } ) ;
wiki . addTiddler ( {
title : "filter regexp test" ,
text : "Those strings have been used to create the `regexp = /[+|\-|~]?([[](?:[^\]])*\]+)|([+|-|~|\S]\S*)/;`" ,
filter : "+aaa -bbb ~ccc aaaaaabbbbbbbbaa \"bb'b\" 'cc\"c' [[abc]] [[tiddler with spaces]] [is[test]] [is[te st]] a s df [enlist<hugo>] +[enlist:raw{test with spaces}] [enlist:raw{test with spaces}] [[a a]] [[ ] [ ]] [[ [hugo]] [subfilter{Story/Tower of Hanoi/A-C Sequence}]" ,
modifier : "PMario" } ) ;
2019-07-16 15:53:37 +00:00
// Unpack plugin tiddlers
wiki . readPluginInfo ( ) ;
wiki . registerPluginTiddlers ( "plugin" ) ;
wiki . unpackPluginTiddlers ( ) ;
wiki . addIndexersToWiki ( ) ;
2019-05-24 20:07:37 +00:00
return wiki ;
}
2013-05-25 16:26:22 +00:00
2019-05-24 20:07:37 +00:00
// Our tests
function runTests ( wiki ) {
2013-05-25 16:26:22 +00:00
2019-12-19 13:38:09 +00:00
it ( "should handle the enlist operator" , function ( ) {
expect ( wiki . filterTiddlers ( "[enlist[one two three]addsuffix[!]]" ) . join ( "," ) ) . toBe ( "one!,two!,three!" ) ;
} ) ;
2019-08-02 13:27:58 +00:00
it ( "should handle the then and else operators" , function ( ) {
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[modifier[JoeBloggs]then[Susi]]" ) . join ( "," ) ) . toBe ( "Susi" ) ;
expect ( wiki . filterTiddlers ( "[!modifier[JoeBloggs]then[Susi]]" ) . join ( "," ) ) . toBe ( "Susi,Susi,Susi,Susi,Susi,Susi,Susi,Susi" ) ;
expect ( wiki . filterTiddlers ( "[modifier[DaveBloggs]then[Susi]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "[modifier[JoeBloggs]else[Susi]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[!modifier[JoeBloggs]else[Susi]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one,hasList,has filter,filter regexp test" ) ;
expect ( wiki . filterTiddlers ( "[modifier[DaveBloggs]else[Susi]]" ) . join ( "," ) ) . toBe ( "Susi" ) ;
2019-08-02 13:27:58 +00:00
} ) ;
2018-11-20 13:29:44 +00:00
it ( "should handle the ~ prefix" , function ( ) {
expect ( wiki . filterTiddlers ( "[modifier[JoeBloggs]] ~[[No such tiddler]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[modifier[Susi]] ~[[No such tiddler]]" ) . join ( "," ) ) . toBe ( "No such tiddler" ) ;
2018-11-20 13:29:44 +00:00
expect ( wiki . filterTiddlers ( "~[[No such tiddler]]" ) . join ( "," ) ) . toBe ( "No such tiddler" ) ;
expect ( wiki . filterTiddlers ( "[my-field[present]] ~[[No such tiddler]]" ) . join ( "," ) ) . toBe ( "No such tiddler" ) ;
} ) ;
2017-09-07 14:48:00 +00:00
it ( "should handle the lookup operator" , function ( ) {
expect ( wiki . filterTiddlers ( "Six Seventh 8 +[lookup[Tiddler]]" ) . join ( "," ) ) . toBe ( "Missing inaction from TiddlerOne,,Tidd" ) ;
expect ( wiki . filterTiddlers ( "Six Seventh 8 +[lookup:8[Tiddler]]" ) . join ( "," ) ) . toBe ( "Missing inaction from TiddlerOne,Tidd,Tidd" ) ;
} ) ;
2014-03-17 10:50:18 +00:00
it ( "should retrieve shadow tiddlers" , function ( ) {
expect ( wiki . getTiddlerText ( "Tiddler8" ) ) . toBe ( "Tidd" ) ;
} ) ;
2013-05-25 16:26:22 +00:00
it ( "should handle the title operator" , function ( ) {
expect ( wiki . filterTiddlers ( "TiddlerOne [title[$:/TiddlerTwo]] [[Tiddler Three]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,$:/TiddlerTwo,Tiddler Three" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!title[Tiddler Three]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,TiddlerOne,$:/TiddlerTwo,a fourth tiddler,one,hasList,has filter,filter regexp test" ) ;
2013-05-25 16:26:22 +00:00
expect ( wiki . filterTiddlers ( "TiddlerOne [title[$:/TiddlerTwo]] [[Tiddler Three]] [[A Missing Tiddler]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,$:/TiddlerTwo,Tiddler Three,A Missing Tiddler" ) ;
} ) ;
it ( "should handle the field operator" , function ( ) {
expect ( wiki . filterTiddlers ( "[modifier[JoeBloggs]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!modifier[JoeBloggs]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one,hasList,has filter,filter regexp test" ) ;
expect ( wiki . filterTiddlers ( "[!is[system]!modifier[JoeBloggs]]" ) . join ( "," ) ) . toBe ( "Tiddler Three,a fourth tiddler,one,hasList,has filter,filter regexp test" ) ;
2014-01-24 19:15:34 +00:00
expect ( wiki . filterTiddlers ( "[field:modifier[JoeBloggs]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!field:modifier[JoeBloggs]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one,hasList,has filter,filter regexp test" ) ;
expect ( wiki . filterTiddlers ( "[!is[system]!field:modifier[JoeBloggs]]" ) . join ( "," ) ) . toBe ( "Tiddler Three,a fourth tiddler,one,hasList,has filter,filter regexp test" ) ;
expect ( wiki . filterTiddlers ( "[modifier[John]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one" ) ;
expect ( wiki . filterTiddlers ( "[!modifier[John]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,TiddlerOne,hasList,has filter,filter regexp test" ) ;
expect ( wiki . filterTiddlers ( "[!is[system]!modifier[John]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,hasList,has filter,filter regexp test" ) ;
expect ( wiki . filterTiddlers ( "[field:modifier[John]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one" ) ;
expect ( wiki . filterTiddlers ( "[!field:modifier[John]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,TiddlerOne,hasList,has filter,filter regexp test" ) ;
expect ( wiki . filterTiddlers ( "[!is[system]!field:modifier[John]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,hasList,has filter,filter regexp test" ) ;
2014-01-24 19:15:34 +00:00
} ) ;
2014-09-09 14:57:41 +00:00
it ( "should handle the regexp operator" , function ( ) {
expect ( wiki . filterTiddlers ( "[regexp[id]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,$:/TiddlerTwo,Tiddler Three,a fourth tiddler" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!regexp[id]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,one,hasList,has filter,filter regexp test" ) ;
2014-09-09 14:57:41 +00:00
expect ( wiki . filterTiddlers ( "[regexp[Tid]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,$:/TiddlerTwo,Tiddler Three" ) ;
expect ( wiki . filterTiddlers ( "[regexp[(?i)Tid]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,$:/TiddlerTwo,Tiddler Three,a fourth tiddler" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!regexp[Tid(?i)]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,one,hasList,has filter,filter regexp test" ) ;
2014-09-09 14:57:41 +00:00
} ) ;
2019-12-19 13:38:09 +00:00
// The following 2 tests should write a log -> WARNING: Filter modifier has a deprecated regexp operand XXXX
// The test should pass anyway.
2014-01-24 19:15:34 +00:00
it ( "should handle the field operator with a regular expression operand" , function ( ) {
expect ( wiki . filterTiddlers ( "[modifier/JoeBloggs/]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[modifier/Jo/]" ) . join ( "," ) ) . toBe ( "TiddlerOne,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
it ( "should handle the prefix operator" , function ( ) {
expect ( wiki . filterTiddlers ( "[prefix[Tiddler]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,Tiddler Three" ) ;
expect ( wiki . filterTiddlers ( "[prefix[nothing]]" ) . join ( "," ) ) . toBe ( "" ) ;
} ) ;
it ( "should handle the sort and sortcs operators" , function ( ) {
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[!sort[title]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,Tiddler Three,one,hasList,has filter,filter regexp test,a fourth tiddler,$:/TiddlerTwo,$:/ShadowPlugin" ) ;
2014-05-16 13:46:55 +00:00
// Temporarily commenting out the following two lines because of platform differences for localeCompare between the browser and Node.js
// expect(wiki.filterTiddlers("[sortcs[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne,a fourth tiddler,one");
// expect(wiki.filterTiddlers("[!sortcs[title]]").join(",")).toBe("one,a fourth tiddler,TiddlerOne,Tiddler Three,$:/TiddlerTwo");
2013-05-25 16:26:22 +00:00
} ) ;
2014-01-25 17:44:14 +00:00
it ( "should handle the reverse, first, last, butfirst, butlast, rest and nth operators" , function ( ) {
2019-07-16 15:53:37 +00:00
expect ( wiki . filterTiddlers ( "[sort[title]first[]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]first[2]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[sort[title]first[8]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three" ) ;
2019-07-16 15:53:37 +00:00
expect ( wiki . filterTiddlers ( "[sort[title]first[x]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin" ) ;
2014-01-25 17:44:14 +00:00
expect ( wiki . filterTiddlers ( "[sort[title]last[]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]last[2]]" ) . join ( "," ) ) . toBe ( "Tiddler Three,TiddlerOne" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[sort[title]last[8]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne" ) ;
2014-01-25 17:44:14 +00:00
expect ( wiki . filterTiddlers ( "[sort[title]last[x]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[sort[title]reverse[]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,Tiddler Three,one,hasList,has filter,filter regexp test,a fourth tiddler,$:/TiddlerTwo,$:/ShadowPlugin" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]reverse[x]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,Tiddler Three,one,hasList,has filter,filter regexp test,a fourth tiddler,$:/TiddlerTwo,$:/ShadowPlugin" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]butlast[]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]butlast[2]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]butlast[11]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]butlast[x]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]rest[]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]rest[2]]" ) . join ( "," ) ) . toBe ( "a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]rest[11]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]rest[x]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne" ) ;
2019-07-16 15:53:37 +00:00
expect ( wiki . filterTiddlers ( "[sort[title]nth[]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin" ) ;
expect ( wiki . filterTiddlers ( "[sort[title]nth[2]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[sort[title]nth[11]]" ) . join ( "," ) ) . toBe ( "" ) ;
2019-07-16 15:53:37 +00:00
expect ( wiki . filterTiddlers ( "[sort[title]nth[x]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin" ) ;
2014-01-25 17:44:14 +00:00
} ) ;
2013-05-25 16:26:22 +00:00
it ( "should handle the tag operator" , function ( ) {
expect ( wiki . filterTiddlers ( "[tag[one]sort[title]]" ) . join ( "," ) ) . toBe ( "Tiddler Three,TiddlerOne" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!tag[one]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one" ) ;
2013-05-25 16:26:22 +00:00
expect ( wiki . filterTiddlers ( "[prefix[Tidd]tag[one]sort[title]]" ) . join ( "," ) ) . toBe ( "Tiddler Three,TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[!is[shadow]tag[two]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,Tiddler Three" ) ;
2014-04-03 19:49:16 +00:00
expect ( wiki . filterTiddlers ( "[all[shadows]tag[two]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerFive" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
2019-07-28 15:39:34 +00:00
it ( "should handle the all operator with field, has and tag operators" , function ( ) {
expect ( wiki . filterTiddlers ( "[all[shadows]tag[two]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerFive" ) ;
expect ( wiki . filterTiddlers ( "[all[shadows+tiddlers]tag[two]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerFive,$:/TiddlerTwo,Tiddler Three" ) ;
expect ( wiki . filterTiddlers ( "[all[tiddlers+shadows]tag[two]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,Tiddler Three,$:/TiddlerFive" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[all[shadows+tiddlers]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerFive,TiddlerSix,TiddlerSeventh,Tiddler8,$:/ShadowPlugin,TiddlerOne,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one,hasList,has filter,filter regexp test" ) ;
expect ( wiki . filterTiddlers ( "[all[tiddlers+shadows]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,TiddlerOne,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one,hasList,has filter,filter regexp test,$:/TiddlerFive,TiddlerSix,TiddlerSeventh,Tiddler8" ) ;
2019-07-28 15:39:34 +00:00
expect ( wiki . filterTiddlers ( "[all[tiddlers]tag[two]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,Tiddler Three" ) ;
} ) ;
2013-05-25 16:26:22 +00:00
it ( "should handle the tags operator" , function ( ) {
expect ( wiki . filterTiddlers ( "[tags[]sort[title]]" ) . join ( "," ) ) . toBe ( "one,two" ) ;
expect ( wiki . filterTiddlers ( "[[TiddlerOne]tags[]sort[title]]" ) . join ( "," ) ) . toBe ( "one" ) ;
} ) ;
2019-07-31 08:11:12 +00:00
it ( "should handle the match operator" , function ( ) {
expect ( wiki . filterTiddlers ( "[match[TiddlerOne]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "TiddlerOne TiddlerOne =[match[TiddlerOne]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,TiddlerOne" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!match[TiddlerOne]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one,hasList,has filter,filter regexp test" ) ;
2019-07-31 08:11:12 +00:00
expect ( wiki . filterTiddlers ( "[match:casesensitive[tiddlerone]]" ) . join ( "," ) ) . toBe ( "" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!match:casesensitive[tiddlerone]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,TiddlerOne,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one,hasList,has filter,filter regexp test" ) ;
2019-07-31 08:11:12 +00:00
expect ( wiki . filterTiddlers ( "[match:caseinsensitive[tiddlerone]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!match:caseinsensitive[tiddlerone]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one,hasList,has filter,filter regexp test" ) ;
2019-07-31 08:11:12 +00:00
} ) ;
2013-05-25 16:26:22 +00:00
it ( "should handle the tagging operator" , function ( ) {
2015-01-27 17:20:03 +00:00
expect ( wiki . filterTiddlers ( "[[one]tagging[]sort[title]]" ) . join ( "," ) ) . toBe ( "Tiddler Three,Tiddler8,TiddlerOne,TiddlerSeventh" ) ;
2015-03-11 21:58:45 +00:00
expect ( wiki . filterTiddlers ( "[[one]tagging[]]" ) . join ( "," ) ) . toBe ( "Tiddler Three,TiddlerOne,TiddlerSeventh,Tiddler8" ) ;
2014-03-11 15:53:41 +00:00
expect ( wiki . filterTiddlers ( "[[two]tagging[]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerFive,$:/TiddlerTwo,Tiddler Three" ) ;
2014-04-27 20:58:41 +00:00
var fakeWidget = { getVariable : function ( ) { return "one" ; } } ;
2015-03-11 21:58:45 +00:00
expect ( wiki . filterTiddlers ( "[all[current]tagging[]]" , fakeWidget ) . join ( "," ) ) . toBe ( "Tiddler Three,TiddlerOne,TiddlerSeventh,Tiddler8" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
2013-09-14 15:28:46 +00:00
it ( "should handle the untagged operator" , function ( ) {
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[untagged[]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,a fourth tiddler,filter regexp test,has filter,hasList,one" ) ;
2013-09-14 15:28:46 +00:00
expect ( wiki . filterTiddlers ( "[!untagged[]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,Tiddler Three,TiddlerOne" ) ;
} ) ;
2013-05-25 16:26:22 +00:00
it ( "should handle the links operator" , function ( ) {
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!is[shadow]links[]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,a fourth tiddler,has filter,hasList,one,Tiddler Three,TiddlerSix,TiddlerZero" ) ;
2014-04-03 19:49:16 +00:00
expect ( wiki . filterTiddlers ( "[all[shadows]links[]sort[title]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
it ( "should handle the backlinks operator" , function ( ) {
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!is[shadow]backlinks[]sort[title]]" ) . join ( "," ) ) . toBe ( "a fourth tiddler,has filter,hasList,one,TiddlerOne" ) ;
2014-04-03 19:49:16 +00:00
expect ( wiki . filterTiddlers ( "[all[shadows]backlinks[]sort[title]]" ) . join ( "," ) ) . toBe ( "Tiddler Three" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
it ( "should handle the has operator" , function ( ) {
2013-05-27 16:59:47 +00:00
expect ( wiki . filterTiddlers ( "[has[modified]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,Tiddler Three,TiddlerOne" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!has[modified]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,a fourth tiddler,filter regexp test,has filter,hasList,one" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
2017-02-22 12:13:59 +00:00
it ( "should handle the has:field operator" , function ( ) {
expect ( wiki . filterTiddlers ( "[has:field[empty]sort[title]]" ) . join ( "," ) ) . toBe ( "a fourth tiddler,one" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!has:field[empty]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,filter regexp test,has filter,hasList,Tiddler Three,TiddlerOne" ) ;
2017-02-22 12:13:59 +00:00
} ) ;
2013-05-25 16:26:22 +00:00
it ( "should handle the limit operator" , function ( ) {
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!is[system]sort[title]limit[2]]" ) . join ( "," ) ) . toBe ( "a fourth tiddler,filter regexp test" ) ;
2013-05-25 16:26:22 +00:00
expect ( wiki . filterTiddlers ( "[prefix[Tid]sort[title]limit[1]]" ) . join ( "," ) ) . toBe ( "Tiddler Three" ) ;
2013-10-01 10:27:26 +00:00
expect ( wiki . filterTiddlers ( "[prefix[Tid]sort[title]!limit[1]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
it ( "should handle the list operator" , function ( ) {
expect ( wiki . filterTiddlers ( "[list[TiddlerSeventh]sort[title]]" ) . join ( "," ) ) . toBe ( "a fourth tiddler,MissingTiddler,Tiddler Three,TiddlerOne" ) ;
2014-04-03 19:49:16 +00:00
expect ( wiki . filterTiddlers ( "[tag[one]list[TiddlerSeventh]sort[title]]" ) . join ( "," ) ) . toBe ( "a fourth tiddler,MissingTiddler,Tiddler Three,TiddlerOne" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
2019-12-19 13:38:09 +00:00
it ( "should handle the next operator" , function ( ) {
expect ( wiki . filterTiddlers ( "[[Tiddler Three]next[TiddlerSeventh]]" ) . join ( "," ) ) . toBe ( "a fourth tiddler" ) ;
expect ( wiki . filterTiddlers ( "[[MissingTiddler]next[TiddlerSeventh]]" ) . join ( "," ) ) . toBe ( "" ) ;
} ) ;
2013-09-22 09:02:40 +00:00
2019-12-19 13:38:09 +00:00
it ( "should handle the previous operator" , function ( ) {
expect ( wiki . filterTiddlers ( "[[Tiddler Three]previous[TiddlerSeventh]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[[TiddlerOne]previous[TiddlerSeventh]]" ) . join ( "," ) ) . toBe ( "" ) ;
} ) ;
2013-09-22 09:02:40 +00:00
2013-05-27 16:59:47 +00:00
it ( "should handle the search operator" , function ( ) {
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[search[the]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[search{Tiddler8}sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,has filter,hasList,one,Tiddler Three,TiddlerOne" ) ;
2018-10-30 17:39:18 +00:00
expect ( wiki . filterTiddlers ( "[search:modifier[og]sort[title]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[search:modifier,authors:casesensitive[Do]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo" ) ;
2018-10-30 17:39:18 +00:00
expect ( wiki . filterTiddlers ( "[search:modifier,authors:casesensitive[do]sort[title]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "[search:authors:casesensitive,whitespace[John Doe]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[search:modifier:regexp[(d|bl)o(ggs|e)]sort[title]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[search:-modifier,authors:[g]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,filter regexp test,Tiddler Three" ) ;
expect ( wiki . filterTiddlers ( "[search:*:[g]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,filter regexp test,Tiddler Three,TiddlerOne" ) ;
2019-07-31 20:36:12 +00:00
expect ( wiki . filterTiddlers ( "[search:text:anchored[the]]" ) . join ( "," ) ) . toBe ( "TiddlerOne,$:/TiddlerTwo,Tiddler Three,a fourth tiddler" ) ;
2013-05-27 16:59:47 +00:00
} ) ;
2018-12-17 11:19:48 +00:00
it ( "should yield search results that have search tokens spread across different fields" , function ( ) {
expect ( wiki . filterTiddlers ( "[search[fox one]sort[title]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
} ) ;
2013-05-27 16:59:47 +00:00
it ( "should handle the each operator" , function ( ) {
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[each[modifier]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,hasList,TiddlerOne" ) ;
2015-11-13 10:07:24 +00:00
expect ( wiki . filterTiddlers ( "[each:list-item[tags]sort[title]]" ) . join ( "," ) ) . toBe ( "one,two" ) ;
expect ( wiki . filterTiddlers ( "[each:list-item[authors]sort[title]]" ) . join ( "," ) ) . toBe ( "Bloggs,Joe,John Doe" ) ;
2013-05-27 16:59:47 +00:00
} ) ;
it ( "should handle the eachday operator" , function ( ) {
2013-09-21 09:07:49 +00:00
expect ( wiki . filterTiddlers ( "[eachday[modified]sort[title]]" ) . join ( "," ) ) . toBe ( "Tiddler Three,TiddlerOne" ) ;
2013-05-27 16:59:47 +00:00
} ) ;
it ( "should handle the sameday operator" , function ( ) {
2014-01-30 06:11:54 +00:00
expect ( wiki . filterTiddlers ( "[sameday[201304152200]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,TiddlerOne" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
describe ( "testing the is operator" , function ( ) {
it ( "should handle the '[is[current]]' operator" , function ( ) {
2014-04-27 20:58:41 +00:00
var fakeWidget = { getVariable : function ( ) { return "Tiddler Three" ; } } ;
expect ( wiki . filterTiddlers ( "[is[current]]" , fakeWidget ) . join ( "," ) ) . toBe ( "Tiddler Three" ) ;
expect ( wiki . filterTiddlers ( "[[Tiddler Three]is[current]]" , fakeWidget ) . join ( "," ) ) . toBe ( "Tiddler Three" ) ;
expect ( wiki . filterTiddlers ( "[[$:/TiddlerTwo]is[current]]" , fakeWidget ) . join ( "," ) ) . toBe ( "" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!is[current]sort[title]]" , fakeWidget ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,TiddlerOne" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
it ( "should handle the '[is[system]]' operator" , function ( ) {
2019-07-16 15:53:37 +00:00
expect ( wiki . filterTiddlers ( "[is[system]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!is[system]sort[title]]" ) . join ( "," ) ) . toBe ( "a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
it ( "should handle the '[is[shadow]]' operator" , function ( ) {
2014-04-03 19:49:16 +00:00
expect ( wiki . filterTiddlers ( "[all[shadows]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/TiddlerFive,Tiddler8,TiddlerSeventh,TiddlerSix" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!is[shadow]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
it ( "should handle the '[is[missing]]' operator" , function ( ) {
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[all[]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,TiddlerOne,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one,hasList,has filter,filter regexp test" ) ;
2015-01-11 16:44:51 +00:00
expect ( wiki . filterTiddlers ( "[all[missing]]" ) . join ( "," ) ) . toBe ( "TiddlerZero" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!is[missing]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,Tiddler Three,TiddlerOne" ) ;
2013-05-25 16:26:22 +00:00
expect ( wiki . filterTiddlers ( "[[TiddlerOne]is[missing]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "[[TiddlerZero]is[missing]]" ) . join ( "," ) ) . toBe ( "TiddlerZero" ) ;
expect ( wiki . filterTiddlers ( "[!title[Tiddler Three]is[missing]]" ) . join ( "," ) ) . toBe ( "" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!title[Tiddler Three]!is[missing]sort[title]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,a fourth tiddler,filter regexp test,has filter,hasList,one,TiddlerOne" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
it ( "should handle the '[is[orphan]]' operator" , function ( ) {
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[is[orphan]sort[title]]" ) . join ( "," ) ) . toBe ( "a fourth tiddler,filter regexp test,TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[!is[orphan]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,Tiddler Three,one,hasList,has filter" ) ;
2013-05-25 16:26:22 +00:00
expect ( wiki . filterTiddlers ( "[[TiddlerOne]is[orphan]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[[TiddlerOne]!is[orphan]]" ) . join ( "," ) ) . toBe ( "" ) ;
2019-12-19 13:38:09 +00:00
expect ( wiki . filterTiddlers ( "[!title[Tiddler Three]is[orphan]sort[title]]" ) . join ( "," ) ) . toBe ( "a fourth tiddler,filter regexp test,TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[!title[Tiddler Three]!is[orphan]]" ) . join ( "," ) ) . toBe ( "$:/ShadowPlugin,$:/TiddlerTwo,one,hasList,has filter" ) ;
2013-05-25 16:26:22 +00:00
} ) ;
} ) ;
it ( "should handle the operand prefixes" , function ( ) {
expect ( wiki . filterTiddlers ( "[prefix[Tiddler]] +[sort[title]]" ) . join ( "," ) ) . toBe ( "Tiddler Three,TiddlerOne" ) ;
} ) ;
2013-05-27 16:59:47 +00:00
it ( "should handle indirect operands" , function ( ) {
expect ( wiki . filterTiddlers ( "[prefix{Tiddler8}] +[sort[title]]" ) . join ( "," ) ) . toBe ( "Tiddler Three,TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[modifier{Tiddler8!!test-field}] +[sort[title]]" ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
2014-04-27 20:58:41 +00:00
var fakeWidget = { getVariable : function ( ) { return "Tiddler Three" ; } } ;
expect ( wiki . filterTiddlers ( "[modifier{!!modifier}] +[sort[title]]" , fakeWidget ) . join ( "," ) ) . toBe ( "$:/TiddlerTwo,a fourth tiddler,one,Tiddler Three" ) ;
2013-05-27 16:59:47 +00:00
} ) ;
2014-07-25 14:26:44 +00:00
it ( "should handle variable operands" , function ( ) {
var widget = require ( "$:/core/modules/widgets/widget.js" ) ;
// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers
var rootWidget = new widget . widget ( {
type : "widget" ,
children : [ { type : "widget" , children : [ ] } ]
} , {
2019-05-24 20:07:37 +00:00
wiki : wiki ,
2014-07-25 14:26:44 +00:00
document : $tw . document
} ) ;
rootWidget . makeChildWidgets ( ) ;
var anchorWidget = rootWidget . children [ 0 ] ;
rootWidget . setVariable ( "myVar" , "Tidd" ) ;
rootWidget . setVariable ( "myVar2" , "JoeBloggs" ) ;
expect ( wiki . filterTiddlers ( "[prefix<myVar>] +[sort[title]]" , anchorWidget ) . join ( "," ) ) . toBe ( "Tiddler Three,TiddlerOne" ) ;
expect ( wiki . filterTiddlers ( "[modifier<myVar2>] +[sort[title]]" , anchorWidget ) . join ( "," ) ) . toBe ( "TiddlerOne" ) ;
} ) ;
2014-05-12 14:16:44 +00:00
it ( "should handle the before and after operators" , function ( ) {
expect ( wiki . filterTiddlers ( "[list[TiddlerSeventh]after[TiddlerOne]]" ) . join ( "," ) ) . toBe ( "Tiddler Three" ) ;
expect ( wiki . filterTiddlers ( "[list[TiddlerSeventh]after[a fourth tiddler]]" ) . join ( "," ) ) . toBe ( "MissingTiddler" ) ;
expect ( wiki . filterTiddlers ( "[list[TiddlerSeventh]after[MissingTiddler]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "[list[TiddlerSeventh]before[TiddlerOne]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "[list[TiddlerSeventh]before[a fourth tiddler]]" ) . join ( "," ) ) . toBe ( "Tiddler Three" ) ;
expect ( wiki . filterTiddlers ( "[list[TiddlerSeventh]before[MissingTiddler]]" ) . join ( "," ) ) . toBe ( "a fourth tiddler" ) ;
} ) ;
2019-02-07 11:18:53 +00:00
it ( "should handle the string operators" , function ( ) {
expect ( wiki . filterTiddlers ( "John Paul George Ringo +[length[]]" ) . join ( "," ) ) . toBe ( "4,4,6,5" ) ;
expect ( wiki . filterTiddlers ( "John Paul George Ringo +[uppercase[]]" ) . join ( "," ) ) . toBe ( "JOHN,PAUL,GEORGE,RINGO" ) ;
expect ( wiki . filterTiddlers ( "John Paul George Ringo +[lowercase[]]" ) . join ( "," ) ) . toBe ( "john,paul,george,ringo" ) ;
expect ( wiki . filterTiddlers ( "John Paul George Ringo +[split[]]" ) . join ( "," ) ) . toBe ( "J,o,h,n,P,a,u,l,G,e,o,r,g,e,R,i,n,g,o" ) ;
2019-06-21 09:36:53 +00:00
expect ( wiki . filterTiddlers ( "[[John. Paul. George. Ringo.]] +[split[.]trim[]]" ) . join ( "," ) ) . toBe ( "John,Paul,George,Ringo," ) ;
expect ( wiki . filterTiddlers ( "John Paul George Ringo +[split[e]]" ) . join ( "," ) ) . toBe ( "John,Paul,G,org,,Ringo" ) ;
2019-02-07 12:48:23 +00:00
expect ( wiki . filterTiddlers ( "John Paul George Ringo +[join[ ]split[e]join[ee]split[ ]]" ) . join ( "," ) ) . toBe ( "John,Paul,Geeorgee,Ringo" ) ;
2019-02-07 11:18:53 +00:00
expect ( wiki . filterTiddlers ( "[[ John ]] [[Paul ]] [[ George]] Ringo +[trim[]join[-]]" ) . join ( "," ) ) . toBe ( "John-Paul-George-Ringo" ) ;
} ) ;
it ( "should handle the mathematics operators" , function ( ) {
2019-02-06 14:19:55 +00:00
expect ( wiki . filterTiddlers ( "[[2]add[2]]" ) . join ( "," ) ) . toBe ( "4" ) ;
expect ( wiki . filterTiddlers ( "[[4]subtract[2]]" ) . join ( "," ) ) . toBe ( "2" ) ;
expect ( wiki . filterTiddlers ( "[[24]divide[8]]" ) . join ( "," ) ) . toBe ( "3" ) ;
expect ( wiki . filterTiddlers ( "[[355]divide[113]sign[]multiply[4]]" ) . join ( "," ) ) . toBe ( "4" ) ;
expect ( wiki . filterTiddlers ( "[[355]divide[113]add[0.5]round[]multiply[4]]" ) . join ( "," ) ) . toBe ( "16" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[sum[]]" ) . join ( "," ) ) . toBe ( "10" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[product[]]" ) . join ( "," ) ) . toBe ( "24" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[maxall[]]" ) . join ( "," ) ) . toBe ( "4" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[minall[]]" ) . join ( "," ) ) . toBe ( "1" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[max[2]]" ) . join ( "," ) ) . toBe ( "2,2,3,4" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[min[2]]" ) . join ( "," ) ) . toBe ( "1,2,2,2" ) ;
} ) ;
2019-06-11 08:38:14 +00:00
it ( "should handle the allafter operator" , function ( ) {
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter[]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter:include[]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter[1]]" ) . join ( "," ) ) . toBe ( "2,3,4" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter:include[1]]" ) . join ( "," ) ) . toBe ( "1,2,3,4" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter[2]]" ) . join ( "," ) ) . toBe ( "3,4" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter:include[2]]" ) . join ( "," ) ) . toBe ( "2,3,4" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter[3]]" ) . join ( "," ) ) . toBe ( "4" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter:include[3]]" ) . join ( "," ) ) . toBe ( "3,4" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter[4]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter:include[4]]" ) . join ( "," ) ) . toBe ( "4" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter[5]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allafter:include[5]]" ) . join ( "," ) ) . toBe ( "" ) ;
} ) ;
it ( "should handle the allbefore operator" , function ( ) {
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore[]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore:include[]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore[1]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore:include[1]]" ) . join ( "," ) ) . toBe ( "1" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore[2]]" ) . join ( "," ) ) . toBe ( "1" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore:include[2]]" ) . join ( "," ) ) . toBe ( "1,2" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore[3]]" ) . join ( "," ) ) . toBe ( "1,2" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore:include[3]]" ) . join ( "," ) ) . toBe ( "1,2,3" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore[4]]" ) . join ( "," ) ) . toBe ( "1,2,3" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore:include[4]]" ) . join ( "," ) ) . toBe ( "1,2,3,4" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore[5]]" ) . join ( "," ) ) . toBe ( "" ) ;
expect ( wiki . filterTiddlers ( "1 2 3 4 +[allbefore:include[5]]" ) . join ( "," ) ) . toBe ( "" ) ;
} ) ;
2019-05-24 20:07:37 +00:00
}
2013-05-25 16:26:22 +00:00
} ) ;
} ) ( ) ;