Revert "Export"
[framework/web/web-ui-fw.git] / tests / unit-tests / datetimepicker / datetimepicker-tests.js
1 $(document).ready( function () {
2
3         module( "Date Time Picker");
4
5         var datetime = $("#datetime")[0];
6         var date = $("#date")[0];
7         var time = $("#time")[0];
8         var custom = $("#custom")[0];
9
10         // trigger pagecreate
11         $( "#page-1" ).page();
12
13         var objDatetime = $(datetime).data( "datetimepicker" );
14         var objDate = $(date).data( "datetimepicker" );
15         var objTime = $(time).data( "datetimepicker" );
16         var objCustom = $(custom).data( "datetimepicker" );
17
18         asyncTest( "Auto-initialization", function () {
19                 ok( objDatetime, "should Date/Time instace created" );
20                 ok( objDate, "should Date instance created" );
21                 ok( objTime, "should Time instance created" );
22                 ok( objCustom, "should Custom format instance created" );
23
24                 start();
25         });
26
27         asyncTest( "Options", function () {
28                 equal( objDatetime.options.type, "datetime", "should 'datetime' type created." );
29                 equal( objDate.options.type, "date", "should 'date' type created." );
30                 equal( objTime.options.type, "time", "should 'time' type created." );
31                 equal( objCustom.options.type, "datetime", "should custom format created as 'datetime' type." );
32                 equal( objCustom.options.format, "MMM dd yyyy hh:mm tt", "should accept custom format string." );
33                 equal( objCustom.options.date.toString(), new Date("Jun 30 00:00:00 UTC+0000 2012").toString(), "should accept preset date." );
34
35                 start();
36         });
37
38         asyncTest( "Private Methods", function () {
39                 ok( ( function () {
40                         var year = 0,
41                                 expect = false,
42                                 actual = false;
43
44                         try {
45                                 for ( year = 1; year < 2100; year++ ) {
46                                         expect = new Date( year, 1, 29 ).getDate() == 29;
47                                         actual = objDatetime._isLeapYear( year );
48                                         if ( expect != actual ) {
49                                                 throw "" + year + " is wrong";
50                                         }
51                                 };
52                         } catch ( exception ) {
53                                 console.log( exception );
54                                 return false;
55                         }
56                         return true;
57                 }()), "should be able to check leap year" );
58
59                 var updateFieldTest = function ( format, value, expect ) {
60                         var target = $('<div data-pat=' + format + '></div>');
61                         objTime._updateField( target, value );
62                         return target.text();
63                 };
64
65                 deepEqual( [
66                         updateFieldTest( "h", 0 ),
67                         updateFieldTest( "hh", 1 ),
68                         updateFieldTest( "H", 13 ),
69                         updateFieldTest( "HH", 9 ),
70                         updateFieldTest( "m", 9 ),
71                         updateFieldTest( "mm", 9 ),
72                         updateFieldTest( "MMM", 3 ),
73                         updateFieldTest( "MMMM", 3 ),
74                         updateFieldTest( "yy", 1995 ),
75                         updateFieldTest( "yyyy", 1995 )
76                 ],
77                 [
78                         "12", "01", "13", "09", "9", "09", Globalize.culture().calendar.months.namesAbbr[2], Globalize.culture().calendar.months.names[2], "95", "1995"
79                 ], "should update field to given value with format" );
80
81                 ok( ( function () {
82                         var beforeNoon = objTime.options.date.getHours() < 12;
83                         objTime._switchAmPm();
84                         return beforeNoon != objTime.options.date.getHours() < 12;
85                 }()), "should change AM/PM by AMPM button" );
86
87                 deepEqual( [ "MMMM", " ", "dd", " ", "yyyy", " ", "hh", ":", "mm", " ", "dummy space" ],
88                         objTime._parsePattern( "MMMM dd yyyy hh:mm 'dummy space'" ), "should parse DTF string as array" );
89
90                 objDatetime.options.date = new Date( "May 2 18:30:00 2012" );
91
92                 var months = Globalize.culture().calendar.months.namesAbbr.slice();
93                 if ( months.length > 12 ) {
94                         months.length = 12;
95                 }
96
97                 deepEqual( [
98                         { // hour h 6
99                                 values : [ "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" ],
100                                 data : [ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 12 ],
101                                 numItems : 12,
102                                 current : 5
103                         },
104                         { // hour H 6
105                                 values : range( 0, 23 ),
106                                 data : range( 0, 23 ),
107                                 numItems : 24,
108                                 current : 18
109                         },
110                         {
111                                 values : months,
112                                 data : range( 1, 12 ),
113                                 numItems : 12,
114                                 current : 4
115                         }
116                 ],
117                 [
118                         objDatetime._populateDataSelector( "hour", "hh", objDatetime ),
119                         objDatetime._populateDataSelector( "hour", "H", objDatetime ),
120                         objDatetime._populateDataSelector( "month", "MMM", objDatetime )
121                 ], "should populate data selector by given field and pattern" );
122
123                 start();
124         });
125
126         asyncTest( "Public Methods", function () {
127                 objDatetime.value.call( objDatetime, "Jan 1 09:00:00 2012" );
128                 equal( "2012-01-01T09:00:00", objDatetime.value(), "should set and get value by API" );
129                 var format = "yyyy MM dd hh mm";
130                 objDatetime._setFormat( format );
131                 equal( objDatetime.option("format"), format, "should set type and format" );
132                 start();
133         });
134
135         asyncTest( "Events", function () {
136                 var str = "May 2 18:00:00 2012";
137
138                 $(datetime).bind("date-changed", function(e, date) {
139                         equal( date, "2012-05-02T18:00:00", "Should invoke event when date changed" );
140                         start();
141                 });
142
143                 objDatetime.value( str );
144         });
145
146
147 });