diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 76abe88ea..402145569 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -26,6 +26,7 @@ - fixed #11176: New upgrade error in 7.6.35 to 7.7.17 - fixed #11181: ableToBeFriend label not i18n - fixed #11179: user.CanStartThread missing from help + - fixed #11183: Calendar List View 7.8.2 - Added scheduled vendor payout workflow activity. (Special thanks to Martin @ Oqapi) diff --git a/lib/WebGUI/Asset/Wobject/Calendar.pm b/lib/WebGUI/Asset/Wobject/Calendar.pm index fdbb397a6..e288cfa8d 100644 --- a/lib/WebGUI/Asset/Wobject/Calendar.pm +++ b/lib/WebGUI/Asset/Wobject/Calendar.pm @@ -1291,11 +1291,16 @@ sub viewList { my $session = $self->session; my $i18n = WebGUI::International->new($session,"Asset_Calendar"); my $var = $self->getTemplateVars; + my $tz = $session->datetime->getTimeZone(); ### Get the events - my $dtStart = WebGUI::DateTime->new( $session, $params->{start} )->truncate( to => "day" ); + my $dtStart = WebGUI::DateTime->new( $session, $params->{start} ); + $dtStart->set_time_zone($tz); + $dtStart->truncate( to => 'day' ); my $dtEnd = $dtStart->clone->add( seconds => $self->get('listViewPageInterval') ); + warn 'truncated: '.$dtStart->toDatabase; + warn 'end date: '.$dtEnd->toDatabase; my @events = $self->getEventsIn( $dtStart->toDatabase, diff --git a/t/Asset/Wobject/Calendar.t b/t/Asset/Wobject/Calendar.t index 994bff95d..a9dc27bc2 100644 --- a/t/Asset/Wobject/Calendar.t +++ b/t/Asset/Wobject/Calendar.t @@ -66,7 +66,7 @@ my $node = WebGUI::Asset->getImportNode($session); my $versionTag = WebGUI::VersionTag->getWorking($session); $versionTag->set({name=>"Calendar Test"}); -WebGUI::Test->tagsToRollback($versionTag); +addToCleanup($versionTag); my $cal = $node->addChild({className=>'WebGUI::Asset::Wobject::Calendar'}); my $windowCal = $node->addChild({ @@ -264,7 +264,7 @@ my $coincidentHigh = $windowCal->addChild({ my $tag2 = WebGUI::VersionTag->getWorking($session); $tag2->commit; -WebGUI::Test->tagsToRollback($tag2); +addToCleanup($tag2); is(scalar @{ $windowCal->getLineage(['children'])}, 13, 'added events to the window calendar'); @@ -321,7 +321,7 @@ my $endOfWeek = $weekCal->addChild({ my $tag3 = WebGUI::VersionTag->getWorking($session); $tag3->commit; -WebGUI::Test->tagsToRollback($tag3); +addToCleanup($tag3); my $weekVars = $weekCal->viewWeek({ start => $bday }); my @eventBins = (); @@ -401,7 +401,7 @@ my $endOfMonth = $monthCal->addChild({ my $tag4 = WebGUI::VersionTag->getWorking($session); $tag4->commit; -WebGUI::Test->tagsToRollback($tag4); +addToCleanup($tag4); my $monthVars = $monthCal->viewMonth({ start => $bday }); @eventBins = (); @@ -447,7 +447,7 @@ my $dayCal = $node->addChild({ title => 'Calendar for doing event span testing, day', }); -$allDayDt = $bday->cloneToUserTimeZone; +$allDayDt = $bday->cloneToUserTimeZone; my $nextDayDt = $bday->cloneToUserTimeZone->add(days => 1)->truncate( to => 'day')->add(hours => 19); $allDay = $dayCal->addChild({ @@ -472,7 +472,7 @@ my $nextDay = $dayCal->addChild({ my $tag5 = WebGUI::VersionTag->getWorking($session); $tag5->commit; -WebGUI::Test->tagsToRollback($tag5); +addToCleanup($tag5); my $hourVars = $dayCal->viewDay({ start => $nextDayDt }); @eventBins = (); @@ -488,6 +488,62 @@ cmp_deeply( '... end of day event in proper bin' ); +###################################################################### +# +# viewList +# +###################################################################### + +my $listCal = $node->addChild({ + className => 'WebGUI::Asset::Wobject::Calendar', + title => 'Calendar for doing event span testing, list', + listViewPageInterval => 3600*24*3, +}); + +$allDayDt = $bday->cloneToUserTimeZone->truncate( to => 'day' ); +my $prevDayDt = $bday->cloneToUserTimeZone->truncate( to => 'day' )->subtract(days => 1)->add(hours => 19); + +diag $allDayDt->toDatabase; +diag $prevDayDt->toDatabase; + +$allDay = $listCal->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->toDatabaseTime, + endTime => $allDayDt->clone->add(days => 1)->toDatabaseTime, + timeZone => $tz, +}, undef, undef, {skipAutoCommitWorkflows => 1}); + +my $prevDay = $listCal->addChild({ + className => 'WebGUI::Asset::Event', + title => 'Event at the end of the previous day', + startDate => $prevDayDt->toDatabaseDate, + endDate => $prevDayDt->toDatabaseDate, + startTime => $prevDayDt->toDatabaseTime, + endTime => $prevDayDt->clone->add(hours => 1)->toDatabaseTime, + timeZone => $tz, +}, undef, undef, {skipAutoCommitWorkflows => 1}); + +my $tag6 = WebGUI::VersionTag->getWorking($session); +$tag6->commit; +addToCleanup($tag6); + +my $listVars = $listCal->viewList({ start => $bday }); + +@eventBins = (); +foreach my $event (@{ $listVars->{events} }) { + push @eventBins, $event->{eventAssetId}; +} + +cmp_deeply( + \@eventBins, + [ $allDay->getId ], + '... correct set of events in list view' +); + + ###################################################################### # # getFeeds @@ -501,7 +557,7 @@ my $feedCal = $node->addChild({ my $feedTag = WebGUI::VersionTag->getWorking($session); $feedTag->set({name=>"Calendar Feed Test"}); -WebGUI::Test->tagsToRollback($feedTag); +addToCleanup($feedTag); $feedTag->commit; cmp_deeply( @@ -509,8 +565,3 @@ cmp_deeply( [], 'getFeeds: returns an empty array ref with no feeds' ); - -TODO: { - local $TODO = "Tests to make later"; - ok(0, 'Lots more to test'); -}