|
Lines 19-30
Link Here
|
| 19 |
|
19 |
|
| 20 |
use Modern::Perl; |
20 |
use Modern::Perl; |
| 21 |
|
21 |
|
| 22 |
use Test::More tests => 5; |
22 |
use Test::More tests => 6; |
| 23 |
use MARC::Field; |
23 |
use MARC::Field; |
| 24 |
use MARC::File::XML; |
24 |
use MARC::File::XML; |
| 25 |
use MARC::Record; |
25 |
use MARC::Record; |
| 26 |
use Test::Deep; |
26 |
use Test::Deep; |
|
|
27 |
use Test::MockModule; |
| 28 |
use Test::MockObject; |
| 29 |
use Test::Warn; |
| 27 |
|
30 |
|
|
|
31 |
use C4::Context; |
| 28 |
use Koha::Authority; |
32 |
use Koha::Authority; |
| 29 |
use Koha::Authorities; |
33 |
use Koha::Authorities; |
| 30 |
use Koha::Authority::MergeRequest; |
34 |
use Koha::Authority::MergeRequest; |
|
Lines 33-44
use Koha::Authority::Type;
Link Here
|
| 33 |
use Koha::Authority::Types; |
37 |
use Koha::Authority::Types; |
| 34 |
use Koha::Database; |
38 |
use Koha::Database; |
| 35 |
|
39 |
|
|
|
40 |
use t::lib::Mocks; |
| 36 |
use t::lib::TestBuilder; |
41 |
use t::lib::TestBuilder; |
| 37 |
|
42 |
|
|
|
43 |
BEGIN { |
| 44 |
#TODO Helpful as long as we have issues here |
| 45 |
my $mock = Test::MockObject->new(); |
| 46 |
$mock->fake_module( 'Catmandu::Store::ElasticSearch' ); |
| 47 |
} |
| 48 |
|
| 38 |
my $schema = Koha::Database->new->schema; |
49 |
my $schema = Koha::Database->new->schema; |
| 39 |
$schema->storage->txn_begin; |
50 |
$schema->storage->txn_begin; |
| 40 |
|
51 |
|
| 41 |
my $builder = t::lib::TestBuilder->new; |
52 |
# Globals |
|
|
53 |
our $search_compat_pars; |
| 54 |
our $builder = t::lib::TestBuilder->new; |
| 55 |
|
| 42 |
my $nb_of_authorities = Koha::Authorities->search->count; |
56 |
my $nb_of_authorities = Koha::Authorities->search->count; |
| 43 |
my $nb_of_authority_types = Koha::Authority::Types->search->count; |
57 |
my $nb_of_authority_types = Koha::Authority::Types->search->count; |
| 44 |
my $new_authority_type_1 = Koha::Authority::Type->new( |
58 |
my $new_authority_type_1 = Koha::Authority::Type->new( |
|
Lines 110-113
subtest 'Testing reporting_tag_xml in MergeRequests' => sub {
Link Here
|
| 110 |
); |
124 |
); |
| 111 |
}; |
125 |
}; |
| 112 |
|
126 |
|
|
|
127 |
subtest 'Trivial tests for get_count_usage and linked_biblionumbers' => sub { |
| 128 |
plan tests => 5; |
| 129 |
|
| 130 |
# NOTE: We are not testing $searcher->simple_search_compat here. Suppose |
| 131 |
# that should be done in t/db../Koha/SearchEngine? |
| 132 |
# So we're just testing the 'wrapper' here. |
| 133 |
|
| 134 |
my ( $mods, $koha_fields ); |
| 135 |
t::lib::Mocks::mock_preference('SearchEngine', 'Zebra'); |
| 136 |
$mods->{zebra} = Test::MockModule->new( 'Koha::SearchEngine::Zebra::Search' ); |
| 137 |
$mods->{elastic} = Test::MockModule->new( 'Koha::SearchEngine::Elasticsearch::Search' ); |
| 138 |
$mods->{biblio} = Test::MockModule->new( 'C4::Biblio' ); |
| 139 |
$mods->{zebra}->mock( 'simple_search_compat', \&simple_search_compat ); |
| 140 |
$mods->{elastic}->mock( 'simple_search_compat', \&simple_search_compat ); |
| 141 |
$mods->{biblio}->mock( 'GetMarcFromKohaField', sub { return @$koha_fields; }); |
| 142 |
|
| 143 |
my $auth1 = $builder->build({ source => 'AuthHeader' }); |
| 144 |
$auth1 = Koha::Authorities->find( $auth1->{authid} ); |
| 145 |
|
| 146 |
# Test error condition |
| 147 |
my $count; |
| 148 |
$search_compat_pars = [ 0, 'some_error' ]; |
| 149 |
warning_like { $count = $auth1->get_usage_count } |
| 150 |
qr/some_error/, 'Catch warn of simple_search_compat'; |
| 151 |
is( $count, undef, 'Undef returned when error encountered' ); |
| 152 |
|
| 153 |
# Simple test with some results; one result discarded in the 2nd test |
| 154 |
$search_compat_pars = [ 1 ]; |
| 155 |
$koha_fields = [ '001', '' ]; |
| 156 |
is( $auth1->get_usage_count, 3, 'Three results expected (Zebra)' ); |
| 157 |
cmp_deeply( [ $auth1->linked_biblionumbers ], [ 1001, 3003 ], |
| 158 |
'linked_biblionumbers should ignore record without biblionumber' ); |
| 159 |
|
| 160 |
# And a simple test with Elastic |
| 161 |
t::lib::Mocks::mock_preference('SearchEngine', 'Elasticsearch'); |
| 162 |
cmp_deeply( [ $auth1->linked_biblionumbers ], [ 2001 ], |
| 163 |
'linked_biblionumbers with Elasticsearch' ); |
| 164 |
}; |
| 165 |
|
| 166 |
sub simple_search_compat { |
| 167 |
if( $search_compat_pars->[0] == 0 ) { |
| 168 |
return ( $search_compat_pars->[1], [], 0 ); |
| 169 |
} elsif( $search_compat_pars->[0] == 1 ) { |
| 170 |
my $records = C4::Context->preference('SearchEngine') eq 'Zebra' |
| 171 |
? few_marcxml_records() |
| 172 |
: few_marc_records(); |
| 173 |
return ( undef, $records, scalar @$records ); |
| 174 |
} |
| 175 |
} |
| 176 |
|
| 177 |
sub few_marcxml_records { |
| 178 |
return [ |
| 179 |
q|<?xml version="1.0" encoding="UTF-8"?> |
| 180 |
<record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.loc.gov/MARC21/slim" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"> |
| 181 |
<controlfield tag="001">1001</controlfield> |
| 182 |
<datafield tag="110" ind1=" " ind2=" "> |
| 183 |
<subfield code="9">102</subfield> |
| 184 |
<subfield code="a">My Corporation</subfield> |
| 185 |
</datafield> |
| 186 |
</record>|, |
| 187 |
q|<?xml version="1.0" encoding="UTF-8"?> |
| 188 |
<record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.loc.gov/MARC21/slim" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"> |
| 189 |
<!-- No biblionumber here --> |
| 190 |
<datafield tag="610" ind1=" " ind2=" "> |
| 191 |
<subfield code="9">112</subfield> |
| 192 |
<subfield code="a">Another Corporation</subfield> |
| 193 |
</datafield> |
| 194 |
</record>|, |
| 195 |
q|<?xml version="1.0" encoding="UTF-8"?> |
| 196 |
<record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.loc.gov/MARC21/slim" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"> |
| 197 |
<controlfield tag="001">3003</controlfield> |
| 198 |
<datafield tag="110" ind1=" " ind2=" "> |
| 199 |
<subfield code="9">102</subfield> |
| 200 |
<subfield code="a">My Corporation</subfield> |
| 201 |
</datafield> |
| 202 |
</record>| |
| 203 |
]; |
| 204 |
} |
| 205 |
|
| 206 |
sub few_marc_records { |
| 207 |
my $marc = MARC::Record->new; |
| 208 |
$marc->append_fields( |
| 209 |
MARC::Field->new( '001', '2001' ), |
| 210 |
MARC::Field->new( '245', '', '', a => 'Title' ), |
| 211 |
); |
| 212 |
return [ $marc ]; |
| 213 |
} |
| 214 |
|
| 113 |
$schema->storage->txn_rollback; |
215 |
$schema->storage->txn_rollback; |
| 114 |
- |
|
|