@seanox/aspect-js
Version:
full stack JavaScript framework for SPAs incl. reactivity rendering, mvc / mvvm, models, expression language, datasource, routing, paths, unit test and some more
78 lines (74 loc) • 2.16 kB
HTML
<html>
<head>
<meta charset="ISO-8859-1">
<title>Seanox aspect-js test environment</title>
<style>
body {
font-family: monospace;
white-space: pre;
}
</style>
<script src="aspect-js.js"></script>
<script type="text/javascript">
Test.activate();
const snapshots = [];
Composite.listen(Composite.EVENT_RENDER_END, () => {
const snapshot = document.body.textContent.trim();
snapshots.push(snapshot);
const count = document.querySelectorAll("script[type=\"text/test\"]").length;
if (snapshots.length === count)
Test.start();
if (snapshots.length >= count)
Assert.assertEquals("expected {1} steps but was {2}", count, snapshots.length);
});
Test.create({test() {
snapshots.forEach((snapshot, index) => {
console.log(`Test based on script #${index +1}`);
Assert.assertSameText(document.querySelectorAll("script[type='text/test']")[index].textContent, snapshot);
});
}});
const modelA = {
valueA: "aaabbb"
}.reactive();
const modelB = modelA.reactive();
window.setTimeout(() => {modelB.valueA = "a2b4c6d8e0";}, 1000);
</script>
<script type="text/test">
_A_aaabbb_
_B_aaabbb_
_C_AAABBB_
_D_bb_
</script>
<script type="text/test">
_A_a2b4c6d8e0_
_B_aaabbb_
_C_AAABBB_
_D_bb_
</script>
<script type="text/test">
_A_a2b4c6d8e0_
_B_a2b4c6d8e0_
_C_AAABBB_
_D_bb_
</script>
<script type="text/test">
_A_a2b4c6d8e0_
_B_a2b4c6d8e0_
_C_A2B4C6D8E0_
_D_bb_
</script>
<script type="text/test">
_A_a2b4c6d8e0_
_B_a2b4c6d8e0_
_C_A2B4C6D8E0_
_D_c6d8e0_
</script>
</head>
<body>
_A_{{modelA.valueA}}_
_B_{{modelA.valueA}}_
_C_{{modelA.valueA.toUpperCase()}}_
_D_{{modelA.valueA.substring(4)}}_
</body>
</html>