make Loan return a structured answer (#4358)

master
Philip Kirkbride 2017-08-23 19:27:28 -04:00 committed by Rob Emery
parent 3105bc1be5
commit 6774080ae7
2 changed files with 760 additions and 740 deletions

File diff suppressed because it is too large Load Diff

443
t/Loan.t
View File

@ -12,230 +12,247 @@ use utf8;
zci answer_type => 'loan';
zci is_cached => 1;
sub build_answer {
my($title, $subtitle) = @_;
return "Montly payment is " . $title . ". " . $subtitle,
structured_answer => {
data => {
title => $title,
subtitle => $subtitle
},
templates => {
group => 'text',
}
};
}
sub build_test { test_zci(build_answer(@_)) }
ddg_goodie_test (
[
'DDG::Goodie::Loan'
],
'loan 400000 4.5%' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'loan $400000 at 4.5%' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'loan $500000 at 4.5% with 20% down' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'loan $500000 at 4.5% with $100000 down' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'loan $250000 3% interest 15 years' =>
test_zci('Monthly Payment is $1,726.45 for 15 years. Total interest paid is $60,761.74'),
'loan $300000 at 3% interest with $50000 downpayment for 15 years' =>
test_zci('Monthly Payment is $1,726.45 for 15 years. Total interest paid is $60,761.74'),
'loan $300000 3% $50000 down 15 year' =>
test_zci('Monthly Payment is $1,726.45 for 15 years. Total interest paid is $60,761.74'),
'loan €400000 at 4.5%' =>
test_zci('Monthly Payment is €2.026,74 for 30 years. Total interest paid is €329.626,85'),
'loan £250000 3% interest 15 years' =>
test_zci('Monthly Payment is £1,726.45 for 15 years. Total interest paid is £60,761.74'),
'loan $400,000.00 at 4.5%' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'loan €250.000,00 3% interest 15 years' =>
test_zci('Monthly Payment is €1.726,45 for 15 years. Total interest paid is €60.761,74'),
'loan 250.000,00 EUR 3% interest 15 years' =>
test_zci('Monthly Payment is €1.726,45 for 15 years. Total interest paid is €60.761,74'),
'loan 500000 EUR at 4.5% 100000 EUR down' =>
test_zci('Monthly Payment is €2.026,74 for 30 years. Total interest paid is €329.626,85'),
'loan for 23000 with 5000 down and 12% interest' =>
test_zci('Monthly Payment is $185.15 for 30 years. Total interest paid is $48,654.10'),
'loan 50000 usd at 1% 1 usd down' =>
test_zci('Monthly Payment is $160.82 for 30 years. Total interest paid is $7,894.96'),
'loan 5 usd at 1% 1 usd down' =>
test_zci('Monthly Payment is $0.01 for 30 years. Total interest paid is $0.63'),
'5 year loan with 3% interest on $23,000 1000 down' =>
test_zci('Monthly Payment is $395.31 for 5 years. Total interest paid is $1,718.67'),
'loan with $1000 down at 3% for $23,000 for 5 years' =>
test_zci('Monthly Payment is $395.31 for 5 years. Total interest paid is $1,718.67'),
'borrow 400000 4.5%' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'borrow $400000 at 4.5%' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'borrow $500000 at 4.5% with 20% down' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'borrow $500000 at 4.5% with $100000 down' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'borrow $250000 3% interest 15 years' =>
test_zci('Monthly Payment is $1,726.45 for 15 years. Total interest paid is $60,761.74'),
'borrow $300000 at 3% interest with $50000 downpayment for 15 years' =>
test_zci('Monthly Payment is $1,726.45 for 15 years. Total interest paid is $60,761.74'),
'borrow $300000 3% $50000 down 15 year' =>
test_zci('Monthly Payment is $1,726.45 for 15 years. Total interest paid is $60,761.74'),
'borrow €400000 at 4.5%' =>
test_zci('Monthly Payment is €2.026,74 for 30 years. Total interest paid is €329.626,85'),
'borrow £250000 3% interest 15 years' =>
test_zci('Monthly Payment is £1,726.45 for 15 years. Total interest paid is £60,761.74'),
'borrow $400,000.00 at 4.5%' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'borrow €250.000,00 3% interest 15 years' =>
test_zci('Monthly Payment is €1.726,45 for 15 years. Total interest paid is €60.761,74'),
'borrow 250.000,00 EUR 3% interest 15 years' =>
test_zci('Monthly Payment is €1.726,45 for 15 years. Total interest paid is €60.761,74'),
'borrow 500000 EUR at 4.5% 100000 EUR down' =>
test_zci('Monthly Payment is €2.026,74 for 30 years. Total interest paid is €329.626,85'),
'borrow for 23000 with 5000 down and 12% interest' =>
test_zci('Monthly Payment is $185.15 for 30 years. Total interest paid is $48,654.10'),
'borrow 50000 usd at 1% 1 usd down' =>
test_zci('Monthly Payment is $160.82 for 30 years. Total interest paid is $7,894.96'),
'borrow 5 usd at 1% 1 usd down' =>
test_zci('Monthly Payment is $0.01 for 30 years. Total interest paid is $0.63'),
'5 year borrow with 3% interest on $23,000 1000 down' =>
test_zci('Monthly Payment is $395.31 for 5 years. Total interest paid is $1,718.67'),
'borrow with $1000 down at 3% for $23,000 for 5 years' =>
test_zci('Monthly Payment is $395.31 for 5 years. Total interest paid is $1,718.67'),
'mortgage 400000 4.5%' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'mortgage $400000 at 4.5%' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'mortgage $500000 at 4.5% with 20% down' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'mortgage $500000 at 4.5% with $100000 down' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'mortgage $250000 3% interest 15 years' =>
test_zci('Monthly Payment is $1,726.45 for 15 years. Total interest paid is $60,761.74'),
'mortgage $300000 at 3% interest with $50000 downpayment for 15 years' =>
test_zci('Monthly Payment is $1,726.45 for 15 years. Total interest paid is $60,761.74'),
'mortgage $300000 3% $50000 down 15 year' =>
test_zci('Monthly Payment is $1,726.45 for 15 years. Total interest paid is $60,761.74'),
'mortgage €400000 at 4.5%' =>
test_zci('Monthly Payment is €2.026,74 for 30 years. Total interest paid is €329.626,85'),
'mortgage £250000 3% interest 15 years' =>
test_zci('Monthly Payment is £1,726.45 for 15 years. Total interest paid is £60,761.74'),
'mortgage $400,000.00 at 4.5%' =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
'mortgage €250.000,00 3% interest 15 years' =>
test_zci('Monthly Payment is €1.726,45 for 15 years. Total interest paid is €60.761,74'),
'mortgage 250.000,00 EUR 3% interest 15 years' =>
test_zci('Monthly Payment is €1.726,45 for 15 years. Total interest paid is €60.761,74'),
'mortgage 500000 EUR at 4.5% 100000 EUR down' =>
test_zci('Monthly Payment is €2.026,74 for 30 years. Total interest paid is €329.626,85'),
'mortgage for 23000 with 5000 down and 12% interest' =>
test_zci('Monthly Payment is $185.15 for 30 years. Total interest paid is $48,654.10'),
'mortgage 50000 usd at 1% 1 usd down' =>
test_zci('Monthly Payment is $160.82 for 30 years. Total interest paid is $7,894.96'),
'mortgage 5 usd at 1% 1 usd down' =>
test_zci('Monthly Payment is $0.01 for 30 years. Total interest paid is $0.63'),
'5 year mortgage with 3% interest on $23,000 1000 down' =>
test_zci('Monthly Payment is $395.31 for 5 years. Total interest paid is $1,718.67'),
'loan with $1000 down at 3% for $23,000 for 5 years' =>
test_zci('Monthly Payment is $395.31 for 5 years. Total interest paid is $1,718.67'),
[
'DDG::Goodie::Loan'
],
'loan 400000 4.5%' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'loan $400000 4.5%' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'loan $500000 4.5% with 20% down' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'loan $500000 4.5% with $100000 down' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'loan $250000 3% interest 15 years' =>
build_test('$1,726.45 for 15 years', 'Total interest paid is $60,761.74'),
'loan $300000 at 3% interest with $50000 downpayment for 15 years' =>
build_test('$1,726.45 for 15 years', 'Total interest paid is $60,761.74'),
'loan $300000 3% $50000 down 15 year' =>
build_test('$1,726.45 for 15 years', 'Total interest paid is $60,761.74'),
'loan €400000 at 4.5%' =>
build_test('€2.026,74 for 30 years', 'Total interest paid is €329.626,85'),
'loan £250000 3% interest 15 years' =>
build_test('£1,726.45 for 15 years', 'Total interest paid is £60,761.74'),
'loan $400,000.00 at 4.5%' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'loan €250.000,00 3% interest 15 years' =>
build_test('€1.726,45 for 15 years', 'Total interest paid is €60.761,74'),
'loan 250.000,00 EUR 3% interest 15 years' =>
build_test('€1.726,45 for 15 years', 'Total interest paid is €60.761,74'),
'loan 500000 EUR at 4.5% 100000 EUR down' =>
build_test('€2.026,74 for 30 years', 'Total interest paid is €329.626,85'),
'loan for 23000 with 5000 down and 12% interest' =>
build_test('$185.15 for 30 years', 'Total interest paid is $48,654.10'),
'loan 50000 usd at 1% 1 usd down' =>
build_test('$160.82 for 30 years', 'Total interest paid is $7,894.96'),
'loan 5 usd at 1% 1 usd down' =>
build_test('$0.01 for 30 years', 'Total interest paid is $0.63'),
'5 year loan with 3% interest on $23,000 1000 down' =>
build_test('$395.31 for 5 years', 'Total interest paid is $1,718.67'),
'loan with $1000 down at 3% for $23,000 for 5 years' =>
build_test('$395.31 for 5 years', 'Total interest paid is $1,718.67'),
'borrow 400000 4.5%' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'borrow $400000 at 4.5%' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'borrow $500000 at 4.5% with 20% down' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'borrow $500000 at 4.5% with $100000 down' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'borrow $250000 3% interest 15 years' =>
build_test('$1,726.45 for 15 years', 'Total interest paid is $60,761.74'),
'borrow $300000 at 3% interest with $50000 downpayment for 15 years' =>
build_test('$1,726.45 for 15 years', 'Total interest paid is $60,761.74'),
'borrow $300000 3% $50000 down 15 year' =>
build_test('$1,726.45 for 15 years', 'Total interest paid is $60,761.74'),
'borrow €400000 at 4.5%' =>
build_test('€2.026,74 for 30 years', 'Total interest paid is €329.626,85'),
'borrow £250000 3% interest 15 years' =>
build_test('£1,726.45 for 15 years', 'Total interest paid is £60,761.74'),
'borrow $400,000.00 at 4.5%' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'borrow €250.000,00 3% interest 15 years' =>
build_test('€1.726,45 for 15 years', 'Total interest paid is €60.761,74'),
'borrow 250.000,00 EUR 3% interest 15 years' =>
build_test('€1.726,45 for 15 years', 'Total interest paid is €60.761,74'),
'borrow 500000 EUR at 4.5% 100000 EUR down' =>
build_test('€2.026,74 for 30 years', 'Total interest paid is €329.626,85'),
'borrow for 23000 with 5000 down and 12% interest' =>
build_test('$185.15 for 30 years', 'Total interest paid is $48,654.10'),
'borrow 50000 usd at 1% 1 usd down' =>
build_test('$160.82 for 30 years', 'Total interest paid is $7,894.96'),
'borrow 5 usd at 1% 1 usd down' =>
build_test('$0.01 for 30 years', 'Total interest paid is $0.63'),
'5 year borrow with 3% interest on $23,000 1000 down' =>
build_test('$395.31 for 5 years', 'Total interest paid is $1,718.67'),
'borrow with $1000 down at 3% for $23,000 for 5 years' =>
build_test('$395.31 for 5 years', 'Total interest paid is $1,718.67'),
'mortgage 400000 4.5%' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'mortgage $400000 at 4.5%' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'mortgage $500000 at 4.5% with 20% down' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'mortgage $500000 at 4.5% with $100000 down' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'mortgage $250000 3% interest 15 years' =>
build_test('$1,726.45 for 15 years', 'Total interest paid is $60,761.74'),
'mortgage $300000 at 3% interest with $50000 downpayment for 15 years' =>
build_test('$1,726.45 for 15 years', 'Total interest paid is $60,761.74'),
'mortgage $300000 3% $50000 down 15 year' =>
build_test('$1,726.45 for 15 years', 'Total interest paid is $60,761.74'),
'mortgage €400000 at 4.5%' =>
build_test('€2.026,74 for 30 years', 'Total interest paid is €329.626,85'),
'mortgage £250000 3% interest 15 years' =>
build_test('£1,726.45 for 15 years', 'Total interest paid is £60,761.74'),
'mortgage $400,000.00 at 4.5%' =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'mortgage €250.000,00 3% interest 15 years' =>
build_test('€1.726,45 for 15 years', 'Total interest paid is €60.761,74'),
'mortgage 250.000,00 EUR 3% interest 15 years' =>
build_test('€1.726,45 for 15 years', 'Total interest paid is €60.761,74'),
'mortgage 500000 EUR at 4.5% 100000 EUR down' =>
build_test('€2.026,74 for 30 years', 'Total interest paid is €329.626,85'),
'mortgage for 23000 with 5000 down and 12% interest' =>
build_test('$185.15 for 30 years', 'Total interest paid is $48,654.10'),
'mortgage 50000 usd at 1% 1 usd down' =>
build_test('$160.82 for 30 years', 'Total interest paid is $7,894.96'),
'mortgage 5 usd at 1% 1 usd down' =>
build_test('$0.01 for 30 years', 'Total interest paid is $0.63'),
'5 year mortgage with 3% interest on $23,000 1000 down' =>
build_test('$395.31 for 5 years', 'Total interest paid is $1,718.67'),
'loan with $1000 down at 3% for $23,000 for 5 years' =>
build_test('$395.31 for 5 years', 'Total interest paid is $1,718.67'),
# Test a few cases of inferring user's location with 'loan' trigger word
DDG::Request->new(query_raw => "loan 400000 4.5%", location => test_location("de")) =>
test_zci('Monthly Payment is €2.026,74 for 30 years. Total interest paid is €329.626,85'),
DDG::Request->new(query_raw => "loan 400000 4.5%", location => test_location("in")) =>
test_zci('Monthly Payment is ₨2,026.74 for 30 years. Total interest paid is ₨329,626.85'),
# Test a few cases of inferring user's location with 'loan' trigger word
DDG::Request->new(query_raw => "loan 400000 4.5%", location => test_location("de")) =>
build_test('€2.026,74 for 30 years', 'Total interest paid is €329.626,85'),
DDG::Request->new(query_raw => "loan 400000 4.5%", location => test_location("in")) =>
build_test('₨2,026.74 for 30 years', 'Total interest paid is ₨329,626.85'),
# Given a common currency symbol and location, make sure we get the correct currency
DDG::Request->new(query_raw => "loan \$400000 4.5%", location => test_location("au")) =>
test_zci('Monthly Payment is $2 026.74 for 30 years. Total interest paid is $329 626.85'),
# Malaysia has no symbol, just the currency code after the amounts
DDG::Request->new(query_raw => "loan 400000 MYR at 4.5%", location => test_location("my")) =>
test_zci('Monthly Payment is 2,026.74 MYR for 30 years. Total interest paid is 329,626.85 MYR'),
DDG::Request->new(query_raw => "loan 400000 4.5%", location => test_location("my")) =>
test_zci('Monthly Payment is 2,026.74 MYR for 30 years. Total interest paid is 329,626.85 MYR'),
# Test that symbol overrides user's location
DDG::Request->new(query_raw => "loan \$400,000 4.5%", location => test_location("de")) =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
# Imagine a new country later appears, test defaulting to USD because we don't know about it
DDG::Request->new(query_raw => "loan 400000 4.5%", location => DDG::Location->new(
{
country_code => 'LL',
country_code3 => 'LLA',
country_name => 'Llama Land',
region => '9',
region_name => 'Llama Region',
city => 'New Llama City',
latitude => '90.0000',
longitude => '0.0000',
time_zone => 'America/New_York',
area_code => 0,
continent_code => 'NA',
metro_code => 0
}
)) =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
DDG::Request->new(query_raw => "loan \$400000 4.5%", location => test_location("au")) =>
build_test('$2 026.74 for 30 years', 'Total interest paid is $329 626.85'),
# Malaysia has no symbol, just the currency code after the amounts
DDG::Request->new(query_raw => "loan 400000 MYR at 4.5%", location => test_location("my")) =>
build_test('2,026.74 MYR for 30 years', 'Total interest paid is 329,626.85 MYR'),
DDG::Request->new(query_raw => "loan 400000 4.5%", location => test_location("my")) =>
build_test('2,026.74 MYR for 30 years', 'Total interest paid is 329,626.85 MYR'),
# Test that symbol overrides user's location
DDG::Request->new(query_raw => "loan \$400,000 4.5%", location => test_location("de")) =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
# Imagine a new country later appears, test defaulting to USD because we don't know about it
DDG::Request->new(query_raw => "loan 400000 4.5%", location => DDG::Location->new(
{
country_code => 'LL',
country_code3 => 'LLA',
country_name => 'Llama Land',
region => '9',
region_name => 'Llama Region',
city => 'New Llama City',
latitude => '90.0000',
longitude => '0.0000',
time_zone => 'America/New_York',
area_code => 0,
continent_code => 'NA',
metro_code => 0
}
)) =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
# Test a few cases of inferring user's location with 'borrow' trigger word
DDG::Request->new(query_raw => "borrow 400000 4.5%", location => test_location("de")) =>
test_zci('Monthly Payment is €2.026,74 for 30 years. Total interest paid is €329.626,85'),
DDG::Request->new(query_raw => "borrow 400000 4.5%", location => test_location("in")) =>
test_zci('Monthly Payment is ₨2,026.74 for 30 years. Total interest paid is ₨329,626.85'),
# Test a few cases of inferring user's location with 'borrow' trigger word
DDG::Request->new(query_raw => "borrow 400000 4.5%", location => test_location("de")) =>
build_test('€2.026,74 for 30 years', 'Total interest paid is €329.626,85'),
DDG::Request->new(query_raw => "borrow 400000 4.5%", location => test_location("in")) =>
build_test('₨2,026.74 for 30 years', 'Total interest paid is ₨329,626.85'),
# Given a common currency symbol and location, make sure we get the correct currency
DDG::Request->new(query_raw => "borrow \$400000 4.5%", location => test_location("au")) =>
test_zci('Monthly Payment is $2 026.74 for 30 years. Total interest paid is $329 626.85'),
# Malaysia has no symbol, just the currency code after the amounts
DDG::Request->new(query_raw => "borrow 400000 MYR at 4.5%", location => test_location("my")) =>
test_zci('Monthly Payment is 2,026.74 MYR for 30 years. Total interest paid is 329,626.85 MYR'),
DDG::Request->new(query_raw => "borrow 400000 4.5%", location => test_location("my")) =>
test_zci('Monthly Payment is 2,026.74 MYR for 30 years. Total interest paid is 329,626.85 MYR'),
# Test that symbol overrides user's location
DDG::Request->new(query_raw => "borrow \$400,000 4.5%", location => test_location("de")) =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
# Imagine a new country later appears, test defaulting to USD because we don't know about it
DDG::Request->new(query_raw => "borrow 400000 4.5%", location => DDG::Location->new(
{
country_code => 'LL',
country_code3 => 'LLA',
country_name => 'Llama Land',
region => '9',
region_name => 'Llama Region',
city => 'New Llama City',
latitude => '90.0000',
longitude => '0.0000',
time_zone => 'America/New_York',
area_code => 0,
continent_code => 'NA',
metro_code => 0
}
)) =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
DDG::Request->new(query_raw => "borrow \$400000 4.5%", location => test_location("au")) =>
build_test('$2 026.74 for 30 years', 'Total interest paid is $329 626.85'),
# Malaysia has no symbol, just the currency code after the amounts
DDG::Request->new(query_raw => "borrow 400000 MYR at 4.5%", location => test_location("my")) =>
build_test('2,026.74 MYR for 30 years', 'Total interest paid is 329,626.85 MYR'),
DDG::Request->new(query_raw => "borrow 400000 4.5%", location => test_location("my")) =>
build_test('2,026.74 MYR for 30 years', 'Total interest paid is 329,626.85 MYR'),
# Test that symbol overrides user's location
DDG::Request->new(query_raw => "borrow \$400,000 4.5%", location => test_location("de")) =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
# Imagine a new country later appears, test defaulting to USD because we don't know about it
DDG::Request->new(query_raw => "borrow 400000 4.5%", location => DDG::Location->new(
{
country_code => 'LL',
country_code3 => 'LLA',
country_name => 'Llama Land',
region => '9',
region_name => 'Llama Region',
city => 'New Llama City',
latitude => '90.0000',
longitude => '0.0000',
time_zone => 'America/New_York',
area_code => 0,
continent_code => 'NA',
metro_code => 0
}
)) =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
# Test a few cases of inferring user's location with 'mortgage' trigger word
DDG::Request->new(query_raw => "mortgage 400000 4.5%", location => test_location("de")) =>
test_zci('Monthly Payment is €2.026,74 for 30 years. Total interest paid is €329.626,85'),
DDG::Request->new(query_raw => "mortgage 400000 4.5%", location => test_location("in")) =>
test_zci('Monthly Payment is ₨2,026.74 for 30 years. Total interest paid is ₨329,626.85'),
# Test a few cases of inferring user's location with 'mortgage' trigger word
DDG::Request->new(query_raw => "mortgage 400000 4.5%", location => test_location("de")) =>
build_test('€2.026,74 for 30 years', 'Total interest paid is €329.626,85'),
DDG::Request->new(query_raw => "mortgage 400000 4.5%", location => test_location("in")) =>
build_test('₨2,026.74 for 30 years', 'Total interest paid is ₨329,626.85'),
# Given a common currency symbol and location, make sure we get the correct currency
DDG::Request->new(query_raw => "mortgage \$400000 4.5%", location => test_location("au")) =>
test_zci('Monthly Payment is $2 026.74 for 30 years. Total interest paid is $329 626.85'),
# Malaysia has no symbol, just the currency code after the amounts
DDG::Request->new(query_raw => "mortgage 400000 MYR at 4.5%", location => test_location("my")) =>
test_zci('Monthly Payment is 2,026.74 MYR for 30 years. Total interest paid is 329,626.85 MYR'),
DDG::Request->new(query_raw => "mortgage 400000 4.5%", location => test_location("my")) =>
test_zci('Monthly Payment is 2,026.74 MYR for 30 years. Total interest paid is 329,626.85 MYR'),
# Test that symbol overrides user's location
DDG::Request->new(query_raw => "mortgage \$400,000 4.5%", location => test_location("de")) =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
# Imagine a new country later appears, test defaulting to USD because we don't know about it
DDG::Request->new(query_raw => "mortgage 400000 4.5%", location => DDG::Location->new(
{
country_code => 'LL',
country_code3 => 'LLA',
country_name => 'Llama Land',
region => '9',
region_name => 'Llama Region',
city => 'New Llama City',
latitude => '90.0000',
longitude => '0.0000',
time_zone => 'America/New_York',
area_code => 0,
continent_code => 'NA',
metro_code => 0
}
)) =>
test_zci('Monthly Payment is $2,026.74 for 30 years. Total interest paid is $329,626.85'),
DDG::Request->new(query_raw => "mortgage \$400000 4.5%", location => test_location("au")) =>
build_test('$2 026.74 for 30 years', 'Total interest paid is $329 626.85'),
# Malaysia has no symbol, just the currency code after the amounts
DDG::Request->new(query_raw => "mortgage 400000 MYR at 4.5%", location => test_location("my")) =>
build_test('2,026.74 MYR for 30 years', 'Total interest paid is 329,626.85 MYR'),
DDG::Request->new(query_raw => "mortgage 400000 4.5%", location => test_location("my")) =>
build_test('2,026.74 MYR for 30 years', 'Total interest paid is 329,626.85 MYR'),
# Test that symbol overrides user's location
DDG::Request->new(query_raw => "mortgage \$400,000 4.5%", location => test_location("de")) =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
# Imagine a new country later appears, test defaulting to USD because we don't know about it
DDG::Request->new(query_raw => "mortgage 400000 4.5%", location => DDG::Location->new(
{
country_code => 'LL',
country_code3 => 'LLA',
country_name => 'Llama Land',
region => '9',
region_name => 'Llama Region',
city => 'New Llama City',
latitude => '90.0000',
longitude => '0.0000',
time_zone => 'America/New_York',
area_code => 0,
continent_code => 'NA',
metro_code => 0
}
)) =>
build_test('$2,026.74 for 30 years', 'Total interest paid is $329,626.85'),
'loan $500000 at 4.5% with 20% down 15 years' =>
test_zci('Monthly Payment is $3,059.97 for 15 years. Total interest paid is $150,795.17'),
build_test('$3,059.97 for 15 years', 'Total interest paid is $150,795.17'),
'borrow $500000 4.5%' =>
test_zci('Monthly Payment is $2,533.43 for 30 years. Total interest paid is $412,033.56'),
build_test('$2,533.43 for 30 years', 'Total interest paid is $412,033.56'),
'mortgage $500000 4.5% 20% down 15 years' =>
test_zci('Monthly Payment is $3,059.97 for 15 years. Total interest paid is $150,795.17'),
build_test('$3,059.97 for 15 years', 'Total interest paid is $150,795.17'),
);
done_testing;