Ready for 7.10.29 development.
This commit is contained in:
commit
c806f99b7b
4236 changed files with 1217679 additions and 0 deletions
118
t/DateTime.t
Normal file
118
t/DateTime.t
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
#-------------------------------------------------------------------
|
||||
# WebGUI is Copyright 2001-2009 Plain Black Corporation.
|
||||
#-------------------------------------------------------------------
|
||||
# Please read the legal notices (docs/legal.txt) and the license
|
||||
# (docs/license.txt) that came with this distribution before using
|
||||
# this software.
|
||||
#-------------------------------------------------------------------
|
||||
# http://www.plainblack.com info@plainblack.com
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
use FindBin;
|
||||
use strict;
|
||||
use lib "$FindBin::Bin/lib";
|
||||
use WebGUI::Test;
|
||||
use WebGUI::Session;
|
||||
use WebGUI::User;
|
||||
use DateTime;
|
||||
use WebGUI::DateTime;
|
||||
|
||||
# load your modules here
|
||||
|
||||
use Test::More;
|
||||
use Test::Deep;
|
||||
|
||||
my $session = WebGUI::Test->session;
|
||||
|
||||
# put your tests here
|
||||
|
||||
plan tests => 32;
|
||||
|
||||
my $timeZoneUser = addUser($session);
|
||||
|
||||
my $dt = WebGUI::DateTime->new($session,"2006-11-06 21:12:45");
|
||||
|
||||
isa_ok($dt, "WebGUI::DateTime", "constructor via epoch");
|
||||
isa_ok($dt, "DateTime", "constructor");
|
||||
|
||||
is($dt->toDatabase, "2006-11-06 21:12:45", "toDatabase returns the identical string since it is in UTC");
|
||||
is($dt->toDatabaseDate, "2006-11-06", "toDatabaseDate returns the identical date since it is in UTC");
|
||||
is($dt->toDatabaseTime, "21:12:45", "toDatabaseTime returns the identical time since it is in UTC");
|
||||
|
||||
$session->user({user => $timeZoneUser});
|
||||
|
||||
my $copiedDt = $dt->cloneToUserTimeZone;
|
||||
isa_ok($copiedDt, "WebGUI::DateTime", "cloneToUserTimeZone");
|
||||
isa_ok($copiedDt->session, "WebGUI::Session", "cloneToUserTimeZone also copies over the session object");
|
||||
|
||||
is($copiedDt->time_zone()->name, "America/Hermosillo", "cloned object has correct time zone");
|
||||
is($dt->time_zone()->name, "UTC", "original object is still UTC");
|
||||
|
||||
is($copiedDt->toUserTimeZone(), "2006-11-06 14:12:45", "toUserTimeZone obeys the time zone");
|
||||
is($copiedDt->toUserTimeZoneDate(), "2006-11-06", "toUserTimeZoneDate obeys the time zone");
|
||||
is($copiedDt->toUserTimeZoneTime(), "14:12:45", "toUserTimeZoneTime obeys the time zone");
|
||||
|
||||
$copiedDt->add(hours => 1);
|
||||
|
||||
isa_ok($copiedDt, "WebGUI::DateTime", "add returns itself");
|
||||
isa_ok($copiedDt->session, "WebGUI::Session", "add does not nuke its session");
|
||||
|
||||
is($copiedDt->time_zone()->name, "America/Hermosillo", "add does not change the time zone");
|
||||
is($copiedDt->toUserTimeZone(), "2006-11-06 15:12:45", "add returns the correct time");
|
||||
|
||||
my $epochDt = WebGUI::DateTime->new($session, "1169141075");
|
||||
isa_ok($epochDt, "WebGUI::DateTime", "epochal construction");
|
||||
|
||||
my $now;
|
||||
my $nowDt = WebGUI::DateTime->new($session);
|
||||
isa_ok($nowDt, 'WebGUI::DateTime', 'constructed with undef');
|
||||
cmp_deeply($nowDt->epoch, num(time(),5), '... uses now as the epoch');
|
||||
|
||||
$nowDt = WebGUI::DateTime->new($session, '');
|
||||
isa_ok($nowDt, 'WebGUI::DateTime', 'constructed with empty string');
|
||||
cmp_deeply($nowDt->epoch, num(time(),5), '... uses now as the epoch');
|
||||
|
||||
my $dt1970 = WebGUI::DateTime->new($session, 0);
|
||||
isa_ok($dt1970, 'WebGUI::DateTime', 'constructed with 0');
|
||||
is($dt1970->epoch, 0, '... uses 0 for epoch');
|
||||
|
||||
my $bday = WebGUI::DateTime->new($session, '2001-08-16');
|
||||
isa_ok($bday, 'WebGUI::DateTime', 'constructed with mysql date, no time');
|
||||
is(
|
||||
$bday->epoch,
|
||||
WebGUI::DateTime->new($session, WebGUI::Test->webguiBirthday)->truncate( to => 'day')->epoch,
|
||||
'... has correct epoch'
|
||||
);
|
||||
|
||||
my $badday = eval { WebGUI::DateTime->new($session, '2001-08-161'); };
|
||||
ok($@, 'new croaks on a bad date');
|
||||
my $badday = eval { WebGUI::DateTime->new($session, '2001-08-16 99:99:99'); };
|
||||
ok($@, 'new croaks on an out of range time');
|
||||
my $badday = eval { WebGUI::DateTime->new($session, '2001-08-16 99:199:99'); };
|
||||
ok($@, 'new croaks on an illegal time');
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Test webguiToStrftime conversion
|
||||
is( $nowDt->webguiToStrftime('%y-%m-%d'), '%Y-%m-%d', 'webgui to strftime conversion' );
|
||||
|
||||
$timeZoneUser->update({ 'dateFormat' => '%y-%M-%D' });
|
||||
$timeZoneUser->update({ 'timeFormat' => '%H:%n %p' });
|
||||
is( $nowDt->webguiToStrftime, '%Y-%{month}-%{day} %l:%M %P', 'default datetime string' );
|
||||
|
||||
my $single_digit = WebGUI::DateTime->new($session, '2011-07-04 15:00:00');
|
||||
is $single_digit->webguiDate("%z"), '2011-7-4', 'single digit month and day check';
|
||||
is $single_digit->webguiDate("%z"), $session->datetime->epochToHuman($single_digit->epoch, '%z'), 'webguiDate, an exact match to session->datetime';
|
||||
|
||||
sub addUser {
|
||||
my $session = shift;
|
||||
|
||||
my $user = WebGUI::User->new($session, "new");
|
||||
|
||||
##From my research, this particular time zone does NOT follow daylight savings,
|
||||
##so the test will not fail in the summer
|
||||
$user->profileField("timeZone","America/Hermosillo");
|
||||
$user->username("Time Zone");
|
||||
addToCleanup($user);
|
||||
return $user;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue