test/test/googlecalendar.rb in when_exe-0.3.6 vs test/test/googlecalendar.rb in when_exe-0.3.7
- old
+ new
@@ -1,176 +1,194 @@
-# -*- coding: utf-8 -*-
-=begin
- Copyright (C) 2012-2014 Takashi SUGA
-
- You may use and/or modify this file according to the license
- described in the LICENSE.txt file included in this archive.
-=end
-
-module Test
-
- class GoogleCalendar < Test::Unit::TestCase
-
- config = ::When.config
- ACCOUNT, PASSWORD = config['@'] if config.key?('@')
-
- PUBLIC_FEED = "http://www.google.com/calendar/feeds/%s__%s%%40holiday.calendar.google.com/public/full"
- PRIVATE_FEED = "http://www.google.com/calendar/feeds/%s%%40gmail.com/private/full"
- YEAR = "1949"
- RULE0 = <<RULE0
-DTSTART;VALUE=DATE:19490101
-DTEND;VALUE=DATE:19490102
-RRULE:FREQ=YEARLY
-RULE0
- RULE1 = <<RULE1
-RRULE:FREQ=YEARLY
-DTSTART;TZID=America/New_York:#{YEAR}0321T120000
-DTEND;TZID=America/New_York:#{YEAR}0322T130000
-RULE1
- RECURRENCE = <<RECURRENCE
-DTSTART;TZID=America/New_York:#{YEAR}0321T120000
-DTEND;TZID=America/New_York:#{YEAR}0322T130000
-RRULE:FREQ=YEARLY
-BEGIN:VTIMEZONE
-TZID:America/New_York
-X-LIC-LOCATION:America/New_York
-BEGIN:DAYLIGHT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-TZNAME:EDT
-DTSTART:19700308T020000
-RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
-END:DAYLIGHT
-BEGIN:STANDARD
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-TZNAME:EST
-DTSTART:19701101T020000
-RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
-END:STANDARD
-END:VTIMEZONE
-RECURRENCE
-
- HOLIDAYS = [
- ["元日", "2012-01-01T00:00:00.00+09:00", "2012-01-02T00:00:00.00+09:00"],
- ["元日 振替休日", "2012-01-02T00:00:00.00+09:00", "2012-01-03T00:00:00.00+09:00"],
- ["銀行休業日", "2012-01-02T00:00:00.00+09:00", "2012-01-03T00:00:00.00+09:00"],
- ["銀行休業日", "2012-01-03T00:00:00.00+09:00", "2012-01-04T00:00:00.00+09:00"],
- ["成人の日", "2012-01-09T00:00:00.00+09:00", "2012-01-10T00:00:00.00+09:00"],
- ["建国記念の日", "2012-02-11T00:00:00.00+09:00", "2012-02-12T00:00:00.00+09:00"],
- ["春分の日", "2012-03-20T00:00:00.00+09:00", "2012-03-21T00:00:00.00+09:00"],
- ["昭和の日", "2012-04-29T00:00:00.00+09:00", "2012-04-30T00:00:00.00+09:00"],
- ["昭和の日 振替休日", "2012-04-30T00:00:00.00+09:00", "2012-05-01T00:00:00.00+09:00"],
- ["憲法記念日", "2012-05-03T00:00:00.00+09:00", "2012-05-04T00:00:00.00+09:00"],
- ["みどりの日", "2012-05-04T00:00:00.00+09:00", "2012-05-05T00:00:00.00+09:00"],
- ["こどもの日", "2012-05-05T00:00:00.00+09:00", "2012-05-06T00:00:00.00+09:00"],
- ["海の日", "2012-07-16T00:00:00.00+09:00", "2012-07-17T00:00:00.00+09:00"],
- ["敬老の日", "2012-09-17T00:00:00.00+09:00", "2012-09-18T00:00:00.00+09:00"],
- ["秋分の日", "2012-09-22T00:00:00.00+09:00", "2012-09-23T00:00:00.00+09:00"],
- ["体育の日", "2012-10-08T00:00:00.00+09:00", "2012-10-09T00:00:00.00+09:00"],
- ["文化の日", "2012-11-03T00:00:00.00+09:00", "2012-11-04T00:00:00.00+09:00"],
- ["勤労感謝の日", "2012-11-23T00:00:00.00+09:00", "2012-11-24T00:00:00.00+09:00"],
- ["天皇誕生日", "2012-12-23T00:00:00.00+09:00", "2012-12-24T00:00:00.00+09:00"],
- ["天皇誕生日 振替休日", "2012-12-24T00:00:00.00+09:00", "2012-12-25T00:00:00.00+09:00"],
- ["クリスマス", "2012-12-25T00:00:00.00+09:00", "2012-12-26T00:00:00.00+09:00"],
- ["大晦日", "2012-12-31T00:00:00.00+09:00", "2013-01-01T00:00:00.00+09:00"]
- ]
-
- WEEKLY_EVENTS = [
- "2012-03-08T08:30:00+09:00...2012-03-08T09:30:00+09:00",
- "2012-03-15T08:30:00+09:00...2012-03-15T09:30:00+09:00",
- "2012-03-22T08:30:00+09:00...2012-03-22T09:30:00+09:00",
- "2012-03-29T08:30:00+09:00...2012-03-29T09:30:00+09:00"
- ]
-
- def get_cal(feed)
- ::GoogleCalendar::Calendar::new(::GoogleCalendar::Service.new("#{ACCOUNT}@gmail.com", PASSWORD), feed)
- end
-
- def test_nothing
- end
-
- if const_defined?(:PASSWORD) && Object.const_defined?(:GoogleCalendar)
-
- def test__to_vevent
- holidays = HOLIDAYS.dup
- gcal = get_cal(PUBLIC_FEED % ['japanese', 'ja'])
- gcal.events({'start-min'=>'2012-01-01', 'start-max'=>'2013-01-01',
- 'orderby'=>'starttime', 'sortorder'=>'a' # a:asend, d:desend
- }).each do |event|
- vevent = event.to_vevent
- assert_equal(holidays.shift, [vevent.summary, vevent.dtstart.to_s, vevent.dtend.to_s])
- # puts event.xml
- end
- assert_equal(0, holidays.size)
- end
-
- def test__to_gcalevent
- gcal = get_cal(PRIVATE_FEED % ACCOUNT)
- period = {'start-min'=>'2001-01-01', 'start-max'=>'2001-01-31'}
- gcal.events(period).each do |event|
- event.destroy
- end
- event = When.Resource("examples/JapanHolidays.ics::Ganjitsu").to_gcalevent(gcal)
- event.save!
- holidays = [RULE0] * 2
- gcal.events(period).each do |event|
- assert_equal(holidays.shift, event.recurrence)
- end
- pp 'WARN: event is duplicated.' if holidays.size == 0
- assert_equal(true, (0..1).include?(holidays.size))
- end
-
- def test__enum_for
- holidays = HOLIDAYS.dup
- holidays.delete_at(2)
- gcal = get_cal(PUBLIC_FEED % ['japanese', 'ja'])
- gcal.enum_for({'start-min'=>'2012-01-01', 'start-max'=>'2013-01-01'}).each do |date|
- sample = holidays.shift
- assert_equal(sample[1] + '...' + sample[2], date.to_s)
- end
- assert_equal(0, holidays.size)
- end
-
-=begin
- def test__eprivate_events_1
- weekly_events = WEEKLY_EVENTS.dup
- gcal = get_cal(PRIVATE_FEED % ACCOUNT)
- period = {'start-min'=>'2012-03-01', 'start-max'=>'2012-03-31'}
-
- assert_equal(["canceled","confirmed"], gcal.events(period).map {|event| event.event_status})
- gcal.enum_for(period).each do |date|
- assert_equal(weekly_events.shift, date.to_s)
- end
- assert_equal(0, weekly_events.size)
- end
-
- def test__private_events_2
- gcal = get_cal(PRIVATE_FEED % ACCOUNT)
- period = {'start-min'=>YEAR + '-03-01', 'start-max'=>YEAR + '-03-31'}
-
- gcal.events(period).each do |event|
- event.destroy
- end
-
- new_event = gcal.create_event
- new_event.title = "Test Event"
- new_event.desc = "Test Event Description"
- new_event.where = "America/New_York"
- #new_event.st = Time.mktime(YEAR.to_i, 3, 21, 12, 0, 0)
- #new_event.en = Time.mktime(YEAR.to_i, 3, 22, 13, 0, 0)
- new_event.recurrence = RULE1
- new_event.save!
-
- gcal.events(period).each do |event|
- assert_equal([new_event.title, new_event.desc, new_event.where, RECURRENCE],
- [event.title, event.desc, event.where, event.recurrence])
- end
- new_event.destroy
- end
-=end
- else
- puts "Tests for GoogleCalendar have been skipped at line #{__LINE__} of #{__FILE__.split(/\//)[-1]}."
- end
- end
-end
-
+# -*- coding: utf-8 -*-
+=begin
+ Copyright (C) 2012-2014 Takashi SUGA
+
+ You may use and/or modify this file according to the license
+ described in the LICENSE.txt file included in this archive.
+=end
+
+module MiniTest
+
+ class GoogleCalendar < MiniTest::TestCase
+
+ config = ::When.config
+ ACCOUNT, PASSWORD = config['@'] if config.key?('@')
+
+ PUBLIC_FEED = "http://www.google.com/calendar/feeds/%s__%s%%40holiday.calendar.google.com/public/full"
+ PRIVATE_FEED = "http://www.google.com/calendar/feeds/%s%%40gmail.com/private/full"
+ YEAR = "1949"
+ RULE0 = <<RULE0
+DTSTART;VALUE=DATE:19490101
+DTEND;VALUE=DATE:19490102
+RRULE:FREQ=YEARLY
+RULE0
+ RULE1 = <<RULE1
+RRULE:FREQ=YEARLY
+DTSTART;TZID=America/New_York:#{YEAR}0321T120000
+DTEND;TZID=America/New_York:#{YEAR}0322T130000
+RULE1
+ RECURRENCE = <<RECURRENCE
+DTSTART;TZID=America/New_York:#{YEAR}0321T120000
+DTEND;TZID=America/New_York:#{YEAR}0322T130000
+RRULE:FREQ=YEARLY
+BEGIN:VTIMEZONE
+TZID:America/New_York
+X-LIC-LOCATION:America/New_York
+BEGIN:DAYLIGHT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+TZNAME:EDT
+DTSTART:19700308T020000
+RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+TZNAME:EST
+DTSTART:19701101T020000
+RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
+END:STANDARD
+END:VTIMEZONE
+RECURRENCE
+
+ HOLIDAYS1 = [ # Public Feed
+ ["元日", "2013-01-01T00:00:00.00+09:00", "2013-01-02T00:00:00.00+09:00"],
+ ["銀行休業日", "2013-01-02T00:00:00.00+09:00", "2013-01-03T00:00:00.00+09:00"],
+ ["銀行休業日", "2013-01-03T00:00:00.00+09:00", "2013-01-04T00:00:00.00+09:00"],
+ ["成人の日", "2013-01-14T00:00:00.00+09:00", "2013-01-15T00:00:00.00+09:00"],
+ ["建国記念の日", "2013-02-11T00:00:00.00+09:00", "2013-02-12T00:00:00.00+09:00"],
+ ["春分の日", "2013-03-20T00:00:00.00+09:00", "2013-03-21T00:00:00.00+09:00"],
+ ["昭和の日", "2013-04-29T00:00:00.00+09:00", "2013-04-30T00:00:00.00+09:00"],
+ ["憲法記念日", "2013-05-03T00:00:00.00+09:00", "2013-05-04T00:00:00.00+09:00"],
+ ["みどりの日", "2013-05-04T00:00:00.00+09:00", "2013-05-05T00:00:00.00+09:00"],
+ ["こどもの日", "2013-05-05T00:00:00.00+09:00", "2013-05-06T00:00:00.00+09:00"],
+ ["こどもの日 振替休日", "2013-05-06T00:00:00.00+09:00", "2013-05-07T00:00:00.00+09:00"],
+ ["海の日", "2013-07-15T00:00:00.00+09:00", "2013-07-16T00:00:00.00+09:00"],
+ ["敬老の日", "2013-09-16T00:00:00.00+09:00", "2013-09-17T00:00:00.00+09:00"],
+ ["秋分の日", "2013-09-23T00:00:00.00+09:00", "2013-09-24T00:00:00.00+09:00"],
+ ["体育の日", "2013-10-14T00:00:00.00+09:00", "2013-10-15T00:00:00.00+09:00"],
+ ["文化の日", "2013-11-03T00:00:00.00+09:00", "2013-11-04T00:00:00.00+09:00"],
+ ["文化の日 振替休日", "2013-11-04T00:00:00.00+09:00", "2013-11-05T00:00:00.00+09:00"],
+ ["勤労感謝の日", "2013-11-23T00:00:00.00+09:00", "2013-11-24T00:00:00.00+09:00"],
+ ["天皇誕生日", "2013-12-23T00:00:00.00+09:00", "2013-12-24T00:00:00.00+09:00"],
+ ["クリスマス", "2013-12-25T00:00:00.00+09:00", "2013-12-26T00:00:00.00+09:00"],
+ ["大晦日", "2013-12-31T00:00:00.00+09:00", "2014-01-01T00:00:00.00+09:00"]
+ ]
+
+ HOLIDAYS2 = [ # Private Feed
+ ["元日", "2013-01-01T00:00:00.00+09:00", "2013-01-02T00:00:00.00+09:00"],
+ ["元日 振替休日", "2013-01-02T00:00:00.00+09:00", "2013-01-03T00:00:00.00+09:00"],
+ ["銀行休業日", "2013-01-03T00:00:00.00+09:00", "2013-01-04T00:00:00.00+09:00"],
+ ["成人の日", "2013-01-14T00:00:00.00+09:00", "2013-01-15T00:00:00.00+09:00"],
+ ["建国記念の日", "2013-02-11T00:00:00.00+09:00", "2013-02-12T00:00:00.00+09:00"],
+ ["春分の日", "2013-03-20T00:00:00.00+09:00", "2013-03-21T00:00:00.00+09:00"],
+ ["昭和の日", "2013-04-29T00:00:00.00+09:00", "2013-04-30T00:00:00.00+09:00"],
+ ["憲法記念日", "2013-05-03T00:00:00.00+09:00", "2013-05-04T00:00:00.00+09:00"],
+ ["みどりの日", "2013-05-04T00:00:00.00+09:00", "2013-05-05T00:00:00.00+09:00"],
+ ["こどもの日", "2013-05-05T00:00:00.00+09:00", "2013-05-06T00:00:00.00+09:00"],
+ ["みどりの日 振替休日", "2013-05-06T00:00:00.00+09:00", "2013-05-07T00:00:00.00+09:00"],
+ ["海の日", "2013-07-15T00:00:00.00+09:00", "2013-07-16T00:00:00.00+09:00"],
+ ["敬老の日", "2013-09-16T00:00:00.00+09:00", "2013-09-17T00:00:00.00+09:00"],
+ ["秋分の日", "2013-09-23T00:00:00.00+09:00", "2013-09-24T00:00:00.00+09:00"],
+ ["体育の日", "2013-10-14T00:00:00.00+09:00", "2013-10-15T00:00:00.00+09:00"],
+ ["文化の日", "2013-11-03T00:00:00.00+09:00", "2013-11-04T00:00:00.00+09:00"],
+ ["文化の日 振替休日", "2013-11-04T00:00:00.00+09:00", "2013-11-05T00:00:00.00+09:00"],
+ ["勤労感謝の日", "2013-11-23T00:00:00.00+09:00", "2013-11-24T00:00:00.00+09:00"],
+ ["天皇誕生日", "2013-12-23T00:00:00.00+09:00", "2013-12-24T00:00:00.00+09:00"],
+ ["クリスマス", "2013-12-25T00:00:00.00+09:00", "2013-12-26T00:00:00.00+09:00"],
+ ["大晦日", "2013-12-31T00:00:00.00+09:00", "2014-01-01T00:00:00.00+09:00"]
+ ]
+
+ WEEKLY_EVENTS = [
+ "2014-07-17T08:30:00+09:00...2014-07-17T09:30:00+09:00",
+ "2014-07-31T08:30:00+09:00...2014-07-31T09:30:00+09:00"
+ ]
+
+ def get_cal(feed)
+ ::GoogleCalendar::Calendar::new(::GoogleCalendar::Service.new("#{ACCOUNT}@gmail.com", PASSWORD), feed)
+ end
+
+ def test_nothing
+ end
+
+ if const_defined?(:PASSWORD) && Object.const_defined?(:GoogleCalendar)
+
+ def test__to_vevent
+ holidays = HOLIDAYS1.dup
+ gcal = get_cal(PUBLIC_FEED % ['japanese', 'ja'])
+ gcal.events({'start-min'=>'2013-01-01', 'start-max'=>'2014-01-01',
+ 'orderby'=>'starttime', 'sortorder'=>'a' # a:asend, d:desend
+ }).each do |event|
+ vevent = event.to_vevent
+ assert_equal(holidays.shift, [vevent.summary, vevent.dtstart.to_s, vevent.dtend.to_s])
+ # puts event.xml
+ end
+ assert_equal(0, holidays.size)
+ end
+
+ def test__to_gcalevent
+ gcal = get_cal(PRIVATE_FEED % ACCOUNT)
+ period = {'start-min'=>'2001-01-01', 'start-max'=>'2001-01-31'}
+ gcal.events(period).each do |event|
+ event.destroy
+ end
+ event = When.Resource("examples/JapanHolidays.ics::Ganjitsu").to_gcalevent(gcal)
+ event.save!
+ holidays = [RULE0]
+ gcal.events(period).each do |event|
+ assert_equal(holidays.shift, event.recurrence)
+ end
+ assert_equal(0, holidays.size)
+ end
+
+ def test__enum_for
+ holidays = HOLIDAYS2.dup
+ gcal = get_cal(PUBLIC_FEED % ['japanese', 'ja'])
+ gcal.enum_for({'start-min'=>'2013-01-01', 'start-max'=>'2014-01-01'}).each do |date|
+ sample = holidays.shift
+ assert_equal(sample[1] + '...' + sample[2], date.to_s)
+ end
+ assert_equal(0, holidays.size)
+ end
+=begin
+ def test__private_events_1
+ weekly_events = WEEKLY_EVENTS.dup
+ gcal = get_cal(PRIVATE_FEED % ACCOUNT)
+ period = {'start-min'=>'2014-07-01', 'start-max'=>'2014-08-01'}
+
+ assert_equal(["canceled","confirmed"], gcal.events(period).map {|event| event.event_status})
+ gcal.enum_for(period).each do |date|
+ assert_equal(weekly_events.shift, date.to_s)
+ end
+ assert_equal(0, weekly_events.size)
+ end
+
+ def test__private_events_2
+ gcal = get_cal(PRIVATE_FEED % ACCOUNT)
+ period = {'start-min'=>YEAR + '-03-01', 'start-max'=>YEAR + '-03-31'}
+
+ gcal.events(period).each do |event|
+ event.destroy
+ end
+
+ new_event = gcal.create_event
+ new_event.title = "MiniTest Event"
+ new_event.desc = "MiniTest Event Description"
+ new_event.where = "America/New_York"
+ #new_event.st = Time.mktime(YEAR.to_i, 3, 21, 12, 0, 0)
+ #new_event.en = Time.mktime(YEAR.to_i, 3, 22, 13, 0, 0)
+ new_event.recurrence = RULE1
+ new_event.save!
+
+ gcal.events(period).each do |event|
+ assert_equal([new_event.title, new_event.desc, new_event.where, RECURRENCE],
+ [event.title, event.desc, event.where, event.recurrence])
+ end
+ new_event.destroy
+ end
+=end
+ else
+ puts "Tests for GoogleCalendar have been skipped at line #{__LINE__} of #{__FILE__.split(/\//)[-1]}."
+ end
+ end
+end
+