datasource.html revision 223638e682f15a739e9c7f070209e3bba09544f9
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<p><input type="button" value="Run Tests" id="btnRun" disabled="true" /></p>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<script type="text/javascript" src="/build/yui/yui.js"></script>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<script type="text/javascript" src="/build/cache/cache.js"></script>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<script type="text/javascript" src="/build/dataparser/dataparser.js"></script>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<script type="text/javascript" src="/build/datasource/datasource.js" id="src_ds"></script>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin(function() {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin filter: "debug",
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin useConsole: true,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin insertBefore: "src_ds"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }).use("dump", "test", "console", "io-base", "cache", "base", "json", "dataparser", "datasource", function(Y) {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin var ASSERT = Y.Assert,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ARRAYASSERT = Y.ArrayAssert,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin OBJECTASSERT = Y.ObjectAssert,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin BTNRUN = Y.get("#btnRun");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin // Set up the page
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin BTNRUN.set("disabled", false);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Y.on("click", function(){
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }, BTNRUN);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin var myConsole = new Y.Console().render();
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin var testClass = new Y.Test.Case({
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin name: "Class Tests",
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin testConstructorBase: function(){
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin var ds = new Y.DataSource.Base();
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ASSERT.areSame((ds instanceof Y.DataSource.Base), true);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin testConstructorLocal: function(){
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin var ds = new Y.DataSource.Local();
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ASSERT.areSame((ds instanceof Y.DataSource.Local), true);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ASSERT.areSame((ds instanceof Y.DataSource.Base), true);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin var testLocal = new Y.Test.Case({
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin name: "DataSource.Local Tests",
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin testDefaults: function(){
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin var ds = new Y.DataSource.Local({
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin source: ["a","b","c","d"]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ds.sendRequest("a", {success:function(request,response) {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ARRAYASSERT.itemsAreSame(["a","b","c","d"], response.results, "Expected live array.");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin testLocalCancelRequestEvent: function(){
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin var ds = new Y.DataSource.Local({
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin source: ["a","b","c","d"]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ds.subscribe("requestEvent", function(e) {
ds.sendRequest("a", {success:function(request,response) {
ASSERT.fail("Request should not be sent.")
var testXHR = new Y.Test.Case({
name: "DataSource.XHR Tests",
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({
resultsList: "ResultSet.Result",
ds.sendRequest(null, {
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.");
this.resume(function() {
ASSERT.fail("XHR failure case.");
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({
resultsList: "ResultSet.Result",
ds.subscribe("requestEvent", function(e) {
ds.sendRequest(null, {
this.resume(function() {
ASSERT.fail("Request should not be sent.")
this.wait(function(){
var testCache = new Y.Test.Case({
var ds = new Y.DataSource.Base();
var cache = new Y.Cache({size:3}),
ds = new Y.DataSource.Local({
ds.sendRequest("a", {success:function(request,response) {
ds.subscribe("requestEvent", function(){
ASSERT.fail("Entry is cached -- requestEvent is unexpected");
ds.sendRequest("a", {success:function(request,response) {
Y.Test.Runner.add(testClass);
Y.Test.Runner.add(testLocal);
Y.Test.Runner.add(testXHR);
Y.Test.Runner.add(testCache);