recordset.html revision 234bbb07bf3b5a7827374008d5e8118f85a60c38
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster<script type="text/javascript" src="/build/yui/yui-debug.js"></script>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster<p><input type="button" value="Run Tests" id="btnRun" disabled=true></p>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster(function() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster filters: {recordset:"debug"},
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster logInclude:{"TestRunner":true},
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster useConsole: true
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }).use("console", "test", "dump", "recordset", function(Y) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Set up the page
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster var ASSERT = Y.Assert,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BTNRUN = Y.get("#btnRun");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BTNRUN.set("disabled", false);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Y.on("click", function(e){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster var myConsole = new Y.Console().render();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster var testBasic = new Y.Test.Case({
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster name: "API Tests",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster initialData: [{a:3, b:2, c:1}, {a:9, b:8, c:7}, {a:1, b:2, c:3}],
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //---------------------------------------------
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Setup and tear down
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //---------------------------------------------
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setUp : function () {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //create recordset
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.rs = new Y.Recordset({records:this.initialData});
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Some Ways to access recordset properties
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster tearDown : function () {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //---------------------------------------------
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Event Helpers
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //---------------------------------------------
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster recordsetChangedEventTest: function(i) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.rs.on('recordsetChangedEvent', function() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster recordsetEmptiedEventTest: function() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster var flag = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.rs.on('recordsetEmptiedEvent', function() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster flag = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster recordsetUpdatedEventTest: function(newRecords, delRecords, testIndex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // var iD = this.initialData, i=0;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // this.rs.on('recordsetUpdatedEvent', function(e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Y.ObjectAssert.areEqual(newRecords, e.data.updated.getValue(), "new record values match up");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Y.ObjectAssert.areEqual(delRecords, e.data.overwritten.getValue(), "old record values match up");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Y.Assert.areEqual(testIndex, e.index, "Index match up");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //---------------------------------------------
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Add Records
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //---------------------------------------------
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster testGetRecords: function() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster var newRecord;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Single Record
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Y.ObjectAssert.areEqual(newRecord.getValue(), this.initialData[1]);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Multiple Records
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster newRecord = this.rs.getRecords(1,2);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Y.ObjectAssert.areEqual(newRecord[0].getValue(), this.initialData[1]);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Y.ObjectAssert.areEqual(newRecord[1].getValue(), this.initialData[2]);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster var oRec = new Y.Record({a:'234'});
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster var obj = {b: '324'};
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (obj instanceof Y.Record) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //---------------------------------------------
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Add Records
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //---------------------------------------------
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster testAddSingleRecordToEnd: function() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster var recToAdd = {a:'8', b:'9', c:'10'};
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retval = this.rs.add(recToAdd);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Test Recordset Length
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Y.Assert.areEqual(4, this.rs.get('records').length, "Array lengths not equal.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Assert on last object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //This is indirectly checking to make sure that the record that got added has the identical data as the object literal that was passed in.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Y.ObjectAssert.areEqual(recToAdd, this.rs.getRecord(3).getValue());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Y.ObjectAssert.areEqual(retval.data[0].getValue(), recToAdd);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster testAddSingleRecordToIndex: function() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster var recToAdd, i=2;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster recToAdd = {a:'8', b:'9', c:'10'};
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retval = this.rs.add(recToAdd,i);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Y.Assert.areEqual(recToAdd, this.rs.getRecord(i).getValue());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //assertion with output
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Y.ObjectAssert.areEqual(retval.data[0].getValue(), recToAdd);
retval = this.rs.add(recsToAdd);
retval = this.rs.add(recsToAdd, i);
retval = this.rs.remove();
retval = this.rs.remove(1);
retval = this.rs.remove(1,2);
retval = this.rs.getValuesByKey(key);
Y.Assert.isUndefined(retval[i]);
newRecord = new Y.Record({data:{a:'newA', b:'newB', c:'newC'}});
oldRecord = this.rs.getRecord(index);
this.rs.on('recordsetUpdatedEvent', function(e) {
Y.ObjectAssert.areEqual(oldRecord, e.data.overwritten[0], 'Overwritten record is != to old record');
this.rs.update(newRecord, index);
oldRecord = this.rs.getRecord(index);
a = new Y.Record({data:{a:'newA', b:'newB', c:'newC'}});
b = new Y.Record({data:{a:'newD', b:'newE', c:'newF'}});
newRecords.push(a);
newRecords.push(b);
this.rs.on('recordsetUpdatedEvent', function(e) {
Y.ObjectAssert.areEqual(oldRecord, e.data.overwritten[0], 'Overwritten record is != to old record');
this.rs.update(newRecords, index);
newRecord = new Y.Record({data: {a:'newG', b:'newH', c:'newI'}});
oldRecord = this.rs.getRecord(index);
this.rs.on('recordsetUpdatedEvent', function(e) {
Y.ObjectAssert.areEqual(oldRecord, e.data.overwritten[0], 'Overwritten record is != to old record');
this.rs.update(newRecord, index, true);
oldRecords = this.rs.getRecords(index,3);
//console.log(oldRecords);
a = new Y.Record({data:{a:'newA', b:'newB', c:'newC'}});
b = new Y.Record({data:{a:'newD', b:'newE', c:'newF'}});
c = new Y.Record({data:{a:'newG', b:'newH', c:'newI'}});
newRecords.push(a);
newRecords.push(b);
newRecords.push(c);
this.rs.on('recordsetUpdatedEvent', function(e) {
//Y.ObjectAssert.areEqual(oldRecords[i].getValue(), e.data.overwritten[i].getValue(), 'Overwritten record is != to old record');
Y.ObjectAssert.areEqual(oData, e.data.updated[0].getValue(), 'Updated record != equal to new record');
Y.ObjectAssert.areEqual(oldRecord, e.data.overwritten[0], 'Overwritten record != equal to old record');