diff -r 16fd25f3a75d -r 22358b42ec2a javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java Tue Mar 26 09:24:26 2013 +0100 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java Sun Mar 31 05:34:15 2013 +0200 @@ -36,7 +36,8 @@ @Page(xhtml="Knockout.xhtml", className="KnockoutModel", properties={ @Property(name="name", type=String.class), @Property(name="results", type=String.class, array = true), - @Property(name="callbackCount", type=int.class) + @Property(name="callbackCount", type=int.class), + @Property(name="people", type=PersonImpl.class, array = true) }) public class KnockoutTest { @@ -98,11 +99,44 @@ assert cnt == 2 : "Two children now, but was " + cnt; } + @HtmlFragment( + "\n" + ) + @BrwsrTest public void displayContentOfArrayOfPeople() { + KnockoutModel m = new KnockoutModel(); + m.getPeople().add(new Person()); + m.applyBindings(); + + int cnt = countChildren("ul"); + assert cnt == 1 : "One child, but was " + cnt; + + m.getPeople().add(new Person()); + + cnt = countChildren("ul"); + assert cnt == 2 : "Two children now, but was " + cnt; + + triggerChildClick("ul", 1); + + assert 1 == m.getCallbackCount() : "One callback " + m.getCallbackCount(); + + cnt = countChildren("ul"); + assert cnt == 1 : "Again one child, but was " + cnt; + } + @OnFunction static void call(KnockoutModel m, String data) { m.setName(data); m.setCallbackCount(m.getCallbackCount() + 1); } + + @OnFunction + static void removePerson(KnockoutModel model, Person data) { + model.setCallbackCount(model.getCallbackCount() + 1); + model.getPeople().remove(data); + } + @ComputedProperty static String helloMessage(String name) {