From d7f897af3bca87a9df4dca3f0676c1065cc0228b Mon Sep 17 00:00:00 2001 From: Philip Kirkbride Date: Thu, 13 Jul 2017 07:50:27 -0400 Subject: [PATCH] converting random_name to return structured answer (#4061) * converting random_name to return structured answer * altSubtitle typo fix * altSubtitle typo fix --- lib/DDG/Goodie/RandomName.pm | 21 ++++++++++++----- t/RandomName.t | 45 ++++++++++++++++++++++++++++++++---- 2 files changed, 55 insertions(+), 11 deletions(-) diff --git a/lib/DDG/Goodie/RandomName.pm b/lib/DDG/Goodie/RandomName.pm index d8b4d06ae..0f59c9e0b 100644 --- a/lib/DDG/Goodie/RandomName.pm +++ b/lib/DDG/Goodie/RandomName.pm @@ -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; diff --git a/t/RandomName.t b/t/RandomName.t index 5c4e71c1f..a52820322 100644 --- a/t/RandomName.t +++ b/t/RandomName.t @@ -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