zeroclickinfo-goodies/t/UrlEscapeCodes.t

91 lines
2.3 KiB
Perl

#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use Test::Deep;
use DDG::Test::Goodie;
use YAML::XS 'LoadFile';
zci answer_type => 'url_escape_codes';
zci is_cached => 1;
my $url_escape_codes = LoadFile('share/goodie/url_escape_codes/data.yml');
sub build_structured_answer {
my $result = {
title => 'URL Escape Codes',
table => $url_escape_codes
};
# Check if type of header data is an Array
isa_ok($result->{table}->{header}, 'ARRAY');
# Check if type of body data is an Array
isa_ok($result->{table}->{body}, 'ARRAY');
# Check if each Header Hash has required keys
for (my $i = 0; $i < $#{$result->{table}->{header}}; $i++) {
cmp_deeply(
$result->{table}->{header}->[$i],
{
key => ignore(),
abbr => ignore()
}
);
}
# Check if each Body Hash has required keys
for (my $i = 0; $i < $#{$result->{table}->{body}}; $i++) {
cmp_deeply(
$result->{table}->{body}->[$i],
{
Char => ignore(),
'Esc Code' => ignore()
}
);
}
# Check if title is correct or not
is($result->{title}, 'URL Escape Codes');
return '',
structured_answer => {
id => 'url_escape_codes',
name => 'URL Escape Codes',
data => {
title => 'URL Escape Codes',
table => $url_escape_codes
},
meta => {
sourceName => 'december.com',
sourceUrl => 'http://www.december.com/html/spec/esccodes.html'
},
templates => {
group => 'list',
item => 0,
options => {
content => 'DDH.url_escape_codes.content',
moreAt => 1
}
}
};
}
sub build_test { test_zci(build_structured_answer(@_)) }
ddg_goodie_test(
[qw( DDG::Goodie::UrlEscapeCodes )],
'url escape' => build_test(),
'url escaping' => build_test(),
'url escape codes' => build_test(),
'url escape characters' => build_test(),
'url escape sequences' => build_test(),
'url encoder' => undef,
'url decoder' => undef,
'convert url escape' => undef,
'dont run for this' => undef
);
done_testing;