Jonathan Druart
0fdc1021d4
C4::Koha::IsAuthorisedValueCategory contains only 2 useful calls, from C4::Reports::Guided and reports/guided_reports.pl It can be replaced with Koha::AuthorisedValues->search({ category => $authorised_value})->count Test plan: 1/ Create a sql report using an authorised value category, something like: SELECT COUNT(*) FROM items where itemlost=<<lost|LOST>> 2/ Execute the report and confirm that everything works fine. 3/ Create a sql report using a nonexistent authorised value categor, something like: SELECT COUNT(*) FROM items where itemlost=<<lost|NONEXIST>> 4/ When saving the report, you should get a warning message "lost: The authorized value category (NONEXIST) you selected does not exist." 5/ Save anyway and execute the report, you should get the same warning message. QA: git grep IsAuthorisedValueCategory should not return any results prove t/db_dependent/ReportsGuided.t should return green Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com> Works as described Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com
85 lines
2.6 KiB
Perl
Executable file
85 lines
2.6 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
use Modern::Perl;
|
|
|
|
use Test::More tests => 13;
|
|
|
|
use Koha::Database;
|
|
|
|
use_ok('C4::Reports::Guided');
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
$schema->storage->txn_begin;
|
|
|
|
$_->delete for Koha::AuthorisedValues->search({ category => 'XXX' });
|
|
Koha::AuthorisedValue->new({category => 'LOC'})->store;
|
|
|
|
{ # GetReservedAuthorisedValues tests
|
|
# This one will catch new reserved words not added
|
|
# to GetReservedAuthorisedValues
|
|
my %test_authval = (
|
|
'date' => 1,
|
|
'branches' => 1,
|
|
'itemtypes' => 1,
|
|
'cn_source' => 1,
|
|
'categorycode' => 1,
|
|
'biblio_framework' => 1,
|
|
);
|
|
|
|
my $reserved_authorised_values = GetReservedAuthorisedValues();
|
|
is_deeply(\%test_authval, $reserved_authorised_values,
|
|
'GetReservedAuthorisedValues returns a fixed list');
|
|
}
|
|
|
|
{
|
|
ok( IsAuthorisedValueValid('LOC'),
|
|
'User defined authorised value category is valid');
|
|
|
|
ok( ! IsAuthorisedValueValid('XXX'),
|
|
'Not defined authorised value category is invalid');
|
|
|
|
# Loop through the reserved authorised values
|
|
foreach my $authorised_value ( keys %{GetReservedAuthorisedValues()} ) {
|
|
ok( IsAuthorisedValueValid($authorised_value),
|
|
'\''.$authorised_value.'\' is a reserved word, and thus a valid authorised value');
|
|
}
|
|
}
|
|
|
|
{ # GetParametersFromSQL tests
|
|
|
|
my $test_query_1 = "
|
|
SELECT date_due
|
|
FROM old_issues
|
|
WHERE YEAR(timestamp) = <<Year|custom_list>> AND
|
|
branchcode = <<Branch|branches>> AND
|
|
borrowernumber = <<Borrower>>
|
|
";
|
|
|
|
my @test_parameters_with_custom_list = (
|
|
{ 'name' => 'Year', 'authval' => 'custom_list' },
|
|
{ 'name' => 'Branch', 'authval' => 'branches' },
|
|
{ 'name' => 'Borrower', 'authval' => undef }
|
|
);
|
|
|
|
is_deeply( GetParametersFromSQL($test_query_1), \@test_parameters_with_custom_list,
|
|
'SQL params are correctly parsed');
|
|
|
|
# ValidateSQLParameters tests
|
|
my @problematic_parameters = ();
|
|
push @problematic_parameters, { 'name' => 'Year', 'authval' => 'custom_list' };
|
|
is_deeply( ValidateSQLParameters( $test_query_1 ),
|
|
\@problematic_parameters,
|
|
'\'custom_list\' not a valid category' );
|
|
|
|
my $test_query_2 = "
|
|
SELECT date_due
|
|
FROM old_issues
|
|
WHERE YEAR(timestamp) = <<Year|date>> AND
|
|
branchcode = <<Branch|branches>> AND
|
|
borrowernumber = <<Borrower|LOC>>
|
|
";
|
|
|
|
is_deeply( ValidateSQLParameters( $test_query_2 ),
|
|
[],
|
|
'All parameters valid, empty problematic authvals list');
|
|
}
|