recordset.html revision 468f077f3ad52463360d087a5ea7c7d495bbc530
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User<html>
bef75d63d74f58abc0f834ed271526672777ba29Automatic Updater<head>
bef75d63d74f58abc0f834ed271526672777ba29Automatic Updater<title>Recordset Tests</title>
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater<script type="text/javascript" src="/build/yui/yui-debug.js"></script>
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater</head>
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
bef75d63d74f58abc0f834ed271526672777ba29Automatic Updater<body class="yui3-skin-sam">
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater<h1>Recordset Tests</h1>
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater<p><input type="button" value="Run Tests" id="btnRun" disabled=true></p>
bef75d63d74f58abc0f834ed271526672777ba29Automatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater<script type="text/javascript">
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater(function() {
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater YUI({
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater base: "/build/",
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater filters: {recordset:"debug"},
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User logInclude:{"TestRunner":true},
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater useConsole: true
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater }).use("console", "test", "dump", "recordset", function(Y) {
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater // Set up the page
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater var ASSERT = Y.Assert,
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater ARRAYASSERT = Y.ArrayAssert,
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater BTNRUN = Y.get("#btnRun");
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater BTNRUN.set("disabled", false);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater Y.on("click", function(e){
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater Y.Test.Runner.run();
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater }, BTNRUN);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater var myConsole = new Y.Console().render();
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater var testBasic = new Y.Test.Case({
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater name: "API Tests",
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater initialData: [{a:3, b:2, c:1}, {a:9, b:8, c:7}, {a:1, b:2, c:3}],
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //---------------------------------------------
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater // Setup and tear down
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //---------------------------------------------
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater setUp : function () {
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //create recordset
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater this.rs = new Y.Recordset({records:this.initialData});
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //Some Ways to access recordset properties
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //Y.log(rs.getRecord(0).getValue('a'));
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //Y.log(rs.get('records').length);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater },
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater tearDown : function () {
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater delete this.rs;
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User },
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //---------------------------------------------
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater // Event Helpers
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //---------------------------------------------
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater recordsetChangedEventTest: function(i) {
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater this.rs.on('recordsetChangedEvent', function(e) {
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater Y.Assert.areEqual(e.index, i);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater });
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater },
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater recordsetEmptiedEventTest: function() {
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater var flag = false;
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater this.rs.on('recordsetEmptiedEvent', function() {
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater flag = true;
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater Y.Assert.isTrue(flag);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater });
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater },
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater recordsetUpdatedEventTest: function(newRecord, testIndex) {
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater var iD = this.initialData;
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater this.rs.on('recordsetUpdatedEvent', function(e) {
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater Y.ObjectAssert.areEqual(iD[testIndex], e.oldRecord.getValue(), "Old record values match up");
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater Y.ObjectAssert.areEqual(newRecord.getValue(), e.newRecord.getValue(), "New record values match up");
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User delete iD;
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater });
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater },
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //---------------------------------------------
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater // Add Records
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //---------------------------------------------
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater testGetRecords: function() {
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User var newRecord;
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //Single Record
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater newRecord = this.rs.getRecord(1);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater Y.ObjectAssert.areEqual(newRecord.getValue(), this.initialData[1]);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //Multiple Records
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater newRecord = this.rs.getRecords(1,2);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater Y.ObjectAssert.areEqual(newRecord[0].getValue(), this.initialData[1]);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater Y.ObjectAssert.areEqual(newRecord[1].getValue(), this.initialData[2]);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater var oRec = new Y.Record({a:'234'});
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater var obj = {b: '324'};
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater if (obj instanceof Y.Record) {
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater // console.log(oRec);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater // console.log(oRec.constructor.NAME);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater // console.log(obj);
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater Y.Assert.fail();
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater }
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater },
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //---------------------------------------------
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater // Add Records
fc2381b901eb162810f54a11cc512b95f55a60dfAutomatic Updater //---------------------------------------------
testAddSingleRecordToEnd: function() {
var recToAdd = {a:'8', b:'9', c:'10'};
retval = this.rs.add(recToAdd);
//Test Recordset Length
Y.Assert.areEqual(4, this.rs.get('records').length, "Array lengths not equal.");
//Assert on last object
//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.
Y.ObjectAssert.areEqual(recToAdd, this.rs.getRecord(3).getValue());
Y.ObjectAssert.areEqual(retval.data[0].getValue(), recToAdd);
this.recordsetChangedEventTest(3);
},
testAddSingleRecordToIndex: function() {
var recToAdd, i=2;
recToAdd = {a:'8', b:'9', c:'10'};
retval = this.rs.add(recToAdd,i);
Y.Assert.areEqual(recToAdd, this.rs.getRecord(i).getValue());
//assertion with output
Y.ObjectAssert.areEqual(retval.data[0].getValue(), recToAdd);
this.recordsetChangedEventTest(i);
},
testAddMultipleRecordsToEnd: function() {
var recsToAdd = [{a:'11', b:'22', c:'33'}, {a:'44', b:'55', c:'66'}];
retval = this.rs.add(recsToAdd);
//Assertions with recordset
Y.ObjectAssert.areEqual(recsToAdd[0], this.rs.getRecord(3).getValue());
Y.ObjectAssert.areEqual(recsToAdd[1], this.rs.getRecord(4).getValue());
//assertions with output
Y.ObjectAssert.areEqual(retval.data[0].getValue(), recsToAdd[0]);
Y.ObjectAssert.areEqual(retval.data[1].getValue(), recsToAdd[1]);
this.recordsetChangedEventTest(3);
},
testAddMultipleRecordsToIndex: function() {
var recsToAdd, i;
recsToAdd = [{a:'11', b:'22', c:'33'}, {a:'44', b:'55', c:'66'}];
i = 1;
retval = this.rs.add(recsToAdd, i);
//Assertions with recordset
Y.ObjectAssert.areEqual(recsToAdd[0], this.rs.getRecord(1).getValue());
Y.ObjectAssert.areEqual(recsToAdd[1], this.rs.getRecord(2).getValue());
this.recordsetChangedEventTest(i);
},
//---------------------------------------------
// Delete Records
//---------------------------------------------
testDeleteSingleRecordFromEnd: function() {
this.recordsetChangedEventTest(2);
retval = this.rs.remove();
Y.ObjectAssert.areEqual(this.initialData[2], retval.data[0].getValue());
Y.Assert.areEqual(2, retval.index);
},
testDeleteSingleRecordFromIndex: function() {
this.recordsetChangedEventTest(1);
retval = this.rs.remove(1);
Y.ObjectAssert.areEqual(this.initialData[1], retval.data[0].getValue());
Y.Assert.areEqual(1, retval.index);
},
testDeleteRangeOfRecords: function() {
//Delete 2 records from index 1
this.recordsetChangedEventTest(1);
retval = this.rs.remove(1,2);
Y.ObjectAssert.areEqual(this.initialData[1], retval.data[0].getValue());
Y.ObjectAssert.areEqual(this.initialData[2], retval.data[1].getValue());
Y.Assert.areEqual(1, retval.index);
},
//---------------------------------------------
// Empty Recordset
//---------------------------------------------
testEmptyRecordSet: function() {
this.recordsetEmptiedEventTest(0);
this.rs.empty();
Y.Assert.areEqual(0, this.rs.get('records').length);
},
//---------------------------------------------
// GetValuesByKey
//---------------------------------------------
testGetValuesByKey: function() {
var key, retval, i;
key = 'a';
retval = this.rs.getValuesByKey(key);
for (i=0; i < this.initialData.length; i++) {
Y.Assert.areEqual(this.initialData[i][key], retval[i]);
}
},
testGetValuesByKeyWithInvalidKey: function() {
var key = 'd';
retval = this.rs.getValuesByKey(key);
for (i=0; i < this.initialData.length; i++) {
Y.Assert.isUndefined(retval[i]);
}
},
//---------------------------------------------
// Update Records - without overwriteFlag
//---------------------------------------------
testUpdateRecordAtIndexWithoutOverwriteFlag: function() {
var newRecord, index=1;
//Update record at given index with new record
newRecord = new Y.Record({data:{a:'newA', b:'newB', c:'newC'}});
this.recordsetUpdatedEventTest(newRecord, index);
this.rs.update(newRecord, index);
Y.ObjectAssert.areEqual(newRecord.getValue(), this.rs.getRecord(index).getValue());
},
testUpdateRecordsAtIndexWithoutOverwriteFlag: function() {
var newRecords = [], index=0;
var 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.update(newRecords, index);
//check that the two elements in the recordset are the same as the ones pushed in
Y.ObjectAssert.areEqual(a.getValue(), this.rs.getRecord(0).getValue());
Y.ObjectAssert.areEqual(b.getValue(), this.rs.getRecord(1).getValue());
Y.ObjectAssert.areEqual(this.initialData[1], this.rs.getRecord(2).getValue());
//3 initial records + 1 more added (the other was just over-written)= 4 total records in recordset
Y.Assert.areEqual(4, this.rs.get('records').length);
},
testUpdateRecordAtIndexWithOverwriteFlag: function() {
var oRec, oData, index=1;
oRec = new Y.Record({data: {a:'newG', b:'newH', c:'newI'}});
this.rs.update(oRec, index, true);
Y.ObjectAssert.areEqual(oRec.getValue(), this.rs.getRecord(1).getValue());
},
testUpdateRecordWithData: function() {
var oData = {a:'newJ', b:'newK', c:'newL'};
this.rs.update(oData, 2);
console.log(this.rs.getRecord(2).getValue());
Y.ObjectAssert.areEqual(oData, this.rs.getRecord(2).getValue());
}
});
var suite = new Y.Test.Suite({name:"Recordset Test Suite"});
suite.add(testBasic);
Y.Test.Runner.setName("Recordset Test Runner");
Y.Test.Runner.add(suite);
Y.Test.Runner.run();
});
})();
</script>
</body>
</html>