e3780b34eb480fa8daa3f2a91924ba409cb1610f
[koha-ffzg.git] / t / db_dependent / Koha / SearchEngine / Search.t
1 #!/usr/bin/perl
2
3 # Tests for Koha/SearchEngine/Search
4
5 use Modern::Perl;
6
7 use Test::More tests => 1;
8
9 use MARC::Field;
10 use MARC::Record;
11 use Test::MockModule;
12 use Test::MockObject;
13
14 use t::lib::Mocks;
15
16 #use C4::Biblio qw//;
17 use Koha::Database;
18 use Koha::SearchEngine::Search;
19
20 my $schema  = Koha::Database->new->schema;
21 $schema->storage->txn_begin;
22
23 subtest 'Test extract_biblionumber' => sub {
24     plan tests => 2;
25
26     t::lib::Mocks::mock_preference( 'SearchEngine', 'Zebra' );
27     my $biblio_mod = Test::MockModule->new( 'C4::Biblio' );
28     my $search_mod = Test::MockModule->new( 'C4::Search' );
29     my $koha_fields = [ '001', '' ];
30     $biblio_mod->mock( 'GetMarcFromKohaField', sub { return @$koha_fields; });
31     $search_mod->mock( 'new_record_from_zebra', \&test_record );
32
33     # Extract using 001
34     my $searcher = Koha::SearchEngine::Search->new;
35     my $bibno = $searcher->extract_biblionumber( 'fake_result' );
36     is( $bibno, 3456, 'Extracted biblio number for Zebra' );
37
38     # Now use 999c with Elasticsearch
39     t::lib::Mocks::mock_preference( 'SearchEngine', 'Elasticsearch' );
40     $search_mod->unmock( 'new_record_from_zebra' );
41     $koha_fields = [ '999', 'c' ];
42     $searcher = Koha::SearchEngine::Search->new({ index => 'biblios' });
43     $bibno = $searcher->extract_biblionumber( test_record() );
44     is( $bibno, 4567, 'Extracted biblio number for Zebra' );
45 };
46
47 # -- Helper routine
48 sub test_record {
49     my $marc = MARC::Record->new;
50     $marc->append_fields(
51         MARC::Field->new( '001', '3456' ),
52         MARC::Field->new( '245', '', '', a => 'Some title' ),
53         MARC::Field->new( '999', '', '', c => '4567' ),
54     );
55     return $marc;
56 }
57
58 $schema->storage->txn_rollback;