Koha/t/db_dependent/Installer.t
Jonathan Druart 05fdd855c8 Bug 17234: Need to separate KEY and FOREIGN KEY checks
In the previous patch we use the constraint_exists subroutine to verify
if an index or a foreign key exists.
But the `SHOW INDEX` query does not return foreign keys (as its name
suggests!).
We need another subroutine foreign_key_exists to check the FK existence.

I have found that because t/db_dependent/TestBuilder.t fails on
oai_sets_biblios, because oai_sets_biblios_ibfk_1 has not been removed.

Test plan:
0/ Do not apply this patch
1/ Use a 3.20 DB
2/ update the DB
3/ SHOW CREATE TABLE oai_sets_biblios
will display oai_sets_biblios_ibfk_1

Apply the patch and repeat 1, 2, 3
=> Will not display oai_sets_biblios_ibfk_1
It has been removed as expected.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
2017-01-12 12:43:10 +00:00

66 lines
2.4 KiB
Perl

#!/usr/bin/perl
#
# This file is part of Koha.
#
# Copyright (C) 2014 Aleisha Amohia (Bug 11541)
# Copyright (C) 2016 Mark Tompsett (Bug 17234)
#
# Koha is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Koha is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <http://www.gnu.org/licenses>.
# This Koha test module is still a stub!
# Add more tests here!!!
use Modern::Perl;
use Test::More tests => 15;
use Koha::Database;
BEGIN {
use_ok('C4::Installer');
}
ok( my $installer = C4::Installer->new(), 'Testing NewInstaller' );
is( ref $installer, 'C4::Installer', 'Testing class of object' );
is( $installer->{'dbname'}, C4::Context->config('database'), 'Testing DbName' );
is(
$installer->{'dbms'},
C4::Context->config('db_scheme')
? C4::Context->config('db_scheme')
: 'mysql',
'Testing DbScheme'
);
is(
$installer->{'hostname'},
C4::Context->config('hostname'),
'Testing Hostname'
);
is( $installer->{'port'}, C4::Context->config('port'), 'Testing Port' );
is( $installer->{'user'}, C4::Context->config('user'), 'Testing User' );
is( $installer->{'password'}, C4::Context->config('pass'), 'Testing Password' );
# The borrower table is known to have columns and constraints.
my $schema = Koha::Database->new->schema;
my $source = $schema->source('Borrower');
my @column_names = $source->columns();
my $column_name = $column_names[0];
ok( column_exists( 'borrowers', $column_name ), 'Known column does exist' );
ok( ! column_exists( 'borrowers', 'xxx'), 'Column xxx does not exist' );
my @constraint_names = $source->unique_constraint_names();
my $constraint_name = $constraint_names[0];
ok( index_exists( 'borrowers', $constraint_name), 'Known contraint does exist' );
ok( ! index_exists( 'borrowers', 'xxx'), 'Constraint xxx does not exist' );
ok( foreign_key_exists( 'borrowers', 'borrowers_ibfk_1' ), 'FK borrowers_ibfk_1 exists' );
ok( ! foreign_key_exists( 'borrowers', 'xxx' ), 'FK xxxx does not exist' );