zeroclickinfo-goodies/t/CalendarToday.t

943 lines
79 KiB
Perl
Executable File

#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use Test::Deep;
use DDG::Test::Goodie;
use Test::MockTime qw( :all );
zci answer_type => 'calendar';
zci is_cached => 0;
ddg_goodie_test(
[qw(
DDG::Goodie::CalendarToday
)],
'calendar' => test_zci(
re(qr/\nS M T W T F S[ ]+[A-Za-z]+ [0-9]{4}\n.+/),
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar november' => test_zci(
re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar november 12th' => test_zci(
re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar last november' => test_zci(
re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar next november' => test_zci(
re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar november 2009' => test_zci("
S M T W T F S November 2009
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
",
structured_answer => {
data => {
month_year => "November 2009",
next_month => "December 2009",
previous_month => "October 2009",
weeks => [
[
{day => 1, today => ""},
{day => 2, today => ""},
{day => 3, today => ""},
{day => 4, today => ""},
{day => 5, today => ""},
{day => 6, today => ""},
{day => 7, today => ""},
],
[
{day => 8, today => ""},
{day => 9, today => ""},
{day => 10, today => ""},
{day => 11, today => ""},
{day => 12, today => ""},
{day => 13, today => ""},
{day => 14, today => ""},
],
[
{day => 15, today => ""},
{day => 16, today => ""},
{day => 17, today => ""},
{day => 18, today => ""},
{day => 19, today => ""},
{day => 20, today => ""},
{day => 21, today => ""},
],
[
{day => 22, today => ""},
{day => 23, today => ""},
{day => 24, today => ""},
{day => 25, today => ""},
{day => 26, today => ""},
{day => 27, today => ""},
{day => 28, today => ""},
],
[
{day => 29, today => ""},
{day => 30, today => ""},
],
]
},
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar 10 nov 2009' => test_zci("
S M T W T F S November 2009
1 2 3 4 5 6 7
8 9 |10| 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
",
structured_answer => {
data => {
month_year => "November 2009",
next_month => "December 2009",
previous_month => "October 2009",
weeks => [
[
{day => 1, today => ""},
{day => 2, today => ""},
{day => 3, today => ""},
{day => 4, today => ""},
{day => 5, today => ""},
{day => 6, today => ""},
{day => 7, today => ""},
],
[
{day => 8, today => ""},
{day => 9, today => ""},
{day => 10, today => "1"},
{day => 11, today => ""},
{day => 12, today => ""},
{day => 13, today => ""},
{day => 14, today => ""},
],
[
{day => 15, today => ""},
{day => 16, today => ""},
{day => 17, today => ""},
{day => 18, today => ""},
{day => 19, today => ""},
{day => 20, today => ""},
{day => 21, today => ""},
],
[
{day => 22, today => ""},
{day => 23, today => ""},
{day => 24, today => ""},
{day => 25, today => ""},
{day => 26, today => ""},
{day => 27, today => ""},
{day => 28, today => ""},
],
[
{day => 29, today => ""},
{day => 30, today => ""},
],
]
},
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar nov 2009' => test_zci("
S M T W T F S November 2009
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
",
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar 29 nov 2015' => test_zci("
S M T W T F S November 2015
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
|29| 30
",
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar 29.11.2015' => test_zci("
S M T W T F S November 2015
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
|29| 30
",
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'cal 1980-11-29' => test_zci("
S M T W T F S November 1980
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 |29|
30
",
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar for november 2009' => test_zci("
S M T W T F S November 2009
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
",
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'next november on a calendar' => test_zci(
re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar for november' => test_zci(
re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'calendar of november 2009' => test_zci("
S M T W T F S November 2009
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
",
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
'22/8/2003 to the hijri calendar' => undef,
"today's calendar" => test_zci(
re(qr/\nS M T W T F S [A-Z][a-z]+ [0-9]{4}\n.+/),
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
"november's calendar" => test_zci(
re(qr/\nS M T W T F S November [0-9]{4}\n.+/),
structured_answer => {
data => ignore(),
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
# Invalid input
'calendar.google.com' => undef,
);
# Special focus on relative dates, examining the "today" circle
my $test_location_tz = re(qr/\(EDT, UTC-4\)/);
set_fixed_time("2014-06-11T09:45:56");
ddg_goodie_test(
[qw(
DDG::Goodie::CalendarToday
)],
"calendar yesterday" => test_zci(
re(qr/June 2014.*\|10\|/s),
structured_answer => {
data => {
month_year => "June 2014",
next_month => "July 2014",
previous_month => "May 2014",
weeks => [
[
{day => 1, today => ""},
{day => 2, today => ""},
{day => 3, today => ""},
{day => 4, today => ""},
{day => 5, today => ""},
{day => 6, today => ""},
{day => 7, today => ""},
],
[
{day => 8, today => ""},
{day => 9, today => ""},
{day => 10, today => "1"},
{day => 11, today => ""},
{day => 12, today => ""},
{day => 13, today => ""},
{day => 14, today => ""},
],
[
{day => 15, today => ""},
{day => 16, today => ""},
{day => 17, today => ""},
{day => 18, today => ""},
{day => 19, today => ""},
{day => 20, today => ""},
{day => 21, today => ""},
],
[
{day => 22, today => ""},
{day => 23, today => ""},
{day => 24, today => ""},
{day => 25, today => ""},
{day => 26, today => ""},
{day => 27, today => ""},
{day => 28, today => ""},
],
[
{day => 29, today => ""},
{day => 30, today => ""},
],
]
},
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
"calendar today" => test_zci(
re(qr/June 2014.*\|11\|/s),
structured_answer => {
data => {
month_year => "June 2014",
next_month => "July 2014",
previous_month => "May 2014",
weeks => [
[
{day => 1, today => ""},
{day => 2, today => ""},
{day => 3, today => ""},
{day => 4, today => ""},
{day => 5, today => ""},
{day => 6, today => ""},
{day => 7, today => ""},
],
[
{day => 8, today => ""},
{day => 9, today => ""},
{day => 10, today => ""},
{day => 11, today => "1"},
{day => 12, today => ""},
{day => 13, today => ""},
{day => 14, today => ""},
],
[
{day => 15, today => ""},
{day => 16, today => ""},
{day => 17, today => ""},
{day => 18, today => ""},
{day => 19, today => ""},
{day => 20, today => ""},
{day => 21, today => ""},
],
[
{day => 22, today => ""},
{day => 23, today => ""},
{day => 24, today => ""},
{day => 25, today => ""},
{day => 26, today => ""},
{day => 27, today => ""},
{day => 28, today => ""},
],
[
{day => 29, today => ""},
{day => 30, today => ""},
],
]
},
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
"calendar tomorrow" => test_zci(
re(qr/June 2014.*\|12\|/s),
structured_answer => {
data => {
month_year => "June 2014",
next_month => "July 2014",
previous_month => "May 2014",
weeks => [
[
{day => 1, today => ""},
{day => 2, today => ""},
{day => 3, today => ""},
{day => 4, today => ""},
{day => 5, today => ""},
{day => 6, today => ""},
{day => 7, today => ""},
],
[
{day => 8, today => ""},
{day => 9, today => ""},
{day => 10, today => ""},
{day => 11, today => ""},
{day => 12, today => "1"},
{day => 13, today => ""},
{day => 14, today => ""},
],
[
{day => 15, today => ""},
{day => 16, today => ""},
{day => 17, today => ""},
{day => 18, today => ""},
{day => 19, today => ""},
{day => 20, today => ""},
{day => 21, today => ""},
],
[
{day => 22, today => ""},
{day => 23, today => ""},
{day => 24, today => ""},
{day => 25, today => ""},
{day => 26, today => ""},
{day => 27, today => ""},
{day => 28, today => ""},
],
[
{day => 29, today => ""},
{day => 30, today => ""},
],
]
},
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
"calendar 20 days ago" => test_zci(
re(qr/May 2014.*\|22\|/s),
structured_answer => {
data => {
month_year => "May 2014",
next_month => "June 2014",
previous_month => "April 2014",
weeks => [
[
{day => " ", today => ""},
{day => " ", today => ""},
{day => " ", today => ""},
{day => " ", today => ""},
{day => 1, today => ""},
{day => 2, today => ""},
{day => 3, today => ""},
],
[
{day => 4, today => ""},
{day => 5, today => ""},
{day => 6, today => ""},
{day => 7, today => ""},
{day => 8, today => ""},
{day => 9, today => ""},
{day => 10, today => ""},
],
[
{day => 11, today => ""},
{day => 12, today => ""},
{day => 13, today => ""},
{day => 14, today => ""},
{day => 15, today => ""},
{day => 16, today => ""},
{day => 17, today => ""},
],
[
{day => 18, today => ""},
{day => 19, today => ""},
{day => 20, today => ""},
{day => 21, today => ""},
{day => 22, today => "1"},
{day => 23, today => ""},
{day => 24, today => ""},
],
[
{day => 25, today => ""},
{day => 26, today => ""},
{day => 27, today => ""},
{day => 28, today => ""},
{day => 29, today => ""},
{day => 30, today => ""},
{day => 31, today => ""},
],
]
},
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
"calendar in 20 days" => test_zci(
re(qr/July 2014.*\| 1\|/s),
structured_answer => {
data => {
month_year => "July 2014",
next_month => "August 2014",
previous_month => "June 2014",
weeks => [
[
{day => " ", today => ""},
{day => " ", today => ""},
{day => 1, today => "1"},
{day => 2, today => ""},
{day => 3, today => ""},
{day => 4, today => ""},
{day => 5, today => ""},
],
[
{day => 6, today => ""},
{day => 7, today => ""},
{day => 8, today => ""},
{day => 9, today => ""},
{day => 10, today => ""},
{day => 11, today => ""},
{day => 12, today => ""},
],
[
{day => 13, today => ""},
{day => 14, today => ""},
{day => 15, today => ""},
{day => 16, today => ""},
{day => 17, today => ""},
{day => 18, today => ""},
{day => 19, today => ""},
],
[
{day => 20, today => ""},
{day => 21, today => ""},
{day => 22, today => ""},
{day => 23, today => ""},
{day => 24, today => ""},
{day => 25, today => ""},
{day => 26, today => ""},
],
[
{day => 27, today => ""},
{day => 28, today => ""},
{day => 29, today => ""},
{day => 30, today => ""},
{day => 31, today => ""},
],
]
},
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
"calendar last week" => test_zci(
re(qr/June 2014.*\| 4\|/s),
structured_answer => {
data => {
month_year => "June 2014",
next_month => "July 2014",
previous_month => "May 2014",
weeks => [
[
{day => 1, today => ""},
{day => 2, today => ""},
{day => 3, today => ""},
{day => 4, today => "1"},
{day => 5, today => ""},
{day => 6, today => ""},
{day => 7, today => ""},
],
[
{day => 8, today => ""},
{day => 9, today => ""},
{day => 10, today => ""},
{day => 11, today => ""},
{day => 12, today => ""},
{day => 13, today => ""},
{day => 14, today => ""},
],
[
{day => 15, today => ""},
{day => 16, today => ""},
{day => 17, today => ""},
{day => 18, today => ""},
{day => 19, today => ""},
{day => 20, today => ""},
{day => 21, today => ""},
],
[
{day => 22, today => ""},
{day => 23, today => ""},
{day => 24, today => ""},
{day => 25, today => ""},
{day => 26, today => ""},
{day => 27, today => ""},
{day => 28, today => ""},
],
[
{day => 29, today => ""},
{day => 30, today => ""},
],
]
},
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
"calendar next week" =>
test_zci(re(qr/June 2014.*\|18\|/s),
structured_answer => {
data => {
month_year => "June 2014",
next_month => "July 2014",
previous_month => "May 2014",
weeks => [
[
{day => 1, today => ""},
{day => 2, today => ""},
{day => 3, today => ""},
{day => 4, today => ""},
{day => 5, today => ""},
{day => 6, today => ""},
{day => 7, today => ""},
],
[
{day => 8, today => ""},
{day => 9, today => ""},
{day => 10, today => ""},
{day => 11, today => ""},
{day => 12, today => ""},
{day => 13, today => ""},
{day => 14, today => ""},
],
[
{day => 15, today => ""},
{day => 16, today => ""},
{day => 17, today => ""},
{day => 18, today => "1"},
{day => 19, today => ""},
{day => 20, today => ""},
{day => 21, today => ""},
],
[
{day => 22, today => ""},
{day => 23, today => ""},
{day => 24, today => ""},
{day => 25, today => ""},
{day => 26, today => ""},
{day => 27, today => ""},
{day => 28, today => ""},
],
[
{day => 29, today => ""},
{day => 30, today => ""},
],
]
},
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
"calendar last year" =>
test_zci(re(qr/June 2013.*\|11\|/s),
structured_answer => {
data => {
month_year => "June 2013",
next_month => "July 2013",
previous_month => "May 2013",
weeks => [
[
{day => " ", today => ""},
{day => " ", today => ""},
{day => " ", today => ""},
{day => " ", today => ""},
{day => " ", today => ""},
{day => " ", today => ""},
{day => 1, today => ""},
],
[
{day => 2, today => ""},
{day => 3, today => ""},
{day => 4, today => ""},
{day => 5, today => ""},
{day => 6, today => ""},
{day => 7, today => ""},
{day => 8, today => ""},
],
[
{day => 9, today => ""},
{day => 10, today => ""},
{day => 11, today => "1"},
{day => 12, today => ""},
{day => 13, today => ""},
{day => 14, today => ""},
{day => 15, today => ""},
],
[
{day => 16, today => ""},
{day => 17, today => ""},
{day => 18, today => ""},
{day => 19, today => ""},
{day => 20, today => ""},
{day => 21, today => ""},
{day => 22, today => ""},
],
[
{day => 23, today => ""},
{day => 24, today => ""},
{day => 25, today => ""},
{day => 26, today => ""},
{day => 27, today => ""},
{day => 28, today => ""},
{day => 29, today => ""},
],
[
{day => 30, today => ""},
],
]
},
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
"calendar next year" =>
test_zci(re(qr/June 2015.*\|11\|/s),
structured_answer => {
data => {
month_year => "June 2015",
next_month => "July 2015",
previous_month => "May 2015",
weeks => [
[
{day => " ", today => ""},
{day => 1, today => ""},
{day => 2, today => ""},
{day => 3, today => ""},
{day => 4, today => ""},
{day => 5, today => ""},
{day => 6, today => ""},
],
[
{day => 7, today => ""},
{day => 8, today => ""},
{day => 9, today => ""},
{day => 10, today => ""},
{day => 11, today => "1"},
{day => 12, today => ""},
{day => 13, today => ""},
],
[
{day => 14, today => ""},
{day => 15, today => ""},
{day => 16, today => ""},
{day => 17, today => ""},
{day => 18, today => ""},
{day => 19, today => ""},
{day => 20, today => ""},
],
[
{day => 21, today => ""},
{day => 22, today => ""},
{day => 23, today => ""},
{day => 24, today => ""},
{day => 25, today => ""},
{day => 26, today => ""},
{day => 27, today => ""},
],
[
{day => 28, today => ""},
{day => 29, today => ""},
{day => 30, today => ""},
],
]
},
templates => {
group => 'text',
item => 0,
options => {
content => 'DDH.calendar_today.content'
}
}
}
),
);
restore_time();
done_testing;