data tables are going to need some work yet, but the other stuff seems to be working 100%
196 lines
6.8 KiB
JavaScript
196 lines
6.8 KiB
JavaScript
(function() {
|
|
var gCount = -1;
|
|
|
|
var Dom=YAHOO.util.Dom,
|
|
Assert=YAHOO.util.Assert,
|
|
ObjectAssert=YAHOO.util.ObjectAssert,
|
|
ArrayAssert=YAHOO.util.ArrayAssert,
|
|
DateAssert=YAHOO.util.DateAssert,
|
|
UserAction=YAHOO.util.UserAction,
|
|
TestCase = YAHOO.tool.TestCase,
|
|
TestLogger = YAHOO.tool.TestLogger,
|
|
TestRunner = YAHOO.tool.TestRunner,
|
|
TestSuite = YAHOO.tool.TestSuite,
|
|
|
|
DataSource = YAHOO.util.DataSource,
|
|
DataTable = YAHOO.widget.DataTable,
|
|
ColumnSet = YAHOO.widget.ColumnSet,
|
|
RecordSet = YAHOO.widget.RecordSet;
|
|
|
|
/**
|
|
*
|
|
*
|
|
* Base DataTable test template. Sets up values for a DataTable instance.
|
|
*
|
|
*
|
|
*/
|
|
var dtBaseTemplate = {
|
|
name: "DataTable Base Tests",
|
|
|
|
dsData: [
|
|
{a:"0a",b:"0b",c:"0c"},
|
|
{a:"1a",b:"1b",c:"1c"},
|
|
{a:"2a",b:"2b",c:"2c"},
|
|
{a:"3a",b:"3b",c:"3c"}
|
|
],
|
|
|
|
dsConfig: {
|
|
responseType:YAHOO.util.DataSource.TYPE_JSARRAY,
|
|
responseSchema:{fields:["a","b","c"]}
|
|
},
|
|
|
|
columns: [{key:"a"},{key:"b"},{key:"c"}]
|
|
};
|
|
|
|
/**
|
|
*
|
|
*
|
|
* Base DataTable test case.
|
|
*
|
|
*
|
|
*/
|
|
function DataTableTestCase(template) {
|
|
DataTableTestCase.superclass.constructor.call(this, template);
|
|
};
|
|
YAHOO.lang.extend(DataTableTestCase, TestCase);
|
|
|
|
DataTableTestCase.prototype.setUp = function() {
|
|
// Create container anew
|
|
this.container = document.createElement("div");
|
|
///this.container.id = "testDTContainer"; // Is this necessary?
|
|
document.body.appendChild(this.container);
|
|
|
|
// Create DataSource anew
|
|
this.datasource = new YAHOO.util.DataSource(this.dsData, this.dsConfig);
|
|
};
|
|
|
|
DataTableTestCase.prototype.tearDown = function() {
|
|
// Destroy DataTable
|
|
this.datatable.destroy();
|
|
this.datatable = null;
|
|
|
|
// Destroy container
|
|
if(this.container !== null) {
|
|
YAHOO.util.Event.purgeElement(this.container, true);
|
|
document.body.removeChild(this.container);
|
|
this.container = null;
|
|
}
|
|
|
|
// TODO: need a destroy method
|
|
this.datasource = null;
|
|
};
|
|
|
|
DataTableTestCase.prototype.createInstance = function(oDT, oConfig) {
|
|
oDT = oDT || DataTable;
|
|
this.datatable = new oDT(this.container, this.columns, this.datasource, oConfig);
|
|
gCount++;
|
|
return this.datatable;
|
|
};
|
|
|
|
/**
|
|
*
|
|
*
|
|
* Tests RecordSet APIs.
|
|
*
|
|
*
|
|
*/
|
|
var rsRecordSetTemplate = YAHOO.lang.merge(dtBaseTemplate, {
|
|
name: "DataTable RecordSet Tests",
|
|
|
|
testGetRecordSet: function() {
|
|
var dt = this.createInstance();
|
|
var rs = dt.getRecordSet();
|
|
|
|
Assert.isInstanceOf(RecordSet, rs, "Expected a RecordSet");
|
|
},
|
|
|
|
testGetRecord: function() {
|
|
var dt = this.createInstance();
|
|
//dt.subscribe("initEvent", function() {
|
|
var rs = dt.getRecordSet();
|
|
var oRecord = rs._records[3];
|
|
var sRecordId = oRecord.getId();
|
|
|
|
var el = dt.getTbodyEl().rows[3];
|
|
var oTestRecord = dt.getRecord(el);
|
|
Assert.areSame(oRecord, oTestRecord, "Expected to get Record by el reference");
|
|
|
|
var el = dt.getTbodyEl().rows[3].cells[2];
|
|
oTestRecord = dt.getRecord(el);
|
|
Assert.areSame(oRecord, oTestRecord, "Expected to get Record by el reference child");
|
|
|
|
el = Dom.get(oTestRecord.getId());
|
|
oTestRecord = null;
|
|
oTestRecord = dt.getRecord(el);
|
|
Assert.areSame(oRecord, oTestRecord, "Expected to get Record by DOM ID");
|
|
|
|
oTestRecord = dt.getRecord(3);
|
|
Assert.areSame(oRecord, oTestRecord, "Expected to get Record by position index");
|
|
|
|
oTestRecord = dt.getRecord(sRecordId);
|
|
Assert.areSame(oRecord, oTestRecord, "Expected to get Record by Record ID");
|
|
|
|
oTestRecord = dt.getRecord(oRecord);
|
|
Assert.areSame(oRecord, oTestRecord, "Expected to get Record by Record instance");
|
|
|
|
oTestRecord = rs.getRecord(3);
|
|
Assert.areSame(oRecord, oTestRecord, "Expected to get Record by position index (RecordSet method)");
|
|
|
|
oTestRecord = rs.getRecord(sRecordId);
|
|
Assert.areSame(oRecord, oTestRecord, "Expected to get Record by Record ID (RecordSet method)");
|
|
|
|
oTestRecord = rs.getRecord(oRecord);
|
|
Assert.areSame(oRecord, oTestRecord, "Expected to get Record by Record instance (RecordSet method)");
|
|
//});
|
|
},
|
|
|
|
testGetInvalidRecord: function() {
|
|
var dt = this.createInstance();
|
|
//dt.subscribe("initEvent", function() {
|
|
var rs = dt.getRecordSet();
|
|
var oRecord = rs._records[3];
|
|
dt.deleteRow(3);
|
|
|
|
oTestRecord = dt.getRecord(oRecord);
|
|
Assert.areSame(null, oTestRecord, "Expected not to get Record by invalid Record instance");
|
|
|
|
oTestRecord = rs.getRecord(oRecord);
|
|
Assert.areSame(null, oTestRecord, "Expected not to get Record by invalid Record instance (RecordSet method)");
|
|
//});
|
|
},
|
|
|
|
testUpdateKey: function() {
|
|
var dt = this.createInstance();
|
|
//dt.subscribe("initEvent", function() {
|
|
var rs = dt.getRecordSet();
|
|
var oTestRecord = rs._records[0];
|
|
rs.updateKey(0, "b", "xxx");
|
|
Assert.areSame("xxx", oTestRecord.getData("b"), "Failed to update key b of Record 0 by position index");
|
|
|
|
rs.updateKey(oTestRecord, "b", "zzz");
|
|
Assert.areSame("zzz", oTestRecord.getData("b"), "Failed to update key b of Record 0 by instance");
|
|
|
|
rs.updateKey(oTestRecord.getId(), "b", "yyy");
|
|
Assert.areSame("yyy", oTestRecord.getData("b"), "Failed to update key b of Record 0 by ID");
|
|
//});
|
|
}
|
|
|
|
|
|
//TODO: More RecordSet APIs
|
|
});
|
|
var rsRecordSetTest = new DataTableTestCase(rsRecordSetTemplate);
|
|
|
|
/**
|
|
*
|
|
*
|
|
* Runs tests.
|
|
*
|
|
*
|
|
*/
|
|
YAHOO.util.Event.addListener(window, "load", function() {
|
|
var recordsetsuite = new TestSuite("RecordSet Test Suite");
|
|
recordsetsuite.add(rsRecordSetTest);
|
|
|
|
TestRunner.add(recordsetsuite);
|
|
});
|
|
})();
|