javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java
branchmodel
changeset 763 ecd7294f1e17
parent 530 3ce069ec3312
child 767 2b1cf4f012f2
     1.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java	Tue Jan 22 21:57:27 2013 +0100
     1.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java	Mon Feb 18 19:42:02 2013 +0100
     1.3 @@ -17,6 +17,7 @@
     1.4   */
     1.5  package org.apidesign.bck2brwsr.htmlpage;
     1.6  
     1.7 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
     1.8  import org.apidesign.bck2brwsr.htmlpage.api.ComputedProperty;
     1.9  import org.apidesign.bck2brwsr.htmlpage.api.OnEvent;
    1.10  import org.apidesign.bck2brwsr.htmlpage.api.Page;
    1.11 @@ -31,7 +32,8 @@
    1.12   * @author Jaroslav Tulach <jtulach@netbeans.org>
    1.13   */
    1.14  @Page(xhtml="Knockout.xhtml", className="KnockoutModel", properties={
    1.15 -    @Property(name="name", type=String.class)
    1.16 +    @Property(name="name", type=String.class),
    1.17 +    @Property(name="results", type=String.class, array = true)
    1.18  }) 
    1.19  public class KnockoutTest {
    1.20      
    1.21 @@ -50,6 +52,25 @@
    1.22          assert "Jardo".equals(m.getName()) : "Name property updated: " + m.getName();
    1.23      }
    1.24      
    1.25 +    @HtmlFragment(
    1.26 +        "<ul id='ul' data-bind='foreach: results'>\n"
    1.27 +        + "  <li><b data-bind='text: $data'></b></li>\n"
    1.28 +        + "</ul>\n"
    1.29 +    )
    1.30 +    @BrwsrTest public void displayContentOfArray() {
    1.31 +        KnockoutModel m = new KnockoutModel();
    1.32 +        m.getResults().add("Ahoj");
    1.33 +        m.applyBindings();
    1.34 +        
    1.35 +        int cnt = countChildren("ul");
    1.36 +        assert cnt == 1 : "One child, but was " + cnt;
    1.37 +        
    1.38 +        m.getResults().add("hello");
    1.39 +
    1.40 +        cnt = countChildren("ul");
    1.41 +        assert cnt == 2 : "Two children now, but was " + cnt;
    1.42 +    }
    1.43 +    
    1.44      @ComputedProperty
    1.45      static String helloMessage(String name) {
    1.46          return "Hello " + name + "!";
    1.47 @@ -59,4 +80,11 @@
    1.48      public static Object[] create() {
    1.49          return VMTest.create(KnockoutTest.class);
    1.50      }
    1.51 +    
    1.52 +    @JavaScriptBody(args = { "id" }, body = 
    1.53 +          "var e = window.document.getElementById(id);\n "
    1.54 +        + "if (typeof e === 'undefined') return -2;\n "
    1.55 +        + "return e.children.length;\n "
    1.56 +    )
    1.57 +    private static native int countChildren(String id);
    1.58  }