From 3d016a366b91716fbf362b17ee6be04e25a79dfd Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Sat, 14 Jul 2007 19:56:27 +0000 Subject: [PATCH] finish up the databaseName method tests --- lib/WebGUI/DatabaseLink.pm | 25 ++++++++++++------------ t/DatabaseLink.t | 40 +++++++++++++++++++++++++++++++------- 2 files changed, 46 insertions(+), 19 deletions(-) diff --git a/lib/WebGUI/DatabaseLink.pm b/lib/WebGUI/DatabaseLink.pm index 65839f81d..d61ce6e21 100644 --- a/lib/WebGUI/DatabaseLink.pm +++ b/lib/WebGUI/DatabaseLink.pm @@ -107,21 +107,22 @@ Based on the DSN, figures out what the database name is. =cut sub databaseName { - my $self = shift; + my $self = shift; return $self->{_databaseName} if $self->{_databaseName}; - my @dsnEntries = split(/[:;]/, $self->get->{DSN}); + my @dsnEntries = split(/[:;]/, $self->get->{DSN}); my $databaseName; - if ($dsnEntries[2] !~ /=/) { - $databaseName = $dsnEntries[2]; - } else { - foreach (@dsnEntries) { - if ($_ =~ m/^(database|db|dbname)=(.+)$/) { - $databaseName = $2; - last; - } - } - } + if ($dsnEntries[2] !~ /=/) { + $databaseName = $dsnEntries[2]; + } + else { + foreach (@dsnEntries) { + if ($_ =~ m/^(?:database|db|dbname)=(.+)$/) { + $databaseName = $1; + last; + } + } + } return $databaseName; } diff --git a/t/DatabaseLink.t b/t/DatabaseLink.t index e8462ede4..43e5b98ad 100644 --- a/t/DatabaseLink.t +++ b/t/DatabaseLink.t @@ -21,28 +21,54 @@ use Test::More; # increment this value for each test you create my $session = WebGUI::Test->session; +#DSNs for parsing tests, particularly the database name my $DSNs = [ { - dsn => 'DBI:mysql:colonSeparated:myHost:8008', - dbName => 'colonSeparated', + dsn => 'DBI:mysql:colonSeparated:myHost:8008', + dbName => 'colonSeparated', + comment => 'explicit', }, { - dsn => 'DBI:mysql:database=myDatabase', - dbName => 'myDatabase', + dsn => 'DBI:mysql:database=myDatabase', + dbName => 'myDatabase', + comment => 'database=', }, { - dsn => 'DBI:mysql:dbName=myDbName', - dbName => 'myDbName', + dsn => 'DBI:mysql: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); is($dbLink->get->{DSN}, $session->config->get('dsn'), 'DSN set correctly for default database link'); my ($databaseName) = $session->db->quickArray('SELECT DATABASE()'); 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 { foreach my $link ($dbLink, ) { $link->delete if (defined $link and ref $link eq 'WebGUI::DatabaseLink');