datasource.html revision 6da8c70b8b366ef387914ebf8f3c4d44d4cec955
<html>
<head>
<title>DataSource Tests</title>
</head>
<body class="yui-skin-sam">
<h1>DataSource Tests</h1>
<p><input type="button" value="Run Tests" id="btnRun" disabled="true" /></p>
<script type="text/javascript" src="/build/yui/yui.js"></script>
<script type="text/javascript" src="/build/cache/cache.js"></script>
<script type="text/javascript" src="/build/dataparser/dataparser.js"></script>
<script type="text/javascript" src="/build/datasource/datasource.js" id="src_ds"></script>
<script type="text/javascript">
(function() {
YUI({
base: "/build/",
filter: "debug",
useConsole: true,
insertBefore: "src_ds"
}).use("dump", "test", "console", "io-base", "cache", "base", "json", "dataparser", "datasource", function(Y) {
var ASSERT = Y.Assert,
ARRAYASSERT = Y.ArrayAssert,
OBJECTASSERT = Y.ObjectAssert,
BTNRUN = Y.get("#btnRun");
// Set up the page
BTNRUN.set("disabled", false);
Y.on("click", function(){
Y.Test.Runner.run();
}, BTNRUN);
var myConsole = new Y.Console().render();
var testClass = new Y.Test.Case({
name: "Class Tests",
testConstructorBase: function(){
var ds = new Y.DataSource.Base();
ASSERT.areSame((ds instanceof Y.DataSource.Base), true);
},
testConstructorLocal: function(){
var ds = new Y.DataSource.Local();
ASSERT.areSame((ds instanceof Y.DataSource.Local), true);
ASSERT.areSame((ds instanceof Y.DataSource.Base), true);
}
});
var testLocal = new Y.Test.Case({
name: "DataSource.Local Tests",
testDefaults: function(){
var ds = new Y.DataSource.Local({
source: ["a","b","c","d"]
});
ds.sendRequest("a", {success:function(request,response) {
ARRAYASSERT.itemsAreSame(["a","b","c","d"], response.results, "Expected live array.");
}});
},
testLocalCancelRequestEvent: function(){
var ds = new Y.DataSource.Local({
source: ["a","b","c","d"]
});
ds.subscribe("requestEvent", function(e) {
e.preventDefault();
});
ds.sendRequest("a", {success:function(request,response) {
ASSERT.fail("Request should not be sent.")
}});
}
});
var testXHR = new Y.Test.Case({
name: "DataSource.XHR Tests",
testDefaults: function(){
var ds = new Y.DataSource.XHR({
source: "/yui/2.6.0/examples/autocomplete/assets/php/ysearch_proxy.php?query=madonna&output=json&results=10",
parser: new Y.DataParser.JSON({
schema: {
resultsList: "ResultSet.Result",
fields: ["Title"]
}
})
});
ds.sendRequest(null, {
success: function(request,response) {
this.resume(function() {
ASSERT.isNull(request, "Expected null request.");
ASSERT.isObject(response, "Expected response object.");
OBJECTASSERT.ownsAll({tId:null,meta:null,results:null}, response, "Expected all properties.");
});
},
failure: function(request, response) {
this.resume(function() {
ASSERT.fail("XHR failure case.");
});
},
scope: this
});
this.wait(5000); // On a slow connection: this.wait(5000);
},
testXHRCancelRequestEvent: function(){
var ds = new Y.DataSource.XHR({
source: "/yui/2.6.0/examples/autocomplete/assets/php/ysearch_proxy.php?query=madonna&output=json&results=10",
parser: new Y.DataParser.JSON({
schema: {
resultsList: "ResultSet.Result",
fields: ["Title"]
}
})
});
ds.subscribe("requestEvent", function(e) {
e.preventDefault();
}, this);
ds.sendRequest(null, {
success: function(request,response) {
this.resume(function() {
ASSERT.fail("Request should not be sent.")
});
},
scope: this
});
this.wait(function(){
// This function has been intentionally left blank.
}, 0);
}
});
var testCache = new Y.Test.Case({
name: "DataSource Cache Tests",
testDefaultSize: function(){
var ds = new Y.DataSource.Base({cache: new Y.Cache()});
ASSERT.areSame((ds.get("cache") instanceof Y.Cache), true, "Expected Cache instance.");
ASSERT.areSame(ds.get("cache").get("size"), 0, "Expected 0 size in Cache.");
},
testInitSize: function(){
var ds = new Y.DataSource.Base({cache: new Y.Cache({size:3})});
ASSERT.areSame((ds.get("cache") instanceof Y.Cache), true, "Expected Cache instance.");
ASSERT.areSame(ds.get("cache").get("size"), 3, "Expected 3 size in Cache.");
},
testSetCache: function(){
var ds = new Y.DataSource.Base();
ds.set("cache",new Y.Cache({size:5}));
ASSERT.areSame((ds.get("cache") instanceof Y.Cache), true, "Expected Cache instance.");
ASSERT.areSame(ds.get("cache").get("size"), 5, "Expected 5 size in Cache.");
},
testLocalCache: function(){
var cache = new Y.Cache({size:3}),
ds = new Y.DataSource.Local({
source: ["a","b","c","d"],
cache: cache
});
ds.sendRequest("a", {success:function(request,response) {
ARRAYASSERT.itemsAreSame(["a","b","c","d"], response.results, "Expected live array.");
}});
ds.subscribe("requestEvent", function(){
ASSERT.fail("Entry is cached -- requestEvent is unexpected");
});
ds.sendRequest("a", {success:function(request,response) {
ARRAYASSERT.itemsAreSame(["a","b","c","d"], response.results, "Expected cached response.");
}});
}
});
Y.Test.Runner.add(testClass);
Y.Test.Runner.add(testLocal);
Y.Test.Runner.add(testXHR);
Y.Test.Runner.add(testCache);
Y.Test.Runner.run();
});
})();
</script>
</body>
</html>