View | Details | Raw Unified | Return to bug 17457
Collapse All | Expand All

(-)a/t/db_dependent/Acquisition.t (-30 / +120 lines)
Lines 19-25 use Modern::Perl; Link Here
19
19
20
use POSIX qw(strftime);
20
use POSIX qw(strftime);
21
21
22
use Test::More tests => 67;
22
use Test::More tests => 68;
23
use t::lib::Mocks;
23
use t::lib::Mocks;
24
use Koha::Database;
24
use Koha::Database;
25
25
Lines 164-195 my $budgetid = C4::Budgets::AddBudget( Link Here
164
);
164
);
165
my $budget = C4::Budgets::GetBudget($budgetid);
165
my $budget = C4::Budgets::GetBudget($budgetid);
166
166
167
# Prepare a sample MARC record with a ISBN to test GetHistory()
168
my $marcxml = qq{<?xml version="1.0" encoding="UTF-8"?>
169
<record
170
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
171
    xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
172
    xmlns="http://www.loc.gov/MARC21/slim">
173
174
  <leader>03108cam a2200277 i 4500</leader>
175
  <controlfield tag="001">a2526595</controlfield>
176
  <controlfield tag="003">Koha</controlfield>
177
  <controlfield tag="005">20170306104815.0</controlfield>
178
  <controlfield tag="006">m     o  d        </controlfield>
179
  <controlfield tag="007">cr |||||||||||</controlfield>
180
  <controlfield tag="008">150723s2016    vau      b    000 0 eng d</controlfield>
181
  <datafield tag="020" ind1=" " ind2=" ">
182
    <subfield code="a">9780136019701</subfield>
183
  </datafield>
184
</record>
185
};
186
187
my @ordernumbers;
167
my @ordernumbers;
188
my ( $biblionumber1, $biblioitemnumber1 ) = AddBiblio( MARC::Record->new, '' );
168
my ( $biblionumber1, $biblioitemnumber1 ) = AddBiblio( MARC::Record->new, '' );
189
my ( $biblionumber2, $biblioitemnumber2 ) = AddBiblio( MARC::Record->new, '' );
169
my ( $biblionumber2, $biblioitemnumber2 ) = AddBiblio( MARC::Record->new, '' );
190
my ( $biblionumber3, $biblioitemnumber3 ) = AddBiblio( MARC::Record->new, '' );
170
my ( $biblionumber3, $biblioitemnumber3 ) = AddBiblio( MARC::Record->new, '' );
191
my ( $biblionumber4, $biblioitemnumber4 ) = AddBiblio( MARC::Record->new, '' );
171
my ( $biblionumber4, $biblioitemnumber4 ) = AddBiblio( MARC::Record->new, '' );
192
my ( $biblionumber5, $biblioitemnumber5 ) = AddBiblio( MARC::Record->new_from_xml( $marcxml, 'utf8', 'MARC21' ), '' );
172
my ( $biblionumber5, $biblioitemnumber5 ) = AddBiblio( MARC::Record->new, '' );
173
174
193
175
194
# Prepare 5 orders, and make distinction beween fields to be tested with eq and with ==
176
# Prepare 5 orders, and make distinction beween fields to be tested with eq and with ==
195
# Ex : a price of 50.1 will be stored internally as 5.100000
177
# Ex : a price of 50.1 will be stored internally as 5.100000
Lines 458-470 is( scalar( @$orders ), 2, 'GetHistory with a given ordernumber and search_child Link Here
458
440
459
# Test GetHistory() with and without SearchWithISBNVariations
441
# Test GetHistory() with and without SearchWithISBNVariations
460
# The ISBN passed as a param is the ISBN-10 version of the 13-digit ISBN in the sample record declared in $marcxml
442
# The ISBN passed as a param is the ISBN-10 version of the 13-digit ISBN in the sample record declared in $marcxml
461
t::lib::Mocks::mock_preference('SearchWithISBNVariations', 0);
462
$orders = GetHistory( isbn => '0136019706' );
463
is( scalar(@$orders), 0, "GetHistory searches correctly by ISBN" );
464
465
t::lib::Mocks::mock_preference('SearchWithISBNVariations', 1);
466
$orders = GetHistory( isbn => '0136019706' );
467
is( scalar(@$orders), 1, "GetHistory searches correctly by ISBN" );
468
443
469
my $budgetid2 = C4::Budgets::AddBudget(
444
my $budgetid2 = C4::Budgets::AddBudget(
470
    {
445
    {
Lines 574-577 ok($active_count >= 1 , "GetBudgetsReport(1) OK"); Link Here
574
is($all_count, scalar GetBudgetsReport(), "GetBudgetReport returns inactive budget period acquisitions.");
549
is($all_count, scalar GetBudgetsReport(), "GetBudgetReport returns inactive budget period acquisitions.");
575
ok($active_count >= scalar GetBudgetsReport(1), "GetBudgetReport doesn't return inactive budget period acquisitions.");
550
ok($active_count >= scalar GetBudgetsReport(1), "GetBudgetReport doesn't return inactive budget period acquisitions.");
576
551
552
# "Flavoured" tests (tests that required a run for each marc flavour)
553
# Tests should be added to the run_flavoured_tests sub below
554
my $biblio_module = new Test::MockModule('C4::Biblio');
555
$biblio_module->mock(
556
    'GetMarcSubfieldStructure',
557
    sub {
558
        my ($self) = shift;
559
560
        my ( $title_field,            $title_subfield )            = get_title_field();
561
        my ( $isbn_field,             $isbn_subfield )             = get_isbn_field();
562
        my ( $issn_field,             $issn_subfield )             = get_issn_field();
563
        my ( $biblionumber_field,     $biblionumber_subfield )     = ( '999', 'c' );
564
        my ( $biblioitemnumber_field, $biblioitemnumber_subfield ) = ( '999', '9' );
565
        my ( $itemnumber_field,       $itemnumber_subfield )       = get_itemnumber_field();
566
567
        return {
568
            'biblio.title'                 => [ { tagfield => $title_field,            tagsubfield => $title_subfield } ],
569
            'biblio.biblionumber'          => [ { tagfield => $biblionumber_field,     tagsubfield => $biblionumber_subfield } ],
570
            'biblioitems.isbn'             => [ { tagfield => $isbn_field,             tagsubfield => $isbn_subfield } ],
571
            'biblioitems.issn'             => [ { tagfield => $issn_field,             tagsubfield => $issn_subfield } ],
572
            'biblioitems.biblioitemnumber' => [ { tagfield => $biblioitemnumber_field, tagsubfield => $biblioitemnumber_subfield } ],
573
            'items.itemnumber'             => [ { tagfield => $itemnumber_subfield,    tagsubfield => $itemnumber_subfield } ],
574
        };
575
      }
576
);
577
578
sub run_flavoured_tests {
579
    my $marcflavour = shift;
580
    t::lib::Mocks::mock_preference('marcflavour', $marcflavour);
581
582
    #
583
    # Test SearchWithISBNVariations syspref
584
    #
585
    my $marc_record = MARC::Record->new;
586
    $marc_record->append_fields( create_isbn_field( '9780136019701', $marcflavour ) );
587
    my ( $biblionumber6, $biblioitemnumber6 ) = AddBiblio( $marc_record, '' );
588
589
    # Create order
590
    my $ordernumber = Koha::Acquisition::Order->new( {
591
            basketno     => $basketno,
592
            biblionumber => $biblionumber6,
593
            budget_id    => $budget->{budget_id},
594
            order_internalnote => "internal note",
595
            order_vendornote   => "vendor note",
596
            quantity       => 1,
597
            ecost          => 10,
598
            rrp            => 10,
599
            listprice      => 10,
600
            ecost          => 10,
601
            rrp            => 10,
602
            discount       => 0,
603
            uncertainprice => 0,
604
    } )->store->ordernumber;
605
606
    t::lib::Mocks::mock_preference('SearchWithISBNVariations', 0);
607
    $orders = GetHistory( isbn => '0136019706' );
608
    is( scalar(@$orders), 0, "GetHistory searches correctly by ISBN" );
609
610
    t::lib::Mocks::mock_preference('SearchWithISBNVariations', 1);
611
    $orders = GetHistory( isbn => '0136019706' );
612
    is( scalar(@$orders), 1, "GetHistory searches correctly by ISBN" );
613
614
    my $order = GetOrder($ordernumber);
615
    DelOrder($order->{biblionumber}, $order->{ordernumber}, 1);
616
}
617
618
# Do "flavoured" tests
619
subtest 'MARC21' => sub {
620
    plan tests => 2;
621
    run_flavoured_tests('MARC21');
622
};
623
624
subtest 'UNIMARC' => sub {
625
    plan tests => 2;
626
    run_flavoured_tests('UNIMARC');
627
};
628
629
subtest 'NORMARC' => sub {
630
    plan tests => 2;
631
    run_flavoured_tests('NORMARC');
632
};
633
634
### Functions required for "flavoured" tests
635
sub get_title_field {
636
    my $marc_flavour = C4::Context->preference('marcflavour');
637
    return ( $marc_flavour eq 'UNIMARC' ) ? ( '200', 'a' ) : ( '245', 'a' );
638
}
639
640
sub get_isbn_field {
641
    my $marc_flavour = C4::Context->preference('marcflavour');
642
    return ( $marc_flavour eq 'UNIMARC' ) ? ( '010', 'a' ) : ( '020', 'a' );
643
}
644
645
sub get_issn_field {
646
    my $marc_flavour = C4::Context->preference('marcflavour');
647
    return ( $marc_flavour eq 'UNIMARC' ) ? ( '011', 'a' ) : ( '022', 'a' );
648
}
649
650
sub get_itemnumber_field {
651
    my $marc_flavour = C4::Context->preference('marcflavour');
652
    return ( $marc_flavour eq 'UNIMARC' ) ? ( '995', '9' ) : ( '952', '9' );
653
}
654
655
sub create_isbn_field {
656
    my ( $isbn, $marcflavour ) = @_;
657
658
    my ( $isbn_field, $isbn_subfield ) = get_isbn_field();
659
    my $field = MARC::Field->new( $isbn_field, '', '', $isbn_subfield => $isbn );
660
661
    # Add the price subfield
662
    my $price_subfield = ( $marcflavour eq 'UNIMARC' ) ? 'd' : 'c';
663
    $field->add_subfields( $price_subfield => '$100' );
664
665
    return $field;
666
}
667
577
$schema->storage->txn_rollback();
668
$schema->storage->txn_rollback();
578
- 

Return to bug 17457