2 * mobile page unit tests
5 var libName = 'jquery.mobile.page.sections.js',
6 themedefault = $.mobile.page.prototype.options.theme,
7 keepNative = $.mobile.page.prototype.options.keepNative;
11 $.mobile.page.prototype.options.keepNative = keepNative;
22 $( document ).bind( "pagebeforecreate pagecreate", function( e ){
23 eventStack.push( e.type );
24 etargets.push( e.target );
27 $("#c").live( "pagebeforecreate", function( e ){
29 cEvents.push( e.type );
30 cTargets.push( e.target );
34 test( "pagecreate event fires when page is created", function(){
35 ok( eventStack[0] === "pagecreate" || eventStack[1] === "pagecreate" );
38 test( "pagebeforecreate event fires when page is created", function(){
39 ok( eventStack[0] === "pagebeforecreate" || eventStack[1] === "pagebeforecreate" );
42 test( "pagebeforecreate fires before pagecreate", function(){
43 ok( eventStack[0] === "pagebeforecreate" );
46 test( "target of pagebeforecreate event was div #a", function(){
47 ok( $( etargets[0] ).is("#a") );
50 test( "target of pagecreate event was div #a" , function(){
51 ok( $( etargets[0] ).is("#a") );
54 test( "page element has ui-page class" , function(){
55 ok( $( "#a" ).hasClass( "ui-page" ) );
58 test( "page element has default body theme when not overidden" , function(){
59 ok( $( "#a" ).hasClass( "ui-body-" + themedefault ) );
62 test( "B page has non-default theme matching its data-theme attr" , function(){
64 var btheme = $( "#b" ).jqmData( "theme" );
65 ok( $( "#b" ).hasClass( "ui-body-" + btheme ) );
68 test( "Binding to pagebeforecreate and returning false prevents pagecreate event from firing" , function(){
71 ok( cEvents[0] === "pagebeforecreate" );
75 test( "Binding to pagebeforecreate and returning false prevents classes from being applied to page" , function(){
76 ok( !$( "#b" ).hasClass( "ui-body-" + themedefault ) );
77 ok( !$( "#b" ).hasClass( "ui-page" ) );
80 test( "keepNativeSelector returns the default where keepNative is not different", function() {
81 var pageProto = $.mobile.page.prototype;
82 pageProto.options.keepNative = pageProto.options.keepNativeDefault;
84 same(pageProto.keepNativeSelector(), pageProto.options.keepNativeDefault);
87 test( "keepNativeSelector returns the default where keepNative is empty, undefined, whitespace", function() {
88 var pageProto = $.mobile.page.prototype;
90 pageProto.options.keepNative = "";
91 same(pageProto.keepNativeSelector(), pageProto.options.keepNativeDefault);
93 pageProto.options.keepNative = undefined;
94 same(pageProto.keepNativeSelector(), pageProto.options.keepNativeDefault);
96 pageProto.options.keepNative = " ";
97 same(pageProto.keepNativeSelector(), pageProto.options.keepNativeDefault);
100 test( "keepNativeSelector returns a selector joined with the default", function() {
101 var pageProto = $.mobile.page.prototype;
103 pageProto.options.keepNative = "foo, bar";
104 same(pageProto.keepNativeSelector(), "foo, bar, " + pageProto.options.keepNativeDefault);