_getOrCreateRequestConfiguration: Basic unit tests

This also required resetting the database in an earlier portion of the
tests than previous.
This commit is contained in:
Bradley M. Kuhn 2015-12-20 10:58:22 -08:00
parent 591fa396ca
commit 1c33f4cbba

View file

@ -5,7 +5,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More tests => 104; use Test::More tests => 110;
use Test::Exception; use Test::Exception;
use Scalar::Util qw(looks_like_number reftype); use Scalar::Util qw(looks_like_number reftype);
@ -381,43 +381,6 @@ dies_ok { $sp->_verifyId("String") } "_verifyId: dies for non-numeric id";
# This is a hacky way to test this; but should work # This is a hacky way to test this; but should work
ok(not ($sp->_verifyId($drapperId + 10)), "_verifyId: non-existent id is not found"); ok(not ($sp->_verifyId($drapperId + 10)), "_verifyId: non-existent id is not found");
=item _getOrCreateRequestType
=cut
dies_ok { $sp->_getOrCreateRequestType({ }); }
"_getOrCreateRequestType: dies on empty hash";
dies_ok { $sp->_getOrCreateRequestType({ requestTypeId => "NoStringsPlease" }); }
"_getOrCreateRequestType: dies for string request id";
dies_ok { $sp->_getOrCreateRequestType({ requestTypeId => 0 }); }
"_getOrCreateRequestType: dies for non-existant requestTypeId";
my %hh = ( requestType => 'test-request' );
lives_ok { $sp->_getOrCreateRequestType(\%hh); }
"_getOrCreateRequestType: succeeds with just requestType";
my $rr;
lives_ok { $rr = $sp->getRequestType("test-request"); }
"_getOrCreateRequestType: lookup of a request works after _getOrCreateRequestType";
is_deeply(\%hh, { requestTypeId => $rr },
"_getOrCreateRequestType: lookup of a request works after _getOrCreateRequestType");
%hh = ( requestTypeId => $rr, requestType => 'this-arg-matters-not' );
lives_ok { $sp->_getOrCreateRequestType(\%hh); }
"_getOrCreateRequestType: lookup of existing requestType suceeds.";
is_deeply(\%hh, { requestTypeId => $rr },
"_getOrCreateRequestType: deletes requestType if both are provided.");
=back
=item Database weirdness tests
=cut
sub ResetDB($) { sub ResetDB($) {
$_[0]->disconnect() if defined $_[0]; $_[0]->disconnect() if defined $_[0];
@ -427,6 +390,96 @@ sub ResetDB($) {
} }
my($tempDBH, $tempSP) = ResetDB($dbh); my($tempDBH, $tempSP) = ResetDB($dbh);
=item _getOrCreateRequestType
=cut
dies_ok { $tempSP->_getOrCreateRequestType({ }); }
"_getOrCreateRequestType: dies on empty hash";
dies_ok { $tempSP->_getOrCreateRequestType({ requestTypeId => "NoStringsPlease" }); }
"_getOrCreateRequestType: dies for string request id";
dies_ok { $tempSP->_getOrCreateRequestType({ requestTypeId => 0 }); }
"_getOrCreateRequestType: dies for non-existant requestTypeId";
my %hh = ( requestType => 'test-request' );
lives_ok { $tempSP->_getOrCreateRequestType(\%hh); }
"_getOrCreateRequestType: succeeds with just requestType";
my $rr;
lives_ok { $rr = $tempSP->getRequestType("test-request"); }
"_getOrCreateRequestType: lookup of a request works after _getOrCreateRequestType";
is_deeply(\%hh, { requestTypeId => $rr },
"_getOrCreateRequestType: lookup of a request works after _getOrCreateRequestType");
%hh = ( requestTypeId => $rr, requestType => 'this-arg-matters-not' );
lives_ok { $tempSP->_getOrCreateRequestType(\%hh); }
"_getOrCreateRequestType: lookup of existing requestType suceeds.";
is_deeply(\%hh, { requestTypeId => $rr },
"_getOrCreateRequestType: deletes requestType if both are provided.");
=item _getOrCreateRequestConfiguration
=cut
dies_ok { $tempSP->_getOrCreateRequestConfiguration({ }); }
"_getOrCreateRequestConfiguration: dies on empty hash";
dies_ok { $tempSP->_getOrCreateRequestConfiguration({ requestConfigurationId => "NoStringsPlease" }); }
"_getOrCreateRequestConfiguration: dies for string request id";
dies_ok { $tempSP->_getOrCreateRequestConfiguration({ requestConfigurationId => 0 }); }
"_getOrCreateRequestConfiguration: dies for non-existant requestConfigurationId";
dies_ok { $tempSP->_getOrCreateRequestConfiguration({ requestTypeId => "NoStringsPlease" }); }
"_getOrCreateRequestConfiguration: dies for string request id";
dies_ok { $tempSP->_getOrCreateRequestConfiguration({ requestTypeId => 0 }); }
"_getOrCreateRequestConfiguration: dies for non-existant requestTypeId";
%hh = ( requestConfiguration => 'test-request-config' );
dies_ok { $tempSP->_getOrCreateRequestConfiguration(\%hh); }
"_getOrCreateRequestConfiguration: fails with just requestConfiguration.";
$val = $tempSP->dbh()->selectall_hashref("SELECT id, description FROM request_configuration", 'description');
ok((not defined $val),
"_getOrCreateRequestConfiguration: no request_configuration record added for failed attempts");
%hh = ( requestTypeId => $rr, requestConfiguration => 'test-request-config' );
lives_ok { $tempSP->_getOrCreateRequestConfiguration(\%hh); }
"_getOrCreateRequestConfiguration: succeeds with requestConfiguration and requestType";
my $rc;
lives_ok { $rc = $tempSP->getRequestType("test-request"); }
"_getOrCreateRequestConfiguration: lookup of a request works after _getOrCreateRequestConfiguration";
ok( (defined $rc and looks_like_number($rc) and $rc > 0),
"_getOrCreateRequestConfiguration: returns valid id of requestConfiguration created");
is_deeply(\%hh, { requestTypeId => $rr, requestConfiguration => $rc },
"_getOrCreateRequestConfiguration: lookup of a request works after _getOrCreateRequestConfiguration");
%hh = ( requestTypeId => $rr, requestConfigurationId => $rc, requestConfiguration => 'this-arg-matters-not' );
lives_ok { $tempSP->_getOrCreateRequestConfiguration(\%hh); }
"_getOrCreateRequestConfiguration: lookup of existing requestConfiguration suceeds.";
is_deeply(\%hh, { requestTypeId => $rr, requestConfigurationId => $rc },
"_getOrCreateRequestConfiguration: deletes requestType if both are provided.");
=back
=item Database weirdness tests
=cut
($tempDBH, $tempSP) = ResetDB($dbh);
$tempDBH->do("DROP TABLE email_address;"); $tempDBH->do("DROP TABLE email_address;");
dies_ok { $tempSP->addSupporter({ display_name => "Roger Sterling", dies_ok { $tempSP->addSupporter({ display_name => "Roger Sterling",