diff options
author | Ivan Kohler <ivan@freeside.biz> | 2015-07-09 22:32:26 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2015-07-09 22:32:26 -0700 |
commit | 026dc7ad72ba972f230b6709e31fa64397d75ad4 (patch) | |
tree | c5af1a7ac9154744afc3660e9a9405892f2bb50b /rt/t/api/db_indexes.t | |
parent | 07b4bc84d1078f7390221d766cdb3142513db4b0 (diff) | |
parent | 1c538bfabc2cd31f27067505f0c3d1a46cba6ef0 (diff) |
merge RT 4.2.11 and Header changes to disable RT javascript, RT#34237
Diffstat (limited to 'rt/t/api/db_indexes.t')
-rw-r--r-- | rt/t/api/db_indexes.t | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/rt/t/api/db_indexes.t b/rt/t/api/db_indexes.t new file mode 100644 index 0000000..3c305d8 --- /dev/null +++ b/rt/t/api/db_indexes.t @@ -0,0 +1,165 @@ +use strict; +use warnings; +use Test::Warn; + +use RT::Test tests => undef; + +my $handle = $RT::Handle; +my $db_type = RT->Config->Get('DatabaseType'); + +# Pg,Oracle needs DBA +RT::Test::__reconnect_rt('as dba'); +ok( $handle->dbh->do("ALTER SESSION SET CURRENT_SCHEMA=". RT->Config->Get('DatabaseUser') ) ) + if $db_type eq 'Oracle'; + +note "test handle->Indexes method"; +{ + my %indexes = $handle->Indexes; + ok grep $_ eq 'tickets1', @{ $indexes{'tickets'} }; + ok grep $_ eq 'tickets2', @{ $indexes{'tickets'} }; + ok grep $_ eq 'users1', @{ $indexes{'users'} }; + ok grep $_ eq 'users4', @{ $indexes{'users'} }; +} + +note "test handle->DropIndex method"; +{ + my ($status, $msg) = $handle->DropIndex( Table => 'Tickets', Name => 'Tickets1' ); + ok $status, $msg; + + my %indexes = $handle->Indexes; + ok !grep $_ eq 'tickets1', @{ $indexes{'tickets'} }; + + ($status, $msg) = $handle->DropIndex( Table => 'Tickets', Name => 'Tickets1' ); + ok !$status, $msg; +} + +note "test handle->DropIndexIfExists method"; +{ + my ($status, $msg) = $handle->DropIndexIfExists( Table => 'Tickets', Name => 'Tickets2' ); + ok $status, $msg; + + my %indexes = $handle->Indexes; + ok !grep $_ eq 'tickets2', @{ $indexes{'tickets'} }; + + ($status, $msg) = $handle->DropIndexIfExists( Table => 'Tickets', Name => 'Tickets2' ); + ok $status, $msg; +} + +note "test handle->IndexInfo method"; +{ + if ($db_type ne 'Oracle' && $db_type ne 'mysql') { + my %res = $handle->IndexInfo( Table => 'Attachments', Name => 'Attachments1' ); + is_deeply( + \%res, + { + Table => 'attachments', Name => 'attachments1', + Unique => 0, Functional => 0, + Columns => ['parent'] + } + ); + } else { + my %res = $handle->IndexInfo( Table => 'Attachments', Name => 'Attachments2' ); + is_deeply( + \%res, + { + Table => 'attachments', Name => 'attachments2', + Unique => 0, Functional => 0, + Columns => ['transactionid'] + } + ); + } + + my %res = $handle->IndexInfo( Table => 'GroupMembers', Name => 'GroupMembers1' ); + is_deeply( + \%res, + { + Table => 'groupmembers', Name => 'groupmembers1', + Unique => 1, Functional => 0, + Columns => ['groupid', 'memberid'] + } + ); + + if ( $db_type eq 'Pg' || $db_type eq 'Oracle' ) { + %res = $handle->IndexInfo( Table => 'Queues', Name => 'Queues1' ); + is_deeply( + \%res, + { + Table => 'queues', Name => 'queues1', + Unique => 1, Functional => 1, + Columns => ['name'], + CaseInsensitive => { name => 1 }, + } + ); + } +} + +note "test ->CreateIndex and ->IndexesThatBeginWith methods"; +{ + { + my ($name, $msg) = $handle->CreateIndex( + Table => 'Users', Name => 'test_users1', + Columns => ['Organization'], + ); + ok $name, $msg; + } + { + my ($name, $msg) = $handle->CreateIndex( + Table => 'Users', Name => 'test_users2', + Columns => ['Organization', 'Name'], + ); + ok $name, $msg; + } + + my @list = $handle->IndexesThatBeginWith( Table => 'Users', Columns => ['Organization'] ); + is_deeply([sort map $_->{Name}, @list], [qw(test_users1 test_users2)]); + + my ($status, $msg) = $handle->DropIndex( Table => 'Users', Name => 'test_users1' ); + ok $status, $msg; + ($status, $msg) = $handle->DropIndex( Table => 'Users', Name => 'test_users2' ); + ok $status, $msg; +} + +note "Test some cases sensitivity aspects"; +{ + { + my %res = $handle->IndexInfo( Table => 'groupmembers', Name => 'groupmembers1' ); + is_deeply( + \%res, + { + Table => 'groupmembers', Name => 'groupmembers1', + Unique => 1, Functional => 0, + Columns => ['groupid', 'memberid'] + } + ); + } + + { + my ($status, $msg) = $handle->DropIndex( Table => 'groupmembers', Name => 'groupmembers1' ); + ok $status, $msg; + + my %indexes = $handle->Indexes; + ok !grep $_ eq 'groupmembers1', @{ $indexes{'groupmembers'} }; + } + + { + my ($name, $msg) = $handle->CreateIndex( + Table => 'groupmembers', Name => 'groupmembers1', + Unique => 1, + Columns => ['groupid', 'memberid'] + ); + ok $name, $msg; + + my %indexes = $handle->Indexes; + ok grep $_ eq 'groupmembers1', @{ $indexes{'groupmembers'} }; + } + + { + my ($status, $msg) = $handle->DropIndexIfExists( Table => 'groupmembers', Name => 'groupmembers1' ); + ok $status, $msg; + + my %indexes = $handle->Indexes; + ok !grep $_ eq 'groupmembers1', @{ $indexes{'groupmembers'} }; + } +} + +done_testing(); |