finish up the databaseName method tests
This commit is contained in:
parent
6b2ed836fb
commit
3d016a366b
2 changed files with 46 additions and 19 deletions
|
|
@ -107,21 +107,22 @@ Based on the DSN, figures out what the database name is.
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub databaseName {
|
sub databaseName {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return $self->{_databaseName} if $self->{_databaseName};
|
return $self->{_databaseName} if $self->{_databaseName};
|
||||||
my @dsnEntries = split(/[:;]/, $self->get->{DSN});
|
my @dsnEntries = split(/[:;]/, $self->get->{DSN});
|
||||||
|
|
||||||
my $databaseName;
|
my $databaseName;
|
||||||
if ($dsnEntries[2] !~ /=/) {
|
if ($dsnEntries[2] !~ /=/) {
|
||||||
$databaseName = $dsnEntries[2];
|
$databaseName = $dsnEntries[2];
|
||||||
} else {
|
}
|
||||||
foreach (@dsnEntries) {
|
else {
|
||||||
if ($_ =~ m/^(database|db|dbname)=(.+)$/) {
|
foreach (@dsnEntries) {
|
||||||
$databaseName = $2;
|
if ($_ =~ m/^(?:database|db|dbname)=(.+)$/) {
|
||||||
last;
|
$databaseName = $1;
|
||||||
}
|
last;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return $databaseName;
|
return $databaseName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,28 +21,54 @@ use Test::More; # increment this value for each test you create
|
||||||
|
|
||||||
my $session = WebGUI::Test->session;
|
my $session = WebGUI::Test->session;
|
||||||
|
|
||||||
|
#DSNs for parsing tests, particularly the database name
|
||||||
my $DSNs = [
|
my $DSNs = [
|
||||||
{
|
{
|
||||||
dsn => 'DBI:mysql:colonSeparated:myHost:8008',
|
dsn => 'DBI:mysql:colonSeparated:myHost:8008',
|
||||||
dbName => 'colonSeparated',
|
dbName => 'colonSeparated',
|
||||||
|
comment => 'explicit',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
dsn => 'DBI:mysql:database=myDatabase',
|
dsn => 'DBI:mysql:database=myDatabase',
|
||||||
dbName => 'myDatabase',
|
dbName => 'myDatabase',
|
||||||
|
comment => 'database=',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
dsn => 'DBI:mysql:dbName=myDbName',
|
dsn => 'DBI:mysql:dbName=myDbName',
|
||||||
dbName => 'myDbName',
|
dbName => undef,
|
||||||
|
comment => 'dbName=, bad capitalization',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dsn => 'DBI:mysql:dbname=mydbname',
|
||||||
|
dbName => 'mydbname',
|
||||||
|
comment => 'dbname=',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dsn => 'DBI:mysql:dbnane=myDbName',
|
||||||
|
dbName => undef,
|
||||||
|
comment => 'dbnane=, misspelling',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dsn => 'DBI:mysql:db=myDb',
|
||||||
|
dbName => 'myDb',
|
||||||
|
comment => 'db=',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
plan tests => 2;
|
plan tests => 2 + scalar @{ $DSNs };
|
||||||
|
|
||||||
my $dbLink = WebGUI::DatabaseLink->new($session, 0);
|
my $dbLink = WebGUI::DatabaseLink->new($session, 0);
|
||||||
is($dbLink->get->{DSN}, $session->config->get('dsn'), 'DSN set correctly for default database link');
|
is($dbLink->get->{DSN}, $session->config->get('dsn'), 'DSN set correctly for default database link');
|
||||||
my ($databaseName) = $session->db->quickArray('SELECT DATABASE()');
|
my ($databaseName) = $session->db->quickArray('SELECT DATABASE()');
|
||||||
is ($dbLink->databaseName, $databaseName, 'databaseName parsed default DSN from config file');
|
is ($dbLink->databaseName, $databaseName, 'databaseName parsed default DSN from config file');
|
||||||
|
|
||||||
|
foreach my $dsn (@{ $DSNs }) {
|
||||||
|
my $dbl = WebGUI::DatabaseLink->create($session, { DSN => $dsn->{dsn} });
|
||||||
|
is( $dbl->databaseName(), $dsn->{dbName}, $dsn->{comment} );
|
||||||
|
$dbl->delete;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
END {
|
END {
|
||||||
foreach my $link ($dbLink, ) {
|
foreach my $link ($dbLink, ) {
|
||||||
$link->delete if (defined $link and ref $link eq 'WebGUI::DatabaseLink');
|
$link->delete if (defined $link and ref $link eq 'WebGUI::DatabaseLink');
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue