cc050b5539979e0a08d8f586cd4f9e6d5e0ff7a8
[platform/framework/web/web-ui-fw.git] / libs / js / jquery-mobile-1.0.1pre / tests / unit / page / page_core.js
1 /*
2  * mobile page unit tests
3  */
4 (function($){
5         var libName = 'jquery.mobile.page.sections.js',
6                 themedefault = $.mobile.page.prototype.options.theme,
7                 keepNative = $.mobile.page.prototype.options.keepNative;
8
9         module(libName, {
10                 setup: function() {
11                         $.mobile.page.prototype.options.keepNative = keepNative;
12                 }
13         });
14
15
16         var eventStack = [],
17                 etargets = [],
18                 cEvents=[],
19                 cTargets=[];
20
21
22         $( document ).bind( "pagebeforecreate pagecreate", function( e ){
23                 eventStack.push( e.type );
24                 etargets.push( e.target );
25         });
26
27         $("#c").live( "pagebeforecreate", function( e ){
28
29                 cEvents.push( e.type );
30                 cTargets.push( e.target );
31                 return false;
32         });
33
34         test( "pagecreate event fires when page is created", function(){
35                         ok( eventStack[0] === "pagecreate" || eventStack[1] === "pagecreate" );
36         });
37
38         test( "pagebeforecreate event fires when page is created", function(){
39                         ok( eventStack[0] === "pagebeforecreate" || eventStack[1] === "pagebeforecreate" );
40         });
41
42         test( "pagebeforecreate fires before pagecreate", function(){
43                         ok( eventStack[0] === "pagebeforecreate" );
44         });
45
46         test( "target of pagebeforecreate event was div #a", function(){
47                         ok( $( etargets[0] ).is("#a") );
48         });
49
50         test( "target of pagecreate event was div #a" , function(){
51                         ok( $( etargets[0] ).is("#a") );
52         });
53
54         test( "page element has ui-page class" , function(){
55                         ok( $( "#a" ).hasClass( "ui-page" ) );
56         });
57
58         test( "page element has default body theme when not overidden" , function(){
59                         ok( $( "#a" ).hasClass( "ui-body-" + themedefault ) );
60         });
61
62         test( "B page has non-default theme matching its data-theme attr" , function(){
63                 $( "#b" ).page();
64                 var btheme = $( "#b" ).jqmData( "theme" );
65                 ok( $( "#b" ).hasClass( "ui-body-" + btheme ) );
66         });
67
68         test( "Binding to pagebeforecreate and returning false prevents pagecreate event from firing" , function(){
69                 $("#c").page();
70
71                 ok( cEvents[0] === "pagebeforecreate" );
72                 ok( !cTargets[1] );
73         });
74
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" ) );
78         });
79
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;
83
84                 same(pageProto.keepNativeSelector(), pageProto.options.keepNativeDefault);
85         });
86
87         test( "keepNativeSelector returns the default where keepNative is empty, undefined, whitespace", function() {
88                 var pageProto = $.mobile.page.prototype;
89
90                 pageProto.options.keepNative = "";
91                 same(pageProto.keepNativeSelector(), pageProto.options.keepNativeDefault);
92
93                 pageProto.options.keepNative = undefined;
94                 same(pageProto.keepNativeSelector(), pageProto.options.keepNativeDefault);
95
96                 pageProto.options.keepNative = "  ";
97                 same(pageProto.keepNativeSelector(), pageProto.options.keepNativeDefault);
98         });
99
100         test( "keepNativeSelector returns a selector joined with the default", function() {
101                 var pageProto = $.mobile.page.prototype;
102
103                 pageProto.options.keepNative = "foo, bar";
104                 same(pageProto.keepNativeSelector(), "foo, bar, " + pageProto.options.keepNativeDefault);
105         });
106 })(jQuery);