1.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java Sun Jan 20 14:29:10 2013 +0100
1.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java Mon Jan 21 10:06:42 2013 +0100
1.3 @@ -17,6 +17,8 @@
1.4 */
1.5 package org.apidesign.bck2brwsr.htmlpage;
1.6
1.7 +import java.util.ArrayList;
1.8 +import java.util.List;
1.9 import org.apidesign.bck2brwsr.htmlpage.api.ComputedProperty;
1.10 import org.apidesign.bck2brwsr.htmlpage.api.Page;
1.11 import org.apidesign.bck2brwsr.htmlpage.api.Property;
1.12 @@ -28,7 +30,8 @@
1.13 * @author Jaroslav Tulach <jtulach@netbeans.org>
1.14 */
1.15 @Page(xhtml = "Empty.html", className = "Model", properties = {
1.16 - @Property(name = "value", type = int.class)
1.17 + @Property(name = "value", type = int.class),
1.18 + @Property(name = "unrelated", type = long.class)
1.19 })
1.20 public class ModelTest {
1.21 @Test public void classGeneratedWithSetterGetter() {
1.22 @@ -43,8 +46,36 @@
1.23 assertEquals(16, Model.getPowerValue());
1.24 }
1.25
1.26 + @Test public void derivedPropertiesAreNotified() {
1.27 + MockKnockout my = new MockKnockout();
1.28 + MockKnockout.next = my;
1.29 +
1.30 + Model.applyBindings();
1.31 +
1.32 + Model.setValue(33);
1.33 +
1.34 + assertEquals(my.mutated.size(), 2, "Two properties changed: " + my.mutated);
1.35 + assertTrue(my.mutated.contains("powerValue"), "Power value is in there: " + my.mutated);
1.36 + assertTrue(my.mutated.contains("value"), "Simple value is in there: " + my.mutated);
1.37 +
1.38 + my.mutated.clear();
1.39 +
1.40 + Model.setUnrelated(44);
1.41 + assertEquals(my.mutated.size(), 1, "One property changed");
1.42 + assertTrue(my.mutated.contains("unrelated"), "Its name is unrelated");
1.43 + }
1.44 +
1.45 @ComputedProperty
1.46 static int powerValue(int value) {
1.47 return value * value;
1.48 }
1.49 +
1.50 + static class MockKnockout extends Knockout {
1.51 + List<String> mutated = new ArrayList<String>();
1.52 +
1.53 + @Override
1.54 + public void valueHasMutated(String prop) {
1.55 + mutated.add(prop);
1.56 + }
1.57 + }
1.58 }