converting random_name to return structured answer (#4061)

* converting random_name to return structured answer

* altSubtitle typo fix

* altSubtitle typo fix
master
Philip Kirkbride 2017-07-13 07:50:27 -04:00 committed by Zaahir Moolla
parent ab9ce37808
commit d7f897af3b
2 changed files with 55 additions and 11 deletions

View File

@ -3,7 +3,6 @@ package DDG::Goodie::RandomName;
use strict;
use DDG::Goodie;
use Data::RandomPerson;
triggers start => 'random name','random person';
@ -11,13 +10,23 @@ zci answer_type => "randomname";
zci is_cached => 0;
handle query => sub {
my $query = $_;
my $person = Data::RandomPerson->new()->create();
my $name = "$person->{firstname} $person->{lastname}";
my %genders = (m => 'Male', f => 'Female');
return "Name: $name\nGender: $genders{$person->{gender}}\nDate of birth: $person->{dob}\nAge: $person->{age}",
heading => "Random Person" if /person/i;
return "$name (random)";
my $string_answer;
my $structured_answer = {};
$structured_answer->{templates}->{group} = 'icon';
$structured_answer->{data}->{title} = $name;
$structured_answer->{data}->{altSubtitle} = 'Randomly generated name';
if ($query =~ /person/i) {
my %genders = (m => 'Male', f => 'Female');
$string_answer = "Name: $name\nGender: $genders{$person->{gender}}\nDate of birth: $person->{dob}\nAge: $person->{age}";
$structured_answer->{data}->{subtitle} = 'Birthday: ' . $person->{dob} . ' | Age: ' . $person->{age};
$structured_answer->{data}->{altSubtitle} = 'Randomly generated person';
} else {
$string_answer = "Name: $name";
}
return $string_answer, structured_answer => $structured_answer;
};
1;

View File

@ -9,15 +9,50 @@ use DDG::Test::Goodie;
zci is_cached => 0;
zci answer_type => "randomname";
sub build_name_answer {
my @test_params = @_;
return re(qr/\w\w/),
structured_answer => {
data => {
title => re(qr/\w\w/),
altSubtitle => re(qr/Randomly generated name/)
},
templates => {
group => "icon",
}
};
}
sub build_person_answer {
my @test_params = @_;
return re(qr/Name: [\w\s]+\nGender: (?:Male|Female)\nDate of birth: \d{4}\-\d{2}\-\d{2}\nAge: \d+/),
structured_answer => {
data => {
title => re(qr/\w\w/),
subtitle => re(qr/Birthday: \d{4}\-\d{2}\-\d{2}\+ | Age: \d/),
altSubtitle => re(qr/Randomly generated person/)
},
templates => {
group => "icon",
}
};
}
sub build_name_test { test_zci(build_name_answer(@_)) }
sub build_person_test { test_zci(build_person_answer(@_)) }
ddg_goodie_test(
[
'DDG::Goodie::RandomName'
],
'random Name' => test_zci (re(qr/\w\w \(random\)/)),
'random name' => test_zci (re(qr/\w\w \(random\)/)),
'random person' =>
test_zci (re(qr/Name: [\w\s]+\nGender: (?:Male|Female)\nDate of birth: \d{4}\-\d{2}\-\d{2}\nAge: \d+/),
heading => 'Random Person'),
'random name' => build_name_test(),
'random Name' => build_name_test(),
'random person' => build_person_test(),
'random Person' => build_person_test(),
'random domain name' => undef,
'random city name' => undef,
'names of random people' => undef