104 lines
2.5 KiB
JavaScript
104 lines
2.5 KiB
JavaScript
|
tests = [
|
||
|
"testSize",
|
||
|
"testAddRemoveSmall",
|
||
|
"testAddRemoveLarge",
|
||
|
"testListSmall",
|
||
|
"testListLarge"
|
||
|
];
|
||
|
|
||
|
var helma, ikea;
|
||
|
var small = 3, large = 1234;
|
||
|
|
||
|
function setup() {
|
||
|
ikea = makeOrg('Ikea', large);
|
||
|
helma = makeOrg('Helma', small);
|
||
|
}
|
||
|
|
||
|
function testSize() {
|
||
|
assertEqual(ikea.persons.size(), large);
|
||
|
assertEqual(helma.persons.size(), small);
|
||
|
}
|
||
|
|
||
|
function testAddRemoveSmall(org) {
|
||
|
testAddRemove(helma, small);
|
||
|
}
|
||
|
|
||
|
function testAddRemoveLarge(org) {
|
||
|
testAddRemove(ikea, large);
|
||
|
}
|
||
|
|
||
|
function testAddRemove(org, size) {
|
||
|
var person = new Person();
|
||
|
person.name = "TestPerson";
|
||
|
person.organisation = org;
|
||
|
person.persist();
|
||
|
res.commit();
|
||
|
assertEqual(org.persons.size(), size + 1);
|
||
|
org.persons.prefetchChildren();
|
||
|
assertEqual(org.persons.indexOf(person), size);
|
||
|
assertEqual(org.persons.contains(person), size);
|
||
|
assertEqual(person.href(), org.persons.href() + "TestPerson/");
|
||
|
person.remove();
|
||
|
res.commit();
|
||
|
assertEqual(org.persons.size(), size);
|
||
|
assertEqual(org.persons.indexOf(person), -1);
|
||
|
assertEqual(org.persons.contains(person), -1);
|
||
|
}
|
||
|
|
||
|
function testListSmall() {
|
||
|
testList(helma, small);
|
||
|
}
|
||
|
|
||
|
function testListLarge() {
|
||
|
testList(ikea, large);
|
||
|
}
|
||
|
|
||
|
function testList(org, size) {
|
||
|
function iterate(list, start, length) {
|
||
|
assertEqual(list.length, length);
|
||
|
for (var i = 0; i < length; i++) {
|
||
|
assertEqual(list[i].name, "Person " + org.name + " " + (start + i).format("0000"));
|
||
|
}
|
||
|
}
|
||
|
iterate(org.persons.list(), 0, size);
|
||
|
org.persons.invalidate();
|
||
|
iterate(org.persons.list(), 0, size);
|
||
|
org.persons.invalidate();
|
||
|
iterate(org.persons.list(1, size - 2), 1, size - 2);
|
||
|
}
|
||
|
|
||
|
function cleanup() {
|
||
|
var persons = root.persons.list();
|
||
|
for each (var person in persons) {
|
||
|
person.remove();
|
||
|
}
|
||
|
ikea.remove();
|
||
|
helma.remove();
|
||
|
}
|
||
|
|
||
|
function makeOrg(name, size) {
|
||
|
var org = new Organisation();
|
||
|
org.name = name;
|
||
|
root.organisations.add(org);
|
||
|
|
||
|
for (var i = 0; i < size; i++) {
|
||
|
var person = new Person();
|
||
|
person.name = "Person " + name + " " + i.format("0000");
|
||
|
person.organisation = org;
|
||
|
root.persons.add(person);
|
||
|
}
|
||
|
res.commit();
|
||
|
return org;
|
||
|
}
|
||
|
|
||
|
// debugging helpers
|
||
|
function dumpDataChange(message) {
|
||
|
res.debug(message + ": ");
|
||
|
dumpDataChangeFor("Person");
|
||
|
dumpDataChangeFor("Organisation");
|
||
|
}
|
||
|
|
||
|
function dumpDataChangeFor(name) {
|
||
|
res.debug(name + ": " + app.__app__.getDbMapping(name).getLastDataChange());
|
||
|
}
|