|
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 => 92; |
22 |
use Test::More tests => 65; |
| 23 |
use Koha::Database; |
23 |
use Koha::Database; |
| 24 |
|
24 |
|
| 25 |
BEGIN { |
25 |
BEGIN { |
|
Lines 273-665
for ( 0 .. 4 ) {
Link Here
|
| 273 |
$order_content[$_]->{str}->{ordernumber} = $ordernumbers[$_]; |
273 |
$order_content[$_]->{str}->{ordernumber} = $ordernumbers[$_]; |
| 274 |
} |
274 |
} |
| 275 |
|
275 |
|
| 276 |
# Test UT sub _check_fields_of_order |
|
|
| 277 |
|
| 278 |
my ( |
| 279 |
$test_missing_fields, $test_extra_fields, |
| 280 |
$test_different_fields, $test_nbr_fields |
| 281 |
) |
| 282 |
= _check_fields_of_order( |
| 283 |
[qw /a b c d e/], |
| 284 |
{ str => { a => "bla", b => "105" }, num => { c => 15.12 } }, |
| 285 |
{ a => "blabla", f => "f", b => "105", c => 15.1200, g => '' } |
| 286 |
); |
| 287 |
ok( |
| 288 |
( |
| 289 |
( $test_nbr_fields == 5 ) |
| 290 |
and ( join( " ", sort @$test_missing_fields ) eq 'd e' ) |
| 291 |
and ( join( " ", sort @$test_extra_fields ) eq 'f g' ) |
| 292 |
and ( join( " ", @$test_different_fields ) eq 'a' ) |
| 293 |
), |
| 294 |
"_check_fields_of_order can check an order (test 1)" |
| 295 |
); |
| 296 |
( |
| 297 |
$test_missing_fields, $test_extra_fields, |
| 298 |
$test_different_fields, $test_nbr_fields |
| 299 |
) |
| 300 |
= _check_fields_of_order( |
| 301 |
[qw /a b c /], |
| 302 |
{ str => { a => "bla", b => "105" }, num => { c => 15.00 } }, |
| 303 |
{ a => "bla", b => "105", c => 15 } |
| 304 |
); |
| 305 |
ok( |
| 306 |
( |
| 307 |
( $test_nbr_fields == 3 ) |
| 308 |
and ( scalar @$test_missing_fields == 0 ) |
| 309 |
and ( scalar @$test_extra_fields == 0 ) |
| 310 |
and ( scalar @$test_different_fields == 0 ) |
| 311 |
), |
| 312 |
"_check_fields_of_order can check an order (test 2)" |
| 313 |
); |
| 314 |
( |
| 315 |
$test_missing_fields, $test_extra_fields, |
| 316 |
$test_different_fields, $test_nbr_fields |
| 317 |
) |
| 318 |
= _check_fields_of_order( |
| 319 |
[qw /a b c d e/], |
| 320 |
{ str => { a => "bla", b => "105" }, num => { c => 15.12 } }, |
| 321 |
{ a => "blabla", b => "105", c => 15, d => "error" } |
| 322 |
); |
| 323 |
ok( |
| 324 |
( |
| 325 |
( $test_nbr_fields == 4 ) |
| 326 |
and ( join( " ", sort @$test_missing_fields ) eq 'e' ) |
| 327 |
and ( scalar @$test_extra_fields == 0 ) |
| 328 |
and ( join( " ", @$test_different_fields ) eq 'a c' ) |
| 329 |
), |
| 330 |
"_check_fields_of_order can check an order (test 3)" |
| 331 |
); |
| 332 |
|
| 333 |
# |
| 334 |
# test GetOrder |
| 335 |
# |
| 336 |
|
| 337 |
my @expectedfields = qw( |
| 338 |
order_internalnote |
| 339 |
order_vendornote |
| 340 |
ordernumber |
| 341 |
biblionumber |
| 342 |
entrydate |
| 343 |
quantity |
| 344 |
currency |
| 345 |
listprice |
| 346 |
datereceived |
| 347 |
invoiceid |
| 348 |
freight |
| 349 |
unitprice |
| 350 |
unitprice_tax_included |
| 351 |
unitprice_tax_excluded |
| 352 |
quantityreceived |
| 353 |
datecancellationprinted |
| 354 |
purchaseordernumber |
| 355 |
basketno |
| 356 |
timestamp |
| 357 |
rrp |
| 358 |
rrp_tax_included |
| 359 |
rrp_tax_excluded |
| 360 |
ecost |
| 361 |
ecost_tax_included |
| 362 |
ecost_tax_excluded |
| 363 |
unitpricesupplier |
| 364 |
unitpricelib |
| 365 |
tax_rate |
| 366 |
tax_value |
| 367 |
discount |
| 368 |
budget_id |
| 369 |
budgetdate |
| 370 |
sort1 |
| 371 |
sort2 |
| 372 |
sort1_authcat |
| 373 |
sort2_authcat |
| 374 |
uncertainprice |
| 375 |
claims_count |
| 376 |
claimed_date |
| 377 |
subscriptionid |
| 378 |
parent_ordernumber |
| 379 |
orderstatus |
| 380 |
line_item_id |
| 381 |
suppliers_reference_number |
| 382 |
suppliers_reference_qualifier |
| 383 |
suppliers_report |
| 384 |
title |
| 385 |
author |
| 386 |
basketname |
| 387 |
branchcode |
| 388 |
publicationyear |
| 389 |
copyrightdate |
| 390 |
editionstatement |
| 391 |
isbn |
| 392 |
ean |
| 393 |
seriestitle |
| 394 |
publishercode |
| 395 |
publisher |
| 396 |
budget |
| 397 |
supplier |
| 398 |
supplierid |
| 399 |
estimateddeliverydate |
| 400 |
orderdate |
| 401 |
quantity_to_receive |
| 402 |
subtotal |
| 403 |
latesince |
| 404 |
cancellationreason |
| 405 |
); |
| 406 |
( |
| 407 |
$test_missing_fields, $test_extra_fields, |
| 408 |
$test_different_fields, $test_nbr_fields |
| 409 |
) |
| 410 |
= _check_fields_of_order( \@expectedfields, $order_content[0], |
| 411 |
GetOrder( $ordernumbers[0] ) ); |
| 412 |
is( |
| 413 |
$test_nbr_fields, |
| 414 |
scalar @expectedfields, |
| 415 |
"GetOrder gets an order with the right number of fields" |
| 416 |
); |
| 417 |
is( join( " ", @$test_missing_fields ), |
| 418 |
'', "GetOrder gets an order with no missing fields" ); |
| 419 |
is( join( " ", @$test_extra_fields ), |
| 420 |
'', "GetOrder gets an order with no unexpected fields" ); |
| 421 |
is( join( " ", @$test_different_fields ), |
| 422 |
'', "GetOrder gets an order with the right content in every fields" ); |
| 423 |
|
| 424 |
# |
| 425 |
# Test GetOrders |
| 426 |
# |
| 427 |
|
| 428 |
my @base_expectedfields = qw( |
| 429 |
order_internalnote |
| 430 |
order_vendornote |
| 431 |
notes |
| 432 |
ordernumber |
| 433 |
ecost |
| 434 |
ecost_tax_included |
| 435 |
ecost_tax_excluded |
| 436 |
uncertainprice |
| 437 |
url |
| 438 |
isbn |
| 439 |
copyrightdate |
| 440 |
serial |
| 441 |
cn_suffix |
| 442 |
cn_item |
| 443 |
marcxml |
| 444 |
freight |
| 445 |
cn_class |
| 446 |
title |
| 447 |
pages |
| 448 |
budget_encumb |
| 449 |
budget_name |
| 450 |
number |
| 451 |
itemtype |
| 452 |
totalissues |
| 453 |
author |
| 454 |
budget_permission |
| 455 |
parent_ordernumber |
| 456 |
size |
| 457 |
claims_count |
| 458 |
currency |
| 459 |
seriestitle |
| 460 |
timestamp |
| 461 |
editionstatement |
| 462 |
budget_parent_id |
| 463 |
publishercode |
| 464 |
unitprice |
| 465 |
unitprice_tax_included |
| 466 |
unitprice_tax_excluded |
| 467 |
collectionvolume |
| 468 |
budget_amount |
| 469 |
budget_owner_id |
| 470 |
datecreated |
| 471 |
claimed_date |
| 472 |
subscriptionid |
| 473 |
editionresponsibility |
| 474 |
sort2 |
| 475 |
volumedate |
| 476 |
budget_id |
| 477 |
illus |
| 478 |
ean |
| 479 |
biblioitemnumber |
| 480 |
datereceived |
| 481 |
orderstatus |
| 482 |
line_item_id |
| 483 |
suppliers_reference_number |
| 484 |
suppliers_reference_qualifier |
| 485 |
suppliers_report |
| 486 |
agerestriction |
| 487 |
budget_branchcode |
| 488 |
tax_rate |
| 489 |
tax_value |
| 490 |
listprice |
| 491 |
budget_code |
| 492 |
budgetdate |
| 493 |
basketno |
| 494 |
discount |
| 495 |
abstract |
| 496 |
collectionissn |
| 497 |
publicationyear |
| 498 |
collectiontitle |
| 499 |
invoiceid |
| 500 |
place |
| 501 |
issn |
| 502 |
quantityreceived |
| 503 |
entrydate |
| 504 |
cn_source |
| 505 |
sort1_authcat |
| 506 |
budget_notes |
| 507 |
biblionumber |
| 508 |
unititle |
| 509 |
sort2_authcat |
| 510 |
budget_expend |
| 511 |
rrp |
| 512 |
rrp_tax_included |
| 513 |
rrp_tax_excluded |
| 514 |
cn_sort |
| 515 |
lccn |
| 516 |
sort1 |
| 517 |
volume |
| 518 |
purchaseordernumber |
| 519 |
quantity |
| 520 |
budget_period_id |
| 521 |
frameworkcode |
| 522 |
volumedesc |
| 523 |
datecancellationprinted |
| 524 |
cancellationreason |
| 525 |
); |
| 526 |
@expectedfields = |
| 527 |
( @base_expectedfields, |
| 528 |
( 'transferred_from_timestamp', 'transferred_from' ) ); |
| 529 |
is( GetOrders(), undef, "GetOrders with no params returns undef" ); |
| 530 |
DelOrder( $order_content[3]->{str}->{biblionumber}, $ordernumbers[3] ); |
276 |
DelOrder( $order_content[3]->{str}->{biblionumber}, $ordernumbers[3] ); |
| 531 |
my @get_orders = GetOrders($basketno); |
|
|
| 532 |
( |
| 533 |
$test_missing_fields, $test_extra_fields, |
| 534 |
$test_different_fields, $test_nbr_fields |
| 535 |
) |
| 536 |
= _check_fields_of_orders( \@expectedfields, \@order_content, \@get_orders ); |
| 537 |
is( |
| 538 |
$$test_nbr_fields[0], |
| 539 |
scalar @expectedfields, |
| 540 |
"GetOrders gets orders with the right number of fields" |
| 541 |
); |
| 542 |
is( join( " ", @$test_missing_fields ), |
| 543 |
'', "GetOrders gets orders with no missing fields" ); |
| 544 |
is( join( " ", @$test_extra_fields ), |
| 545 |
'', "GetOrders gets orders with no unexpected fields" ); |
| 546 |
is( join( " ", @$test_different_fields ), |
| 547 |
'', "GetOrders gets orders with the right content in every fields" ); |
| 548 |
ok( |
| 549 |
( |
| 550 |
( scalar @get_orders == 4 ) |
| 551 |
and !grep ( $_->{ordernumber} eq $ordernumbers[3], @get_orders ) |
| 552 |
), |
| 553 |
"GetOrders only gets non-cancelled orders" |
| 554 |
); |
| 555 |
|
| 556 |
# |
| 557 |
# Test GetOrders { cancelled => 1 } |
| 558 |
# |
| 559 |
|
| 560 |
@expectedfields = |
| 561 |
( @base_expectedfields, ( 'transferred_to_timestamp', 'transferred_to' ) ); |
| 562 |
@get_orders = GetOrders($basketno, { cancelled => 1 }); |
| 563 |
( |
| 564 |
$test_missing_fields, $test_extra_fields, |
| 565 |
$test_different_fields, $test_nbr_fields |
| 566 |
) |
| 567 |
= _check_fields_of_orders( \@expectedfields, \@order_content, \@get_orders ); |
| 568 |
is( |
| 569 |
$$test_nbr_fields[0], |
| 570 |
scalar @expectedfields, |
| 571 |
"GetOrders { cancelled => 1 } gets orders with the right number of fields" |
| 572 |
); |
| 573 |
is( join( " ", @$test_missing_fields ), |
| 574 |
'', "GetOrders { cancelled => 1 } gets orders with no missing fields" ); |
| 575 |
is( join( " ", @$test_extra_fields ), |
| 576 |
'', "GetOrders { cancelled => 1 } gets orders with no unexpected fields" ); |
| 577 |
is( join( " ", @$test_different_fields ), |
| 578 |
'', |
| 579 |
"GetOrders { cancelled => 1 } gets orders with the right content in every fields" ); |
| 580 |
ok( |
| 581 |
( |
| 582 |
( scalar @get_orders == 1 ) |
| 583 |
and grep ( $_->{ordernumber} eq $ordernumbers[3], @get_orders ) |
| 584 |
), |
| 585 |
"GetOrders { cancelled => 1 } only gets cancelled orders" |
| 586 |
); |
| 587 |
|
| 588 |
# |
| 589 |
# Test SearchOrders |
| 590 |
# |
| 591 |
|
| 592 |
@expectedfields = qw ( |
| 593 |
order_internalnote |
| 594 |
order_vendornote |
| 595 |
notes |
| 596 |
basketgroupid |
| 597 |
basketgroupname |
| 598 |
firstname |
| 599 |
biblioitemnumber |
| 600 |
ecost |
| 601 |
ecost_tax_included |
| 602 |
ecost_tax_excluded |
| 603 |
uncertainprice |
| 604 |
creationdate |
| 605 |
datereceived |
| 606 |
orderstatus |
| 607 |
line_item_id |
| 608 |
suppliers_reference_number |
| 609 |
suppliers_reference_qualifier |
| 610 |
suppliers_report |
| 611 |
isbn |
| 612 |
copyrightdate |
| 613 |
tax_rate |
| 614 |
tax_value |
| 615 |
serial |
| 616 |
listprice |
| 617 |
budgetdate |
| 618 |
basketno |
| 619 |
discount |
| 620 |
surname |
| 621 |
freight |
| 622 |
abstract |
| 623 |
title |
| 624 |
closedate |
| 625 |
basketname |
| 626 |
invoiceid |
| 627 |
author |
| 628 |
parent_ordernumber |
| 629 |
claims_count |
| 630 |
entrydate |
| 631 |
currency |
| 632 |
quantityreceived |
| 633 |
seriestitle |
| 634 |
sort1_authcat |
| 635 |
timestamp |
| 636 |
biblionumber |
| 637 |
unititle |
| 638 |
sort2_authcat |
| 639 |
rrp |
| 640 |
rrp_tax_included |
| 641 |
rrp_tax_excluded |
| 642 |
unitprice |
| 643 |
unitprice_tax_included |
| 644 |
unitprice_tax_excluded |
| 645 |
sort1 |
| 646 |
ordernumber |
| 647 |
datecreated |
| 648 |
purchaseordernumber |
| 649 |
quantity |
| 650 |
claimed_date |
| 651 |
subscriptionid |
| 652 |
frameworkcode |
| 653 |
sort2 |
| 654 |
datecancellationprinted |
| 655 |
budget_id |
| 656 |
authorisedby |
| 657 |
booksellerid |
| 658 |
cancellationreason |
| 659 |
); |
| 660 |
|
| 661 |
# note that authorisedby was added to the return of SearchOrder by the |
| 662 |
# patch for bug 11777 |
| 663 |
|
277 |
|
| 664 |
my $invoiceid = AddInvoice( |
278 |
my $invoiceid = AddInvoice( |
| 665 |
invoicenumber => 'invoice', |
279 |
invoicenumber => 'invoice', |
|
Lines 684-706
my $search_orders = SearchOrders({
Link Here
|
| 684 |
basketno => $basketno |
298 |
basketno => $basketno |
| 685 |
}); |
299 |
}); |
| 686 |
isa_ok( $search_orders, 'ARRAY' ); |
300 |
isa_ok( $search_orders, 'ARRAY' ); |
| 687 |
( |
|
|
| 688 |
$test_missing_fields, $test_extra_fields, |
| 689 |
$test_different_fields, $test_nbr_fields |
| 690 |
) |
| 691 |
= _check_fields_of_orders( \@expectedfields, \@order_content, |
| 692 |
$search_orders ); |
| 693 |
is( |
| 694 |
$$test_nbr_fields[0], |
| 695 |
scalar @expectedfields, |
| 696 |
"SearchOrders gets orders with the right number of fields" |
| 697 |
); |
| 698 |
is( join( " ", @$test_missing_fields ), |
| 699 |
'', "SearchOrders gets orders with no missing fields" ); |
| 700 |
is( join( " ", @$test_extra_fields ), |
| 701 |
'', "SearchOrders gets orders with no unexpected fields" ); |
| 702 |
is( join( " ", @$test_different_fields ), |
| 703 |
'', "SearchOrders gets orders with the right content in every fields" ); |
| 704 |
ok( |
301 |
ok( |
| 705 |
( |
302 |
( |
| 706 |
( scalar @$search_orders == 4 ) |
303 |
( scalar @$search_orders == 4 ) |
|
Lines 755-788
is( scalar (@$search_orders), 0, "SearchOrders takes into account the biblionumb
Link Here
|
| 755 |
ok( GetBudgetByOrderNumber( $ordernumbers[0] )->{'budget_id'} eq $budgetid, |
352 |
ok( GetBudgetByOrderNumber( $ordernumbers[0] )->{'budget_id'} eq $budgetid, |
| 756 |
"GetBudgetByOrderNumber returns expected budget" ); |
353 |
"GetBudgetByOrderNumber returns expected budget" ); |
| 757 |
|
354 |
|
| 758 |
# |
|
|
| 759 |
# Test GetLateOrders |
| 760 |
# |
| 761 |
|
| 762 |
@expectedfields = qw ( |
| 763 |
orderdate |
| 764 |
author |
| 765 |
budget |
| 766 |
supplierid |
| 767 |
claims_count |
| 768 |
supplier |
| 769 |
publisher |
| 770 |
ordernumber |
| 771 |
quantity |
| 772 |
basketno |
| 773 |
claimed_date |
| 774 |
branch |
| 775 |
estimateddeliverydate |
| 776 |
title |
| 777 |
publicationyear |
| 778 |
unitpricelib |
| 779 |
unitpricesupplier |
| 780 |
subtotal |
| 781 |
latesince |
| 782 |
basketname |
| 783 |
basketgroupid |
| 784 |
basketgroupname |
| 785 |
); |
| 786 |
my @lateorders = GetLateOrders(0); |
355 |
my @lateorders = GetLateOrders(0); |
| 787 |
is( scalar grep ( $_->{basketno} eq $basketno, @lateorders ), |
356 |
is( scalar grep ( $_->{basketno} eq $basketno, @lateorders ), |
| 788 |
0, "GetLateOrders does not get orders from opened baskets" ); |
357 |
0, "GetLateOrders does not get orders from opened baskets" ); |
|
Lines 794-815
ok( !grep ( $_->{ordernumber} eq $ordernumbers[3], @lateorders ),
Link Here
|
| 794 |
"GetLateOrders does not gets cancelled orders" ); |
363 |
"GetLateOrders does not gets cancelled orders" ); |
| 795 |
ok( !grep ( $_->{ordernumber} eq $ordernumbers[4], @lateorders ), |
364 |
ok( !grep ( $_->{ordernumber} eq $ordernumbers[4], @lateorders ), |
| 796 |
"GetLateOrders does not gets reveived orders" ); |
365 |
"GetLateOrders does not gets reveived orders" ); |
| 797 |
( |
|
|
| 798 |
$test_missing_fields, $test_extra_fields, |
| 799 |
$test_different_fields, $test_nbr_fields |
| 800 |
) |
| 801 |
= _check_fields_of_orders( \@expectedfields, \@order_content, \@lateorders ); |
| 802 |
is( |
| 803 |
$$test_nbr_fields[0], |
| 804 |
scalar @expectedfields, |
| 805 |
"GetLateOrders gets orders with the right number of fields" |
| 806 |
); |
| 807 |
is( join( " ", @$test_missing_fields ), |
| 808 |
'', "GetLateOrders gets orders with no missing fields" ); |
| 809 |
is( join( " ", @$test_extra_fields ), |
| 810 |
'', "GetLateOrders gets orders with no unexpected fields" ); |
| 811 |
is( join( " ", @$test_different_fields ), |
| 812 |
'', "GetLateOrders gets orders with the right content in every fields" ); |
| 813 |
|
366 |
|
| 814 |
$search_orders = SearchOrders({ |
367 |
$search_orders = SearchOrders({ |
| 815 |
booksellerid => $booksellerid, |
368 |
booksellerid => $booksellerid, |
| 816 |
- |
|
|