Changeset 1760

Show
Ignore:
Timestamp:
10/15/06 22:40:29
Author:
miyagawa
Message:

Publish::iCal: fixed TZ handling code. Added tests

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/plagger/lib/Plagger/Plugin/Publish/iCal.pm

    r1759 r1760  
    4040        my $event = Data::ICal::Entry::Event->new; 
    4141 
     42        my $tz = $date->time_zone; 
     43        my %param; 
     44        if (!$tz->is_floating && $tz->name ne 'UTC' && !$tz->isa('DateTime::TimeZone::OffsetOnly')) { 
     45            # don't set TZID if tz name is like '+0900' 
     46            $param{TZID} = $tz->name; 
     47        } 
     48 
    4249        my($dtstart, $dtend); 
    43         my %param; 
    44         if (!$date->time_zone->is_floating && $date->time_zone->name ne 'UTC') { 
    45             $param{TZID} = $date->time_zone->name; 
    46         } 
    4750        if ($date->hms eq '00:00:00') { 
    4851            $dtstart = [ $date->strftime('%Y%m%d'), { %param, VALUE => 'DATE' } ]; 
  • trunk/plagger/t/plugins/Publish-iCal/base.t

    r1723 r1760  
    5656is_deeply $ical->entries->[0]->property('dtstart')->[0]->parameters, { VALUE => 'DATE' }; 
    5757 
     58=== Timezone UTC 
     59--- input config 
     60plugins: 
     61  - module: CustomFeed::Debug 
     62    config: 
     63      title: Foo Bar Calendar 
     64      entry: 
     65        - date: 2006/10/20 12:34:56 UTC 
     66          title: Shibuya.pm Tech Talks 
     67  - module: Publish::iCal 
     68    config: 
     69      dir: $FindBin::Bin 
     70      filename: $::filename 
     71--- expected 
     72ok -e $::output; 
     73my $ical = Data::ICal->new(filename => $::output); 
     74is $ical->entries->[0]->property('dtstart')->[0]->value, "20061020T123456Z"; 
     75 
     76=== floating TZ 
     77--- input config 
     78plugins: 
     79  - module: CustomFeed::Debug 
     80    config: 
     81      title: Foo Bar Calendar 
     82      entry: 
     83        - date: 2006/10/20 12:34:56 
     84          title: Shibuya.pm Tech Talks 
     85  - module: Publish::iCal 
     86    config: 
     87      dir: $FindBin::Bin 
     88      filename: $::filename 
     89--- expected 
     90ok -e $::output; 
     91my $ical = Data::ICal->new(filename => $::output); 
     92is $ical->entries->[0]->property('dtstart')->[0]->value, "20061020T123456"; 
     93is_deeply $ical->entries->[0]->property('dtstart')->[0]->parameters, {}; 
     94 
     95=== TZ without names (JST is converted +0900 on its way) 
     96--- input config 
     97plugins: 
     98  - module: CustomFeed::Debug 
     99    config: 
     100      title: Foo Bar Calendar 
     101      entry: 
     102        - date: 2006/10/20 12:34:56 JST 
     103          title: Shibuya.pm Tech Talks 
     104  - module: Publish::iCal 
     105    config: 
     106      dir: $FindBin::Bin 
     107      filename: $::filename 
     108--- expected 
     109ok -e $::output; 
     110my $ical = Data::ICal->new(filename => $::output); 
     111is $ical->entries->[0]->property('dtstart')->[0]->value, "20061020T123456"; 
     112is_deeply $ical->entries->[0]->property('dtstart')->[0]->parameters, {}; 
     113 
     114=== Fixed TimeZone 
     115--- input config 
     116global: 
     117  timezone: Asia/Tokyo 
     118plugins: 
     119  - module: CustomFeed::Debug 
     120    config: 
     121      title: Foo Bar Calendar 
     122      entry: 
     123        - date: 2006/10/20 12:34:56 
     124          title: Shibuya.pm Tech Talks 
     125  - module: Filter::FloatingDateTime 
     126  - module: Publish::iCal 
     127    config: 
     128      dir: $FindBin::Bin 
     129      filename: $::filename 
     130--- expected 
     131ok -e $::output; 
     132my $ical = Data::ICal->new(filename => $::output); 
     133is $ical->entries->[0]->property('dtstart')->[0]->value, "20061020T123456"; 
     134is_deeply $ical->entries->[0]->property('dtstart')->[0]->parameters, { TZID => 'Asia/Tokyo' };