Forward porting calendar non-inclusive end times fix.
This commit is contained in:
parent
c0fe0a7765
commit
ecd89d349a
4 changed files with 354 additions and 265 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -1338,7 +1338,7 @@ sub viewMonth {
|
|||
next EVENT unless $event->canView();
|
||||
# Get the WebGUI::DateTime objects
|
||||
my $dt_event_start = $event->getDateTimeStart;
|
||||
my $dt_event_end = $event->getDateTimeEnd;
|
||||
my $dt_event_end = $event->getDateTimeEndNI;
|
||||
|
||||
# Prepare the template variables
|
||||
my %eventTemplateVariables = $self->getEventVars($event);
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ use WebGUI::Asset::Event;
|
|||
|
||||
use Test::More; # increment this value for each test you create
|
||||
use Test::Deep;
|
||||
plan tests => 10;
|
||||
plan tests => 13;
|
||||
|
||||
my $session = WebGUI::Test->session;
|
||||
|
||||
|
|
@ -47,6 +47,7 @@ my $properties = {
|
|||
my $event = $cal->addChild($properties, $properties->{id});
|
||||
|
||||
is($event->isAllDay, 0, 'isAllDay is zero since it has a start and end time');
|
||||
cmp_ok($event->getDateTimeEnd, '>', $event->getDateTimeEndNI, 'getDateTimeEndNI is less than getDateTimeEnd');
|
||||
|
||||
my %templateVars = $event->getTemplateVars();
|
||||
is($templateVars{isOneDay}, 1, 'getTemplateVars: isOneDay with start times');
|
||||
|
|
@ -62,6 +63,7 @@ $properties->{url} = 'event-asset-test2';
|
|||
my $event2 = $cal->addChild($properties, $properties->{id});
|
||||
|
||||
is($event2->isAllDay, 1, 'isAllDay is zero since it has no start or end time');
|
||||
cmp_ok($event2->getDateTimeEnd, '==', $event2->getDateTimeEndNI, 'getDateTimeEndNI is the same as getDateTimeEnd, due to no end time');
|
||||
|
||||
%templateVars = $event2->getTemplateVars();
|
||||
is($templateVars{dateSpan}, 'Wednesday, August 16', 'getTemplateVars: dateSpan with no times');
|
||||
|
|
@ -82,4 +84,15 @@ is($event3->isAllDay, 1, 'isAllDay is zero since it has no start or end time, ev
|
|||
is($templateVars{dateSpan}, 'Wednesday, August 16 • Thursday, August 17 ', 'getTemplateVars: dateSpan with no times, across two days');
|
||||
is($templateVars{isOneDay}, 0, 'getTemplateVars: isOneDay with different start and end dates');
|
||||
|
||||
cmp_ok($event3->getDateTimeEnd, '>', $event3->getDateTimeEndNI, 'getDateTimeEndNI is less than getDateTimeEnd');
|
||||
cmp_ok($event3->getDateTimeEnd, '==', $event3->getDateTimeEndNI, 'getDateTimeEndNI is the same as getDateTimeEnd');
|
||||
|
||||
$properties->{startDate} = '2000-08-16';
|
||||
$properties->{endDate} = '2000-08-17';
|
||||
$properties->{startTime} = '00:00:00';
|
||||
$properties->{endTime} = '00:00:00';
|
||||
$properties->{id} = 'EventAssetTest00000004';
|
||||
$properties->{url} = 'event-asset-test4';
|
||||
|
||||
my $event4 = $cal->addChild($properties, $properties->{id});
|
||||
|
||||
cmp_ok($event4->getDateTimeEnd, '>', $event4->getDateTimeEndNI, 'getDateTimeEndNI is less than getDateTimeEnd');
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ use Data::Dumper;
|
|||
use WebGUI::Asset::Wobject::Calendar;
|
||||
use WebGUI::Asset::Event;
|
||||
|
||||
plan tests => 10 + scalar @icalWrapTests;
|
||||
plan tests => 11 + scalar @icalWrapTests;
|
||||
|
||||
my $session = WebGUI::Test->session;
|
||||
|
||||
|
|
@ -258,9 +258,9 @@ my $tag3 = WebGUI::VersionTag->getWorking($session);
|
|||
$tag3->commit;
|
||||
WebGUI::Test->tagsToRollback($tag3);
|
||||
|
||||
my $allVars = $weekCal->viewWeek({ start => $bday });
|
||||
my $weekVars = $weekCal->viewWeek({ start => $bday });
|
||||
my @eventBins = ();
|
||||
foreach my $day (@{ $allVars->{days} }) {
|
||||
foreach my $day (@{ $weekVars->{days} }) {
|
||||
if (exists $day->{events} and scalar @{ $day->{events} } > 0) {
|
||||
push @eventBins, $day->{dayOfWeek};
|
||||
}
|
||||
|
|
@ -286,6 +286,77 @@ foreach my $test (@icalWrapTests) {
|
|||
is ($wrapOut, $out, $comment);
|
||||
}
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# viewMonth
|
||||
#
|
||||
######################################################################
|
||||
|
||||
my $monthCal = $node->addChild({
|
||||
className => 'WebGUI::Asset::Wobject::Calendar',
|
||||
title => 'Calendar for doing event span testing, month',
|
||||
});
|
||||
|
||||
my $allDayDt = $bday->cloneToUserTimeZone;
|
||||
|
||||
my $allDay = $monthCal->addChild({
|
||||
className => 'WebGUI::Asset::Event',
|
||||
title => 'An event with explicit times that lasts all day',
|
||||
startDate => $allDayDt->toDatabaseDate,
|
||||
endDate => $allDayDt->clone->add(days => 1)->toDatabaseDate,
|
||||
startTime => $allDayDt->clone->truncate(to => 'day')->toDatabaseTime,
|
||||
endTime => $allDayDt->clone->add(days => 1)->truncate(to => 'day')->toDatabaseTime,
|
||||
timeZone => $tz,
|
||||
}, undef, undef, {skipAutoCommitWorkflows => 1});
|
||||
|
||||
my $tag4 = WebGUI::VersionTag->getWorking($session);
|
||||
$tag4->commit;
|
||||
WebGUI::Test->tagsToRollback($tag4);
|
||||
|
||||
my $monthVars = $monthCal->viewMonth({ start => $bday });
|
||||
my @eventBins = ();
|
||||
foreach my $week ( @{ $monthVars->{weeks} } ) {
|
||||
foreach my $day (@{ $week->{days} }) {
|
||||
if (exists $day->{events} and scalar @{ $day->{events} } > 0) {
|
||||
push @eventBins, $day->{dayMonth};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cmp_deeply(
|
||||
\@eventBins,
|
||||
[ 16 ],
|
||||
'viewMonth: all day event is only in 1 day when time zones line up correctly'
|
||||
);
|
||||
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# viewDay
|
||||
#
|
||||
######################################################################
|
||||
|
||||
my $dayCal = $node->addChild({
|
||||
className => 'WebGUI::Asset::Wobject::Calendar',
|
||||
title => 'Calendar for doing event span testing, day',
|
||||
});
|
||||
|
||||
my $allDayDt = $bday->cloneToUserTimeZone;
|
||||
|
||||
my $allDay = $dayCal->addChild({
|
||||
className => 'WebGUI::Asset::Event',
|
||||
title => 'An event with explicit times that lasts all day',
|
||||
startDate => $allDayDt->toDatabaseDate,
|
||||
endDate => $allDayDt->clone->add(days => 1)->toDatabaseDate,
|
||||
startTime => $allDayDt->clone->truncate(to => 'day')->toDatabaseTime,
|
||||
endTime => $allDayDt->clone->add(days => 1)->truncate(to => 'day')->toDatabaseTime,
|
||||
timeZone => $tz,
|
||||
}, undef, undef, {skipAutoCommitWorkflows => 1});
|
||||
|
||||
my $tag5 = WebGUI::VersionTag->getWorking($session);
|
||||
$tag5->commit;
|
||||
WebGUI::Test->tagsToRollback($tag5);
|
||||
|
||||
TODO: {
|
||||
local $TODO = "Tests to make later";
|
||||
ok(0, 'Lots more to test');
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue