Input validation tests for importTaxData.

This commit is contained in:
Colin Kuskie 2008-02-18 21:23:43 +00:00
parent 95a327ea62
commit c613e38995
7 changed files with 115 additions and 8 deletions

View file

@ -29,7 +29,7 @@ my $session = WebGUI::Test->session;
#----------------------------------------------------------------------------
# Tests
my $tests = 34;
my $tests = 45;
plan tests => 1 + $tests;
#----------------------------------------------------------------------------
@ -244,13 +244,95 @@ SKIP: {
}
$taxer->importTaxData($taxFile);
my $expectedTaxData = [
{
field => 'state',
value => 'Wisconsin',
taxRate => 5.0,
},
{
field => 'code',
value => 53701,
taxRate => 0.5,
},
];
ok(
$taxer->importTaxData(
$taxFile
),
'Good tax data inserted',
);
$taxIterator = $taxer->getItems;
is($taxIterator->rows, 4, 'import: Old data deleted, new data imported');
is($taxIterator->rows, 2, 'import: Old data deleted, new data imported');
my @goodTaxData = _grabTaxData($taxIterator);
cmp_bag(
\@goodTaxData,
$expectedTaxData,
'Correct data inserted.',
);
ok(
$taxer->importTaxData(
WebGUI::Test->getTestCollateralPath('taxTables/orderedTaxTable.csv')
),
'Reordered tax data inserted',
);
$taxIterator = $taxer->getItems;
is($taxIterator->rows, 2, 'import: Old data deleted, new data imported again');
my @orderedTaxData = _grabTaxData($taxIterator);
cmp_bag(
\@orderedTaxData,
$expectedTaxData,
'Correct data inserted, with CSV in different columnar order.',
);
ok(
$taxer->importTaxData(
WebGUI::Test->getTestCollateralPath('taxTables/commentedTaxTable.csv')
),
'Commented tax data inserted',
);
$taxIterator = $taxer->getItems;
is($taxIterator->rows, 2, 'import: Old data deleted, new data imported the third time');
my @orderedTaxData = _grabTaxData($taxIterator);
cmp_bag(
\@orderedTaxData,
$expectedTaxData,
'Correct data inserted, with comments in the CSV file',
);
ok(
! $taxer->importTaxData(
WebGUI::Test->getTestCollateralPath('taxTables/emptyTaxTable.csv')
),
'Empty tax data not inserted',
);
my $failure;
eval {
$failure = $taxer->importTaxData(
WebGUI::Test->getTestCollateralPath('taxTables/badTaxTable.csv')
);
};
ok (!$failure, 'Tax data not imported');
like($@, qr{Error on line \d+ in file},
'importTaxData: error handling when the CSV data is missing an entry on 1 line');
}
sub _grabTaxData {
my $tax = shift;
my @taxData = ();
while (my $taxRow = $tax->hashRef) {
delete $taxRow->{'taxId'};
push @taxData, $taxRow;
}
return @taxData;
}
#----------------------------------------------------------------------------
# Cleanup

View file

@ -0,0 +1,3 @@
field,value,taxRate
state,5.0
code,53701,0.5
1 field,value,taxRate
2 state,5.0
3 code,53701,0.5

View file

@ -0,0 +1,8 @@
taxRate,value,field
#header lines above
#This is just a zip code.
0.5,53701,code
5.0,Wisconsin,state #Wisconsin is expensive!
1 taxRate,value,field
2 #header lines above
3 #This is just a zip code.
4 0.5,53701,code
5 5.0,Wisconsin,state #Wisconsin is expensive!

View file

@ -0,0 +1,3 @@
field,value,taxRate
#state,Wisconsin,5.0
#code,53701,0.5
1 field value taxRate
2 #state Wisconsin 5.0
3 #code 53701 0.5

View file

@ -1,5 +1,3 @@
field,value,taxRate
country,USA,0.1
state,Wisconsin,5.0
city,Madcity-Baby,0.5
code,53701,0.5

1 field value taxRate
country USA 0.1
2 state Wisconsin 5.0
city Madcity-Baby 0.5
3 code 53701 0.5

View file

@ -0,0 +1,3 @@
taxRate,value,field
5.0,Wisconsin,state
0.5,53701,code
1 taxRate value field
2 5.0 Wisconsin state
3 0.5 53701 code