helma/src/dist/apps/test/tests/HopObjectGeneric.js

93 lines
2.5 KiB
JavaScript

tests = [
'testSize',
'testContent',
'testGroupContent',
'testRemove',
'testAdd'
];
var org;
var size = 16;
function setup() {
org = new Organisation();
org.name = "GenericOrg";
var i = 0, person;
function addPerson(collection) {
person = new Person();
person.name = "GenericPerson " + i.format("00");
collection.add(person);
i++;
}
// add first half to both collections of transient parent ...
while (i < 4)
addPerson(org.generic);
while (i < 8)
addPerson(org.groupedGeneric);
root.organisations.add(org);
// ... second half to both collections of persistent parent.
while (i < 12)
addPerson(org.generic);
while (i < size)
addPerson(org.groupedGeneric);
res.commit();
}
function testSize() {
assertEqual(org.generic.size(), size);
org.invalidate();
assertEqual(org.generic.size(), size);
}
function testContent() {
var list = org.generic.list();
assertEqual(list.length, size);
for (var i = 0; i < list.length; i++) {
assertEqual(list[i].name, "GenericPerson " + i.format("00"));
}
}
function testGroupContent() {
var list = org.groupedGeneric.list();
assertEqual(list.length, size);
for (var i = 0; i < list.length; i++) {
assertEqual(list[i].groupname, "GenericPerson " + i.format("00"));
assertEqual(list[i].size(), 1);
assertEqual(list[i].get(0).name, "GenericPerson " + i.format("00"));
}
}
function testRemove() {
var person = org.generic.get(size/2);
org.generic.removeChild(person);
assertEqual(org.generic.size(), size - 1);
res.rollback();
// note: removeChild does not remove the node, nor does it
// unset the constraints between parent and child, so after a rollback
// the object is back in place. While this behaviour is disputable,
// until this is so we test for it.
assertEqual(org.generic.size(), size);
}
function testAdd() {
var person = new Person();
org.generic.add(person);
assertEqual(org.generic.size(), size + 1);
assertEqual(org.groupedGeneric.size(), size);
res.commit();
// note: even after commit the grouped collection must not grow
// since we added a person without a name
assertEqual(org.generic.size(), size + 1);
assertEqual(org.groupedGeneric.size(), size);
}
function cleanup() {
var persons = org.generic.list();
for (let person of persons) {
person.remove();
}
org.remove();
}