test_Layer_HTTPRequest.html 7.34 KB
<html>
<head>
  <script src="../lib/OpenLayers.js"></script>
  <script type="text/javascript"><!--
    var layer; 

    var name = "Test Layer";
    var url = "http://octo.metacarta.com/cgi-bin/mapserv";
    var params = { map: '/mapdata/vmap_wms.map', 
                   layers: 'basic', 
                   format: 'image/png'};
    var options = { chicken: 151, foo: "bar" };

    function test_01_Layer_HTTPRequest_constructor (t) {
        t.plan( 5 );

        layer = new OpenLayers.Layer.HTTPRequest(name, url, params, options);
        
        t.ok( layer instanceof OpenLayers.Layer.HTTPRequest, "new OpenLayers.Layer.HTTPRequest returns correctly typed object" );

        // correct bubbling up to Layer.initialize()
        t.eq( layer.name, name, "layer.name is correct" );
        t.ok( ((layer.options["chicken"] == 151) && (layer.options["foo"] == "bar")), "layer.options correctly set" );

        // HTTPRequest-specific properties
        t.eq( layer.url, url, "layer.name is correct" );
        t.ok( ((layer.params["map"] == '/mapdata/vmap_wms.map') && 
               (layer.params["layers"] == "basic") &&
               (layer.params["format"] == "image/png")), "layer.params correctly set" );


    }

    function test_02_Layer_HTTPRequest_clone (t) {
        t.plan( 6 );
        
        var toClone = new OpenLayers.Layer.HTTPRequest(name, url, params, options);
        toClone.chocolate = 5;

        var layer = toClone.clone();

        t.eq(layer.chocolate, 5, "correctly copied randomly assigned property");

        t.ok( layer instanceof OpenLayers.Layer.HTTPRequest, "new OpenLayers.Layer.HTTPRequest returns correctly typed object" );

        // correct bubbling up to Layer.initialize()
        t.eq( layer.name, name, "layer.name is correct" );
        t.ok( ((layer.options["chicken"] == 151) && (layer.options["foo"] == "bar")), "layer.options correctly set" );

        // HTTPRequest-specific properties
        t.eq( layer.url, url, "layer.name is correct" );
        t.ok( ((layer.params["map"] == '/mapdata/vmap_wms.map') && 
               (layer.params["layers"] == "basic") &&
               (layer.params["format"] == "image/png")), "layer.params correctly set" );

    }

    function test_03_Layer_HTTPRequest_setUrl (t) {
        t.plan( 1 );

        layer = new OpenLayers.Layer.HTTPRequest(name, url, params, options);
        
        layer.setUrl("foo");
        t.eq( layer.url, "foo", "setUrl() works");
    }

    function test_05_Layer_HTTPRequest_mergeNewParams (t) {
        t.plan( 3 );

        layer = new OpenLayers.Layer.HTTPRequest(name, url, params, options);
        
        var newParams = { layers: 'sooper', 
                          chickpeas: 'image/png'};

        layer.mergeNewParams(newParams);
        
        t.eq( layer.params.layers, "sooper", "mergeNewParams() overwrites well");
        t.eq( layer.params.chickpeas, "image/png", "mergeNewParams() adds well");

        newParams.chickpeas = 151;

        t.eq( layer.params.chickpeas, "image/png", "mergeNewParams() makes clean copy of hash");


    }

    function test_06_Layer_HTTPRequest_getFullRequestString (t) {

        tParams = { layers: 'basic', 
                   format: 'image/png'};
        
        t.plan( 9 );

  // without ?        
        tUrl = "http://octo.metacarta.com/cgi-bin/mapserv";
        layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
        str = layer.getFullRequestString();
        t.eq(str, tUrl + '?' + OpenLayers.Util.getParameterString(tParams), "getFullRequestString() works for url sans ?");


  // with ?        
        tUrl = "http://octo.metacarta.com/cgi-bin/mapserv?";
        layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
        str = layer.getFullRequestString();
        t.eq(str, tUrl + OpenLayers.Util.getParameterString(tParams), "getFullRequestString() works for url with ?");

  // with ?param1=5
        tUrl = "http://octo.metacarta.com/cgi-bin/mapserv?param1=5";
        layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
        str = layer.getFullRequestString();
        t.eq(str, tUrl + '&' + OpenLayers.Util.getParameterString(tParams), "getFullRequestString() works for url with ?param1=5");
  
  // with ?param1=5&
        tUrl = "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&format=image/jpeg";
        layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
        str = layer.getFullRequestString();
        t.eq(str, tUrl + '&' + OpenLayers.Util.getParameterString({'layers':'basic'}), "getFullRequestString() doesn't override already-existing params in URL");

 
  // with ?param1=5&
        tUrl = "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&";
        layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
        str = layer.getFullRequestString();
        t.eq(str, tUrl + OpenLayers.Util.getParameterString(tParams), "getFullRequestString() works for url with ?param1=5&");
  


  // passing in new params
        layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, tParams, null);
        str = layer.getFullRequestString( { chicken: 6, 
                                            layers:"road" } );
        t.eq(str, tUrl + OpenLayers.Util.getParameterString({layers: 'road', format: "image/png", chicken: 6}), "getFullRequestString() works for passing in new params");

  // layer with null params
        layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, null, null);
        str = layer.getFullRequestString();
        t.eq(str, tUrl + OpenLayers.Util.getParameterString({}), "getFullRequestString() works for layer with null params");

  // layer with null params passing in new params
        layer = new OpenLayers.Layer.HTTPRequest(name, tUrl, null, null);
        str = layer.getFullRequestString( { chicken: 6, 
                                            layers:"road" } );
        t.eq(str, tUrl + OpenLayers.Util.getParameterString({chicken: 6, layers: "road"}), "getFullRequestString() works for layer with null params passing in new params");

  // with specified altUrl parameter
        tUrl = "http://octo.metacarta.com/cgi-bin/mapserv";
        layer = new OpenLayers.Layer.HTTPRequest(name, "chicken", tParams, null);
        str = layer.getFullRequestString(null, tUrl);
        t.eq(str, tUrl + '?' + OpenLayers.Util.getParameterString(tParams), "getFullRequestString() works for url sans ?");

    }

    function test_99_Layer_HTTPRequest_destroy (t) {
        t.plan( 6 );    

        var map = new OpenLayers.Map('map');

        layer = new OpenLayers.Layer.HTTPRequest("Test Layer",
                                                 "http://www.openlayers.org", 
                                                 { foo: 2, bar: 3}, 
                                                 { opt1: 8, opt2: 9});

        map.addLayer(layer);
        layer.destroy();
 
        // Ensure Layer.destroy() is called
        t.eq( layer.name, null, "layer.name is null after destroy" );
        t.eq( layer.div, null, "layer.div is null after destroy" );
        t.eq( layer.map, null, "layer.map is null after destroy" );
        t.eq( layer.options, null, "layer.options is null after destroy" );
 
 
        // Specific to HTTPRequest 
        t.eq( layer.url, null, "layer.url is null after destroy" );
        t.eq( layer.params, null, "layer.params is null after destroy" );
    }
  // -->
  </script>
</head>
<body>
  <div id="map"></div>
</body>
</html>