@@ -387,4 +387,116 @@ describe('date parser', function() {
387
387
388
388
expect ( dateParser . init ) . toHaveBeenCalled ( ) ;
389
389
} ) ) ;
390
+
391
+
392
+ describe ( 'timezone functions' , function ( ) {
393
+ describe ( 'toTimezone' , function ( ) {
394
+ it ( 'adjusts date: EST + PST' , function ( ) {
395
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
396
+ var toWestDate = dateParser . toTimezone ( date , 'PST' ) ;
397
+ var toEastDate = dateParser . toTimezone ( date , 'EST' ) ;
398
+ expect ( toWestDate . getTime ( ) - toEastDate . getTime ( ) ) . toEqual ( 1000 * 60 * 60 * 3 ) ;
399
+ } ) ;
400
+
401
+ it ( 'adjusts date: GMT-0500 + GMT+0500' , function ( ) {
402
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
403
+ var toWestDate = dateParser . toTimezone ( date , 'GMT-0500' ) ;
404
+ var toEastDate = dateParser . toTimezone ( date , 'GMT+0500' ) ;
405
+ expect ( toWestDate . getTime ( ) - toEastDate . getTime ( ) ) . toEqual ( 1000 * 60 * 60 * 10 ) ;
406
+ } ) ;
407
+
408
+ it ( 'adjusts date: -600 + +600' , function ( ) {
409
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
410
+ var toWestDate = dateParser . toTimezone ( date , '-600' ) ;
411
+ var toEastDate = dateParser . toTimezone ( date , '+600' ) ;
412
+ expect ( toWestDate . getTime ( ) - toEastDate . getTime ( ) ) . toEqual ( 1000 * 60 * 60 * 12 ) ;
413
+ } ) ;
414
+
415
+ it ( 'tolerates null date' , function ( ) {
416
+ var date = null ;
417
+ var toNullDate = dateParser . toTimezone ( date , '-600' ) ;
418
+ expect ( toNullDate ) . toEqual ( date ) ;
419
+ } ) ;
420
+
421
+ it ( 'tolerates null timezone' , function ( ) {
422
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
423
+ var toNullTimezoneDate = dateParser . toTimezone ( date , null ) ;
424
+ expect ( toNullTimezoneDate ) . toEqual ( date ) ;
425
+ } ) ;
426
+ } ) ;
427
+
428
+ describe ( 'fromTimezone' , function ( ) {
429
+ it ( 'adjusts date: EST + PST' , function ( ) {
430
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
431
+ var fromWestDate = dateParser . fromTimezone ( date , 'PST' ) ;
432
+ var fromEastDate = dateParser . fromTimezone ( date , 'EST' ) ;
433
+ expect ( fromWestDate . getTime ( ) - fromEastDate . getTime ( ) ) . toEqual ( 1000 * 60 * 60 * - 3 ) ;
434
+ } ) ;
435
+
436
+ it ( 'adjusts date: GMT-0500 + GMT+0500' , function ( ) {
437
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
438
+ var fromWestDate = dateParser . fromTimezone ( date , 'GMT-0500' ) ;
439
+ var fromEastDate = dateParser . fromTimezone ( date , 'GMT+0500' ) ;
440
+ expect ( fromWestDate . getTime ( ) - fromEastDate . getTime ( ) ) . toEqual ( 1000 * 60 * 60 * - 10 ) ;
441
+ } ) ;
442
+
443
+ it ( 'adjusts date: -600 + +600' , function ( ) {
444
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
445
+ var fromWestDate = dateParser . fromTimezone ( date , '-600' ) ;
446
+ var fromEastDate = dateParser . fromTimezone ( date , '+600' ) ;
447
+ expect ( fromWestDate . getTime ( ) - fromEastDate . getTime ( ) ) . toEqual ( 1000 * 60 * 60 * - 12 ) ;
448
+ } ) ;
449
+
450
+ it ( 'tolerates null date' , function ( ) {
451
+ var date = null ;
452
+ var toNullDate = dateParser . fromTimezone ( date , '-600' ) ;
453
+ expect ( toNullDate ) . toEqual ( date ) ;
454
+ } ) ;
455
+
456
+ it ( 'tolerates null timezone' , function ( ) {
457
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
458
+ var toNullTimezoneDate = dateParser . fromTimezone ( date , null ) ;
459
+ expect ( toNullTimezoneDate ) . toEqual ( date ) ;
460
+ } ) ;
461
+ } ) ;
462
+
463
+ describe ( 'timezoneToOffset' , function ( ) {
464
+ it ( 'calculates minutes off from current timezone' , function ( ) {
465
+ var offsetMinutesUtc = dateParser . timezoneToOffset ( 'UTC' ) ;
466
+ var offsetMinutesUtcPlus1 = dateParser . timezoneToOffset ( 'GMT+0100' ) ;
467
+ expect ( offsetMinutesUtc - offsetMinutesUtcPlus1 ) . toEqual ( 60 ) ;
468
+ } ) ;
469
+ } ) ;
470
+
471
+ describe ( 'addDateMinutes' , function ( ) {
472
+ it ( 'adds minutes to a date' , function ( ) {
473
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
474
+ var oneHourMore = dateParser . addDateMinutes ( date , 60 ) ;
475
+ expect ( oneHourMore ) . toEqual ( new Date ( '2008-01-01T01:00:00.000Z' ) ) ;
476
+ } ) ;
477
+ } ) ;
478
+
479
+ describe ( 'convertTimezoneToLocal' , function ( ) {
480
+ it ( 'adjusts date: EST + PST' , function ( ) {
481
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
482
+ var toWestDate = dateParser . convertTimezoneToLocal ( date , 'PST' ) ;
483
+ var toEastDate = dateParser . convertTimezoneToLocal ( date , 'EST' ) ;
484
+ expect ( toWestDate . getTime ( ) - toEastDate . getTime ( ) ) . toEqual ( 1000 * 60 * 60 * 3 ) ;
485
+ } ) ;
486
+
487
+ it ( 'adjusts date: GMT-0500 + GMT+0500' , function ( ) {
488
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
489
+ var toWestDate = dateParser . convertTimezoneToLocal ( date , 'GMT-0500' ) ;
490
+ var toEastDate = dateParser . convertTimezoneToLocal ( date , 'GMT+0500' ) ;
491
+ expect ( toWestDate . getTime ( ) - toEastDate . getTime ( ) ) . toEqual ( 1000 * 60 * 60 * 10 ) ;
492
+ } ) ;
493
+
494
+ it ( 'adjusts date: -600 + +600' , function ( ) {
495
+ var date = new Date ( '2008-01-01T00:00:00.000Z' ) ;
496
+ var toWestDate = dateParser . convertTimezoneToLocal ( date , '-600' ) ;
497
+ var toEastDate = dateParser . convertTimezoneToLocal ( date , '+600' ) ;
498
+ expect ( toWestDate . getTime ( ) - toEastDate . getTime ( ) ) . toEqual ( 1000 * 60 * 60 * 12 ) ;
499
+ } ) ;
500
+ } ) ;
501
+ } ) ;
390
502
} ) ;
0 commit comments