pWiki/pwiki2-test.js
Alex A. Naanou 6de491a3fe several fixes...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2022-11-10 21:04:20 +03:00

316 lines
7.4 KiB
JavaScript
Executable File

/**********************************************************************
*
*
*
**********************************************************************/
((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define)
(function(require){ var module={} // make module AMD/node compatible...
/*********************************************************************/
var object = require('ig-object')
var pwiki = require('./pwiki2')
module.path = pwiki.path
// XXX for some reason this does not run quietly in browser
var pouchdbstore = require('./pwiki/store/pouchdb')
// XXX need to prevent this from breaking in browser...
var filestore = require('./pwiki/store/file')
// XXX this fails silently in browser...
//var bootstrap = require('./bootstrap')
//---------------------------------------------------------------------
/*/ // XXX chained system store...
store.next.load(
// Create a new system action-set with paths starting with 'System/'
Object.entries(System)
.reduce(function(res, [key, func]){
res[pwpath.join('System', key)] = func
return res }, {}))
//*/
module.setup =
Promise.all([
pwiki.store.update('@file-ro', {
__proto__: filestore.FileStoreRO,
__path__: 'bootstrap',
}),
pwiki.store.update('@file', {
__proto__: filestore.FileStore,
__path__: 'data/fs',
}),
pwiki.store.update('@pouch', {
__proto__: pouchdbstore.PouchDBStore,
__path__: 'data/pouch',
}),
])
//---------------------------------------------------------------------
// XXX experiments and testing...
// XXX for persistent stores test if the data is already loaded here...
//pwiki.store.load(bootstrap)
// XXX TEST...
// XXX add filter tests...
pwiki.pwiki
.update({
location: '/test/markdown',
text: object.doc`
some text with inline @source(./path) macros...
@filter(markdown)` })
.update({
location: '/test/recursion',
text: object.doc` @include(.) ` })
.update({
location: '/test/recursionA',
text: object.doc` @include(../recursionB) ` })
.update({
location: '/test/recursionB',
text: object.doc` @include(../recursionA) ` })
.update({
location: '/test/recursionC',
text: object.doc` @include(recursionC) ` })
.update({
location: '/test/sort/*',
order: ['a', 'c', 'b'], })
.update({
location: '/test/sort/a',
text: 'a', })
.update({
location: '/test/sort/b',
text: 'b', })
.update({
location: '/test/sort/c',
text: 'c', })
.update({
location: '/test/comments',
text: object.doc`
<!--[pWiki[ This text should be visible... ]]-->
<!--[pWiki[
This text should be visible too...
]]-->
<pwiki-comment>
And this should not be visible...
</pwiki-comment>
`,
})
.update({
location: '/test/test',
text: 'test', })
.update({
location: '/test/filter',
text: object.doc`
Should be: AAAAaaaaAAAAaaaa : test<filter -test>test</filter>@include(../test)@include(../test isolated)
@filter(test)
`, })
.update({
location: '/test/filter-local',
text: object.doc`
Should be: aaaaAAAAaaaa : test<filter test>test</filter>test
`, })
.update({
location: '/test/filter-isolated',
text: object.doc`
Should be: AAAAaaaaAAAA : test<filter isolated>test</filter>test
@filter(test)
`, })
.update({
location: '/test/quote',
text: object.doc`
Inline quoted text:
---
<quote>
this test should not get expanded: @now()
</quote>
---
Included quoted text:
---
<quote src="/test/slots"/>
---
Quote filters:
---
<quote filter="quote-tags test">
test <now />...
</quote>
---
`, })
// XXX BUG: this prints '' for each <quote>
.update({
location: '/test/macro-quote',
text: object.doc`
Outside of macro:
<quote src="/test/a"/>
In macro:
<macro src="/test/*/path" join="\n">-- <quote src="/test/a"/></macro>
`, })
.update({
location: '/test/wikiword',
text: object.doc`
This is a basic WikiWord test, all
the [basic] forms and Versions of
/inline/links.
@filter(wikiword markdown) `, })
.update({
location: '/test/slot',
text: object.doc`
Testing slot mechanics...
This slot is (<slot name="empty">unfilled</slot>)
...while this (<slot name="non-empty">text should be replaced...</slot>)
<slot name="non-empty">text is filling a slot</slot>
`, })
.update({
location: '/test/slots',
text: object.doc`
Sequential:
<slot name="sequential">unfilled</slot>
<slot name="sequential">filled</slot>
<slot name="sequential">refilled</slot>
<br><br>
Nested:
<slot name="nested">
unfilled
<slot name="nested">
filled
<slot name="nested">
refilled
</slot>
</slot>
</slot>
<br><br>
Content: A B C:
<slot name="slot-content">A</slot>
<slot name="slot-content"><content/> B</slot>
<slot name="slot-conten"><content/> C</slot>
<br><br>
Nested content: A B C:
<slot name="nested-slot-content">
A
<slot name="nested-slot-content">
<content/> B
<slot name="nested-slot-content">
<content/> C
</slot>
</slot>
</slot>
<br><br>
Mixed content: X A B C Z:
<slot name="mixed-slot-content">
X
</slot>
<slot name="mixed-slot-content">
<content/> A
<slot name="mixed-slot-content">
<content/> B
<slot name="mixed-slot-content">
<content/> C
</slot>
</slot>
</slot>
<slot name="mixed-slot-content">
<content/> Z
</slot> `, })
.update({
location: '/test/nesting',
text: object.doc`
Quote in macro:
<macro src=".">
<quote src="./path"/>
</macro>
<hr>
Quote in slot:
<slot name="moo">
<quote src="./path"/>
</slot>` })
.update({
location: '/test/a',
text: 'a',
})
.update({
location: '/test/b',
text: 'b',
})
.update({
location: '/test/c',
text: 'c',
})
.update({
location: '/test/c/x',
text: 'x',
})
.update({
location: '/test/c/y',
text: 'y',
})
.update({
location: '/test/d/z',
text: 'z',
})
.update({
location: '/page',
text: '>>> PAGE\n'
+'\n'
+'@include(/test recursive="Recursion type 2 (<now/>)")\n'
+'\n'
+'@slot(name=b text="filled slot")\n'
+ '<<< PAGE\n',
})
.update({
location: '/other',
text: 'OTHER',
})
.update({
location: '/test',
text: 'TEST\n'
+'\n'
+'globally filtered test text...\n'
+'\n'
// XXX this does not seem to work...
+'<filter -test>...unfiltered test text</filter>\n'
+'\n'
//+'<filter test>locally filtered test text</filter>\n'
+'\n'
// XXX slots do not seem to work...
+'@slot(name=a text="non-filled slot a")\n'
+'\n'
+'@slot(name=b text="non-filled slot b")\n'
+'\n'
+'Including /other #1: @include(/other)\n'
+'Including /other #2: @include(/other)\n'
+'\n'
+'Including /test: @include(/test recursive="Recursion type 1 (<now/>)")\n'
+'\n'
+'Including /page: @include(/page recursive="...")\n'
+'\n'
+'Sourceing /: \\@include(/)\n'
+'\n'
// XXX slots do not seem to work...
+'<slot name="a">filled slot a</slot>\n'
+'\n'
+'@filter(test)',
})
//*/
module.pwiki = pwiki.pwiki
/**********************************************************************
* vim:set ts=4 sw=4 : */ return module })