Private
Public Access
addet test set
This commit is contained in:
1 parent
d370f992ce
commit
b0f35bf3cc
21 files changed
+1796
-183
No files matched your search
@@ -0,0 +1,48 @@
|
||||
// Verify picture controls on real event-list renderer using fabricated records.
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
const vm = require('node:vm');
|
||||
const html = fs.readFileSync(path.join(__dirname, '../halloween/index.html'), 'utf8');
|
||||
const renderer = html.slice(html.indexOf(' async function refreshEvents() {'), html.indexOf(' async function refreshDb() {'));
|
||||
class Element {
|
||||
constructor(tag) {this.tag=tag; this.children=[]; this.textContent='';}
|
||||
append(...children) {this.children.push(...children);}
|
||||
prepend(...children) {this.children.unshift(...children);}
|
||||
add(child) {this.append(child);}
|
||||
setAttribute(name,value) {this[name]=value;}
|
||||
replaceChildren() {this.children=[];}
|
||||
}
|
||||
(async () => {
|
||||
const list = new Element('ul');
|
||||
let allowDelete = false, deleted = false;
|
||||
const calls = [];
|
||||
const record = {id:1, occurred_at:'2026-10-14T10:00:00+00:00', kind:'motion_direction_test', mode:'sanft', profile_id:null};
|
||||
const context = vm.createContext({
|
||||
document:{createElement:tag => new Element(tag)},
|
||||
$:id => id === 'events-list' ? list : new Element('p'),
|
||||
profiles:[], names:{sanft:'Sanft'}, Option:class {},
|
||||
confirm:() => allowDelete,
|
||||
api:async (url, body, method) => {calls.push({url,method}); deleted=true;},
|
||||
fetch:async () => ({ok:true, json:async () => ({events:[{...record,image_url:deleted ? null : '/api/events/1/image'}]})})
|
||||
});
|
||||
vm.runInContext(renderer, context);
|
||||
await vm.runInContext('refreshEvents()', context);
|
||||
let item = list.children[0];
|
||||
const link = item.children.find(element => element.tag === 'a');
|
||||
assert.equal(link.href, '/api/events/1/image');
|
||||
assert.equal(link.textContent, 'Bild ansehen');
|
||||
assert.equal(link.children[0].src, link.href);
|
||||
assert.equal(link.children[0].loading, 'lazy');
|
||||
const remove = item.children.find(element => element.textContent === 'Bild löschen');
|
||||
await remove.onclick();
|
||||
assert.equal(calls.length, 0, 'Cancel never deletes a picture');
|
||||
allowDelete=true;
|
||||
await remove.onclick();
|
||||
assert.deepEqual(calls, [{url:'/api/events/1/image',method:'DELETE'}]);
|
||||
item=list.children[0];
|
||||
assert.equal(item.children.some(element => element.tag === 'a'), false);
|
||||
assert.ok(item.children.some(element => element.textContent.includes('Kein gespeichertes Bild')));
|
||||
assert.ok(item.children.some(element => element.textContent.includes('#1')));
|
||||
console.log('Event image UI tests passed');
|
||||
})().catch(error => {console.error(error); process.exitCode=1;});
|
||||
Reference in new issue
Block a user