function testData(index) { var data = jQuery.metadata.get(this); switch(index) { case 0: ok( data.foo == "bar", "Check foo property" ); ok( data.bar == "baz", "Check baz property" ); ok( data.arr[0] == 1, "Check arr[0] property" ); ok( data.arr[1] == 2, "Check arr[1] property" ); break; case 1: ok( data.test == "bar", "Check test property" ); ok( data.bar == "baz", "Check bar property" ); break; case 2: ok( data.zoooo == "bar", "Check zoooo property" ); ok( data.bar.test == "baz", "Check bar.test property" ); break; case 3: ok( data.number, "Check number property" ); ok( data.stuff[0] == 2, "Check stuff[0] property" ); ok( data.stuff[1] == 8, "Check stuff[1] property" ); break; default: ok( false, ["Assertion failed on index ", index, ", with data ", data].join('') ); } } // check if set can be intercepted without breaking metadata plugin var oldSet = jQuery.fn.set; jQuery.fn.set = function() { ok( true, "set was interecepted" ); oldSet.apply(this, arguments); }; //jQuery.meta.single = ""; test("meta: type attr - from data attribute", function() { expect(11); jQuery.metadata.setType("attr", "data"); jQuery("#one li").each(testData); }); test("meta: type class - from className", function() { expect(11); jQuery.metadata.setType( "class" ); jQuery("#two li").each(testData); }); test("meta: children script element - get data from child script element", function() { expect(11); jQuery.metadata.setType( "elem", "script" ); jQuery("#three li").each(testData); }); test("check if window doesn't break anything", function() { jQuery(window).get(); }); test("meta: default with single data object", function() { expect(11); jQuery.metadata.setType("attr","data"); jQuery.metadata.defaults.single = "data"; jQuery("#four li").each(testData); }); test("meta with select and class", function() { expect(2); jQuery.metadata.setType("class"); jQuery.metadata.single = "stuff"; var e = $('#meal').metadata(); ok( e, "data property" ); ok( e.required, "property on data property" ); }); test("try to add and remove classes on metadata elements", function() { $("#two li").addClass("foobar").addClass("foo bar").removeClass("foobar"); ok( $("#two li").is(".foo"), 'Check class foo was added.' ); ok( $("#two li").is(".bar"), 'Check class bar was added.' ); }); test("meta: type html5 - from data-*", function() { expect(11); jQuery.metadata.setType("html5"); jQuery("#five li").each(testData); });