Koha/t/lib/KohaTest/Acquisition/GetParcels.pm
Andrew Moore d37e9712eb adding database-dependent test libs.
These test libs should have been included in the previous patch.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
2008-04-21 11:26:28 -05:00

289 lines
11 KiB
Perl

package KohaTest::Acquisition::GetParcels;
use base qw( KohaTest::Acquisition );
use strict;
use warnings;
use Test::More;
use Time::localtime;
use C4::Acquisition;
=head2 NOTE
Please do not confuse this with the test suite for C4::Acquisition::GetParcel.
=head3 no_parcels
at first, there should be no parcels for our bookseller.
=cut
sub no_parcels : Test( 1 ) {
my $self = shift;
my @parcels = GetParcels( $self->{'booksellerid'}, # bookseller
# order
# code ( aqorders.booksellerinvoicenumber )
# datefrom
# date to
);
is( scalar @parcels, 0, 'our new bookseller has no parcels' )
or diag( Data::Dumper->Dump( [ \@parcels ], [ 'parcels' ] ) );
}
=head3 one_parcel
we create an order, mark it as received, and then see if we can find
it with GetParcels.
=cut
sub one_parcel : Test( 19 ) {
my $self = shift;
my $invoice = 123; # XXX what should this be?
my $today = sprintf( '%04d-%02d-%02d',
localtime->year() + 1900,
localtime->mon() + 1,
localtime->mday() );
$self->create_order( authorizedby => 1, # XXX what should this be?
invoice => $invoice,
date => $today );
my @parcels = GetParcels( $self->{'booksellerid'}, # bookseller
# order
# code ( aqorders.booksellerinvoicenumber )
# datefrom
# date to
);
is( scalar @parcels, 1, 'we found one (1) parcel.' )
or diag( Data::Dumper->Dump( [ \@parcels ], [ 'parcels' ] ) );
my $thisparcel = shift( @parcels );
is( scalar ( keys( %$thisparcel ) ), 6, 'my parcel hashref has 6 keys' )
or diag( Data::Dumper->Dump( [ $thisparcel ], [ 'thisparcel' ] ) );
is( $thisparcel->{'datereceived'}, $today, 'datereceived' );
is( $thisparcel->{'biblio'}, 1, 'biblio' );
is( $thisparcel->{'booksellerinvoicenumber'}, $invoice, 'booksellerinvoicenumber' );
# diag( Data::Dumper->Dump( [ $thisparcel ], [ 'thisparcel' ] ) );
}
=head3 two_parcels
we create another order, mark it as received, and then see if we can find
them all with GetParcels.
=cut
sub two_parcels : Test( 31 ) {
my $self = shift;
my $invoice = 1234; # XXX what should this be?
my $today = sprintf( '%04d-%02d-%02d',
localtime->year() + 1900,
localtime->mon() + 1,
localtime->mday() );
$self->create_order( authorizedby => 1, # XXX what should this be?
invoice => $invoice,
date => $today );
{
# fetch them all and check that this one is last
my @parcels = GetParcels( $self->{'booksellerid'}, # bookseller
# order
# code ( aqorders.booksellerinvoicenumber )
# datefrom
# date to
);
is( scalar @parcels, 2, 'we found two (2) parcels.' )
or diag( Data::Dumper->Dump( [ \@parcels ], [ 'parcels' ] ) );
my $thisparcel = pop( @parcels );
is( scalar ( keys( %$thisparcel ) ), 6, 'my parcel hashref has 6 keys' )
or diag( Data::Dumper->Dump( [ $thisparcel ], [ 'thisparcel' ] ) );
is( $thisparcel->{'datereceived'}, $today, 'datereceived' );
is( $thisparcel->{'biblio'}, 1, 'biblio' );
is( $thisparcel->{'booksellerinvoicenumber'}, $invoice, 'booksellerinvoicenumber' );
}
{
# fetch just one, by using the exact code
my @parcels = GetParcels( $self->{'booksellerid'}, # bookseller
undef, # order
$invoice, # code ( aqorders.booksellerinvoicenumber )
undef, # datefrom
undef, # date to
);
is( scalar @parcels, 1, 'we found one (1) parcels.' )
or diag( Data::Dumper->Dump( [ \@parcels ], [ 'parcels' ] ) );
my $thisparcel = pop( @parcels );
is( scalar ( keys( %$thisparcel ) ), 6, 'my parcel hashref has 6 keys' )
or diag( Data::Dumper->Dump( [ $thisparcel ], [ 'thisparcel' ] ) );
is( $thisparcel->{'datereceived'}, $today, 'datereceived' );
is( $thisparcel->{'biblio'}, 1, 'biblio' );
is( $thisparcel->{'booksellerinvoicenumber'}, $invoice, 'booksellerinvoicenumber' );
}
{
# fetch them both by using code 123, which gets 123 and 1234
my @parcels = GetParcels( $self->{'booksellerid'}, # bookseller
undef, # order
'123', # code ( aqorders.booksellerinvoicenumber )
undef, # datefrom
undef, # date to
);
is( scalar @parcels, 2, 'we found 2 parcels.' )
or diag( Data::Dumper->Dump( [ \@parcels ], [ 'parcels' ] ) );
}
{
# fetch them both, and try to order them
my @parcels = GetParcels( $self->{'booksellerid'}, # bookseller
'aqorders.booksellerinvoicenumber', # order
undef, # code ( aqorders.booksellerinvoicenumber )
undef, # datefrom
undef, # date to
);
is( scalar @parcels, 2, 'we found 2 parcels.' )
or diag( Data::Dumper->Dump( [ \@parcels ], [ 'parcels' ] ) );
is( $parcels[0]->{'booksellerinvoicenumber'}, 123 );
is( $parcels[1]->{'booksellerinvoicenumber'}, 1234 );
}
{
# fetch them both, and try to order them, descending
my @parcels = GetParcels( $self->{'booksellerid'}, # bookseller
'aqorders.booksellerinvoicenumber desc', # order
undef, # code ( aqorders.booksellerinvoicenumber )
undef, # datefrom
undef, # date to
);
is( scalar @parcels, 2, 'we found 2 parcels.' )
or diag( Data::Dumper->Dump( [ \@parcels ], [ 'parcels' ] ) );
is( $parcels[0]->{'booksellerinvoicenumber'}, 1234 );
is( $parcels[1]->{'booksellerinvoicenumber'}, 123 );
}
# diag( Data::Dumper->Dump( [ $thisparcel ], [ 'thisparcel' ] ) );
}
=head3 z_several_parcels_with_different_dates
we create an order, mark it as received, and then see if we can find
it with GetParcels.
=cut
sub z_several_parcels_with_different_dates : Test( 44 ) {
my $self = shift;
my $authorizedby = 1; # XXX what should this be?
my @inputs = ( { invoice => 10,
date => sprintf( '%04d-%02d-%02d',
1950,
localtime->mon() + 1,
10 ), # I'm using the invoice number as the day.
},
{ invoice => 15,
date => sprintf( '%04d-%02d-%02d',
1950,
localtime->mon() + 1,
15 ), # I'm using the invoice number as the day.
},
{ invoice => 20,
date => sprintf( '%04d-%02d-%02d',
1950,
localtime->mon() + 1,
20 ), # I'm using the invoice number as the day.
},
);
foreach my $input ( @inputs ) {
$self->create_order( authorizedby => $authorizedby,
invoice => $input->{'invoice'},
date => $input->{'date'},
);
}
my @parcels = GetParcels( $self->{'booksellerid'}, # bookseller
undef, # order
undef, # code ( aqorders.booksellerinvoicenumber )
sprintf( '%04d-%02d-%02d',
1950,
localtime->mon() + 1,
10 ), # datefrom
sprintf( '%04d-%02d-%02d',
1950,
localtime->mon() + 1,
20 ), # dateto
);
is( scalar @parcels, scalar @inputs, 'we found all of the parcels.' )
or diag( Data::Dumper->Dump( [ \@parcels ], [ 'parcels' ] ) );
@parcels = GetParcels( $self->{'booksellerid'}, # bookseller
undef, # order
undef, # code ( aqorders.booksellerinvoicenumber )
sprintf( '%04d-%02d-%02d',
1950,
localtime->mon() + 1,
10 ), # datefrom
sprintf( '%04d-%02d-%02d',
1950,
localtime->mon() + 1,
16 ), # dateto
);
is( scalar @parcels, scalar @inputs - 1, 'we found all of the parcels except one' )
or diag( Data::Dumper->Dump( [ \@parcels ], [ 'parcels' ] ) );
# diag( Data::Dumper->Dump( [ $thisparcel ], [ 'thisparcel' ] ) );
}
sub create_order {
my $self = shift;
my %param = @_;
$param{'authorizedby'} = 1 unless exists $param{'authorizedby'};
$param{'invoice'} = 1 unless exists $param{'invoice'};
$param{'date'} = sprintf( '%04d-%02d-%02d',
localtime->year() + 1900,
localtime->mon() + 1,
localtime->mday() ) unless exists $param{'date'};
my ( $basketno, $ordnum ) = $self->create_new_basket( %param );
my $datereceived = ModReceiveOrder( $self->{'biblios'}[0], # biblionumber
$ordnum, # $ordnum,
undef, # $quantrec,
undef, # $user,
undef, # $cost,
$param{'invoice'}, # $invoiceno,
undef, # $freight,
undef, # $rrp,
$self->{'bookfundid'}, # $bookfund,
$param{'date'}, # $datereceived
);
is( $datereceived, $param{'date'}, "the parcel was received on $datereceived" );
}
1;