javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java
branchmodel
changeset 934 19b4ddc302a6
parent 921 cd0a40987abb
child 935 2cd6f67472c4
     1.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java	Wed Apr 03 11:37:52 2013 +0200
     1.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java	Fri Apr 05 12:43:17 2013 +0200
     1.3 @@ -18,16 +18,26 @@
     1.4  package org.apidesign.bck2brwsr.htmlpage;
     1.5  
     1.6  import java.util.Iterator;
     1.7 +import org.apidesign.bck2brwsr.htmlpage.api.OnReceive;
     1.8 +import org.apidesign.bck2brwsr.htmlpage.api.Page;
     1.9 +import org.apidesign.bck2brwsr.htmlpage.api.Property;
    1.10 +import org.apidesign.bck2brwsr.vmtest.BrwsrTest;
    1.11 +import org.apidesign.bck2brwsr.vmtest.Http;
    1.12 +import org.apidesign.bck2brwsr.vmtest.VMTest;
    1.13  import org.json.JSONException;
    1.14  import org.json.JSONObject;
    1.15  import org.json.JSONTokener;
    1.16  import org.testng.annotations.Test;
    1.17  import static org.testng.Assert.*;
    1.18 +import org.testng.annotations.Factory;
    1.19  
    1.20  /** Need to verify that models produce reasonable JSON objects.
    1.21   *
    1.22   * @author Jaroslav Tulach <jtulach@netbeans.org>
    1.23   */
    1.24 +@Page(xhtml = "Empty.html", className = "JSONik", properties = {
    1.25 +    @Property(name = "fetched", type = PersonImpl.class)
    1.26 +})
    1.27  public class JSONTest {
    1.28      
    1.29      @Test public void personToString() throws JSONException {
    1.30 @@ -108,4 +118,60 @@
    1.31          assertEquals(o.getJSONArray("nicknames").getString(1), n2);
    1.32          assertEquals(o.getJSONArray("age").getInt(1), 73);
    1.33      }
    1.34 +    
    1.35 +    
    1.36 +    @OnReceive(url="/{url}")
    1.37 +    static void fetch(Person p, JSONik model) {
    1.38 +        model.setFetched(p);
    1.39 +        throw new IllegalStateException("Got him: " + p);
    1.40 +    }
    1.41 +    
    1.42 +    @Http(@Http.Resource(
    1.43 +        content = "{'firstName': 'Sitar', 'sex': 'MALE'}", 
    1.44 +        path="/person.json", 
    1.45 +        mimeType = "application/json"
    1.46 +    ))
    1.47 +    @BrwsrTest public void loadAndParseJSON() {
    1.48 +        JSONik js = new JSONik();
    1.49 +        js.applyBindings();
    1.50 +        
    1.51 +        js.fetch("person.json");
    1.52 +        
    1.53 +        Person p = null;
    1.54 +        for (int i = 0; i < 10000000; i++) {
    1.55 +            if (js.getFetched() != null) {
    1.56 +                p = js.getFetched();
    1.57 +            }
    1.58 +        }
    1.59 +        assert p != null : "We should get our person back: " + p;
    1.60 +        assert "Sitar".equals(p.getFirstName()) : "Expecting Sitar: " + p.getFirstName();
    1.61 +        assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex();
    1.62 +    }
    1.63 +    
    1.64 +    @Http(@Http.Resource(
    1.65 +        content = "[{'firstName': 'Sitar', 'sex': 'MALE'}]", 
    1.66 +        path="/person.json", 
    1.67 +        mimeType = "application/json"
    1.68 +    ))
    1.69 +    @BrwsrTest public void loadAndParseJSONArray() {
    1.70 +        JSONik js = new JSONik();
    1.71 +        js.applyBindings();
    1.72 +        
    1.73 +        js.fetch("person.json");
    1.74 +        
    1.75 +        Person p = null;
    1.76 +        for (int i = 0; i < 10000000; i++) {
    1.77 +            if (js.getFetched() != null) {
    1.78 +                p = js.getFetched();
    1.79 +            }
    1.80 +        }
    1.81 +        assert p != null : "We should get our person back: " + p;
    1.82 +        assert "Sitar".equals(p.getFirstName()) : "Expecting Sitar: " + p.getFirstName();
    1.83 +        assert Sex.MALE.equals(p.getSex()) : "Expecting MALE: " + p.getSex();
    1.84 +    }
    1.85 +    
    1.86 +    @Factory public static Object[] create() {
    1.87 +        return VMTest.create(JSONTest.class);
    1.88 +    }
    1.89 +    
    1.90  }