197 lines
6.1 KiB
JavaScript
197 lines
6.1 KiB
JavaScript
//
|
|
// Jala Project [http://opensvn.csie.org/traccgi/jala]
|
|
//
|
|
// Copyright 2004 ORF Online und Teletext GmbH
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the ``License'');
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an ``AS IS'' BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
// $Revision$
|
|
// $LastChangedBy$
|
|
// $LastChangedDate$
|
|
// $HeadURL$
|
|
//
|
|
|
|
/**
|
|
* Construct different collections as basis for the tests
|
|
*/
|
|
// 1. ArrayList
|
|
var arrayList = new jala.ListRenderer.ArrayList((function() {
|
|
var coll = [];
|
|
for (var i=0; i<19; i++) {
|
|
coll[i] = {id: i, title: "Object Nr. " + i};
|
|
}
|
|
return coll;
|
|
})());
|
|
|
|
// 2. HopObject
|
|
var hopObject = new HopObject();
|
|
var obj;
|
|
for (var i=0; i<19; i++) {
|
|
obj = new HopObject();
|
|
obj.title = "HopObject Nr. " + i;
|
|
hopObject.add(obj);
|
|
}
|
|
|
|
// 3. Array
|
|
var array = [];
|
|
for (var i=0; i<19; i++) {
|
|
array[i] = {id: i, title: "Object Nr. " + i};
|
|
}
|
|
|
|
/**
|
|
* Test constructor
|
|
*/
|
|
var testConstructor = function() {
|
|
// should throw an exception when called without or with invalid arguments
|
|
assertThrows(function() {
|
|
new jala.ListRenderer(true);
|
|
});
|
|
assertThrows(function() {
|
|
new jala.ListRenderer();
|
|
});
|
|
// test constructor with arrayList
|
|
var list = new jala.ListRenderer(arrayList);
|
|
assertEqual(list.getCollection(), arrayList);
|
|
// test constructor with hopObjectCollection
|
|
list = new jala.ListRenderer(hopObject);
|
|
assertEqual(list.getCollection(), hopObject);
|
|
// test constructor with an array
|
|
list = new jala.ListRenderer(array);
|
|
assertEqual(list.getCollection().constructor, jala.ListRenderer.ArrayList);
|
|
|
|
// test backwards compatibility
|
|
var listParam = {
|
|
collection: hopObject,
|
|
href: "http://localhost/test",
|
|
urlParams: "one=two&three=four",
|
|
urlParamName: "seite",
|
|
itemsPerPage: 5,
|
|
maxPages: 3,
|
|
itemSkin: "preview",
|
|
};
|
|
var list = new jala.ListRenderer(listParam);
|
|
assertEqual(list.getCollection(), listParam.collection);
|
|
assertEqual(list.getBaseHref(), listParam.href);
|
|
assertEqual(list.getUrlParameters(), listParam.urlParams);
|
|
assertEqual(list.getUrlParameterName(), listParam.urlParamName);
|
|
assertEqual(list.getPageSize(), listParam.itemsPerPage);
|
|
assertEqual(list.getMaxPages(), listParam.maxPages);
|
|
assertEqual(list.getItemSkin(), listParam.itemSkin);
|
|
return;
|
|
};
|
|
|
|
/**
|
|
* Test the calculation of the page number under various circumstances
|
|
*/
|
|
var testPageCalculation = function() {
|
|
var list = new jala.ListRenderer(arrayList);
|
|
list.setPageSize(3);
|
|
assertEqual(list.getTotalPages(), 7);
|
|
// after setting maxPages, getTotalPages() should return this value
|
|
list.setMaxPages(3);
|
|
assertEqual(list.getTotalPages(), 3);
|
|
return;
|
|
};
|
|
|
|
/**
|
|
* Test the start and end index calculation
|
|
*/
|
|
var testIndexCalculation = function() {
|
|
var list = new jala.ListRenderer(arrayList);
|
|
list.setPageSize(5);
|
|
req.data.page = "456";
|
|
assertEqual(list.getStartIndex(), 15);
|
|
assertEqual(list.getEndIndex(), 18);
|
|
// test the appropriate macros too
|
|
assertEqual(list.currentStart_macro(), 16);
|
|
assertEqual(list.currentEnd_macro(), 19);
|
|
assertEqual(list.size_macro(), 19);
|
|
// limit the number of pages - the size_macro() should return the correct value
|
|
list.setMaxPages(2);
|
|
assertEqual(list.size_macro(), 10);
|
|
// reset req.data.page
|
|
delete req.data.page;
|
|
return;
|
|
};
|
|
|
|
/**
|
|
* Test the construction of page hrefs
|
|
*/
|
|
var testHrefs = function() {
|
|
var baseHref = "http://localhost/test/list";
|
|
var list = new jala.ListRenderer(arrayList);
|
|
list.setBaseHref(baseHref);
|
|
assertEqual(list.getBaseHref(), baseHref);
|
|
// getPageHref without argument should return the href of the first page
|
|
assertEqual(list.getPageHref(), baseHref + "?page=1");
|
|
// tweak req.data to simulate a request for a certain page
|
|
req.data.page = "2";
|
|
assertEqual(list.getPageHref(), baseHref + "?page=2");
|
|
// getPageHref with page number as argument
|
|
assertEqual(list.getPageHref(10), baseHref + "?page=10");
|
|
// invalid page arguments
|
|
req.data.page = "nada";
|
|
assertEqual(list.getPageHref(), baseHref + "?page=1");
|
|
// for page numbers < 0 return the href of the first page
|
|
req.data.page = "-10";
|
|
assertEqual(list.getPageHref(), baseHref + "?page=1");
|
|
// for page numbers exceeding the max. number of pages, return
|
|
// the href of the last page
|
|
req.data.page = "300";
|
|
assertEqual(list.getPageHref(), baseHref + "?page=2");
|
|
|
|
// now test changing the page url parameter name
|
|
list.setUrlParameterName("seite");
|
|
assertEqual(list.getPageHref(2), baseHref + "?seite=2");
|
|
|
|
// add additional url parameters
|
|
var params = "one=two&three=four";
|
|
list.setUrlParameters(params);
|
|
assertEqual(list.getPageHref(3), baseHref + "?" + params + "&seite=3");
|
|
|
|
// reset req.data.page
|
|
delete req.data.page;
|
|
return;
|
|
};
|
|
|
|
/**
|
|
* Test custom renderer
|
|
*/
|
|
var testRenderer = function() {
|
|
// a pseudo renderer to check if overriding default renderer works
|
|
var renderer = {
|
|
"list": {
|
|
"custom": function() {
|
|
return;
|
|
},
|
|
"default": function() {
|
|
return;
|
|
},
|
|
},
|
|
};
|
|
|
|
// use default renderer
|
|
var list = new jala.ListRenderer(arrayList);
|
|
assertEqual(list.getRenderFunction("list"),
|
|
jala.ListRenderer.defaultRenderer.list["default"]);
|
|
assertEqual(list.getRenderFunction("list", "nonexisting"),
|
|
jala.ListRenderer.defaultRenderer.list["default"]);
|
|
assertNull(list.getRenderFunction("nonexisting"));
|
|
|
|
// use custom renderer
|
|
list = new jala.ListRenderer(arrayList, renderer);
|
|
assertEqual(list.getRenderFunction("list", "custom"), renderer.list["custom"]);
|
|
assertEqual(list.getRenderFunction("list", "nonexisting"), renderer.list["default"]);
|
|
assertEqual(list.getRenderFunction("list"), renderer.list["default"]);
|
|
return;
|
|
};
|