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

(-)a/t/db_dependent/Illrequests.t (-16 / +173 lines)
Lines 22-27 use Koha::Database; Link Here
22
use Koha::Illrequestattributes;
22
use Koha::Illrequestattributes;
23
use Koha::Illrequest::Config;
23
use Koha::Illrequest::Config;
24
use Koha::Patrons;
24
use Koha::Patrons;
25
use Koha::MessageAttributes;
26
use Koha::MessageAttribute;
27
use Koha::Notice::Templates;
25
use Koha::AuthorisedValueCategories;
28
use Koha::AuthorisedValueCategories;
26
use Koha::AuthorisedValues;
29
use Koha::AuthorisedValues;
27
use t::lib::Mocks;
30
use t::lib::Mocks;
Lines 376-382 subtest 'Backend testing (mocks)' => sub { Link Here
376
379
377
subtest 'Backend core methods' => sub {
380
subtest 'Backend core methods' => sub {
378
381
379
    plan tests => 19;
382
    plan tests => 18;
380
383
381
    $schema->storage->txn_begin;
384
    $schema->storage->txn_begin;
382
385
Lines 567-586 subtest 'Backend core methods' => sub { Link Here
567
    }) }
570
    }) }
568
        "Generic confirm: missing to dies OK.";
571
        "Generic confirm: missing to dies OK.";
569
572
570
    dies_ok { $illrq->generic_confirm({
571
        current_branchcode => $illbrn->{branchcode},
572
        partners => $partner1->{email},
573
        stage => 'draft'
574
    }) }
575
        "Generic confirm: missing from dies OK.";
576
577
    $schema->storage->txn_rollback;
573
    $schema->storage->txn_rollback;
578
};
574
};
579
575
580
576
581
subtest 'Helpers' => sub {
577
subtest 'Helpers' => sub {
582
578
583
    plan tests => 7;
579
    plan tests => 21;
584
580
585
    $schema->storage->txn_begin;
581
    $schema->storage->txn_begin;
586
582
Lines 588-593 subtest 'Helpers' => sub { Link Here
588
    my $backend = Test::MockObject->new;
584
    my $backend = Test::MockObject->new;
589
    $backend->set_isa('Koha::Illbackends::Mock');
585
    $backend->set_isa('Koha::Illbackends::Mock');
590
    $backend->set_always('name', 'Mock');
586
    $backend->set_always('name', 'Mock');
587
    $backend->mock(
588
        'metadata',
589
        sub {
590
            my ( $self, $rq ) = @_;
591
            return {
592
                title => 'mytitle',
593
                author => 'myauthor'
594
            }
595
        }
596
    );
591
597
592
    my $config = Test::MockObject->new;
598
    my $config = Test::MockObject->new;
593
    $config->set_always('backend_dir', "/tmp");
599
    $config->set_always('backend_dir', "/tmp");
Lines 596-604 subtest 'Helpers' => sub { Link Here
596
        source => 'Borrower',
602
        source => 'Borrower',
597
        value => { categorycode => "A" }
603
        value => { categorycode => "A" }
598
    });
604
    });
605
    # Create a mocked branch with no email addressed defined
606
    my $illbrn = $builder->build({
607
        source => 'Branch',
608
        value => {
609
            branchcode => 'HDE',
610
            branchemail => "",
611
            branchillemail => "",
612
            branchreplyto => ""
613
        }
614
    });
599
    my $illrq = $builder->build({
615
    my $illrq = $builder->build({
600
        source => 'Illrequest',
616
        source => 'Illrequest',
601
        value => { branchcode => "CPL", borrowernumber => $patron->{borrowernumber} }
617
        value => { branchcode => "HDE", borrowernumber => $patron->{borrowernumber} }
602
    });
618
    });
603
    my $illrq_obj = Koha::Illrequests->find($illrq->{illrequest_id});
619
    my $illrq_obj = Koha::Illrequests->find($illrq->{illrequest_id});
604
    $illrq_obj->_config($config);
620
    $illrq_obj->_config($config);
Lines 606-617 subtest 'Helpers' => sub { Link Here
606
622
607
    # getPrefix
623
    # getPrefix
608
    $config->set_series('getPrefixes',
624
    $config->set_series('getPrefixes',
609
                        { CPL => "TEST", TSL => "BAR", default => "DEFAULT" },
625
                        { HDE => "TEST", TSL => "BAR", default => "DEFAULT" },
610
                        { A => "ATEST", C => "CBAR", default => "DEFAULT" });
626
                        { A => "ATEST", C => "CBAR", default => "DEFAULT" });
611
    is($illrq_obj->getPrefix({ brw_cat => "UNKNOWN", branch => "CPL" }), "TEST",
627
    is($illrq_obj->getPrefix({ brw_cat => "UNKNOWN", branch => "HDE" }), "TEST",
612
       "getPrefix: branch");
628
       "getPrefix: branch");
613
    $config->set_series('getPrefixes',
629
    $config->set_series('getPrefixes',
614
                        { CPL => "TEST", TSL => "BAR", default => "DEFAULT" },
630
                        { HDE => "TEST", TSL => "BAR", default => "DEFAULT" },
615
                        { A => "ATEST", C => "CBAR", default => "DEFAULT" });
631
                        { A => "ATEST", C => "CBAR", default => "DEFAULT" });
616
    is($illrq_obj->getPrefix({ branch => "UNKNOWN" }), "",
632
    is($illrq_obj->getPrefix({ branch => "UNKNOWN" }), "",
617
       "getPrefix: default");
633
       "getPrefix: default");
Lines 621-631 subtest 'Helpers' => sub { Link Here
621
637
622
    # id_prefix
638
    # id_prefix
623
    $config->set_series('getPrefixes',
639
    $config->set_series('getPrefixes',
624
                        { CPL => "TEST", TSL => "BAR", default => "DEFAULT" },
640
                        { HDE => "TEST", TSL => "BAR", default => "DEFAULT" },
625
                        { AB => "ATEST", CD => "CBAR", default => "DEFAULT" });
641
                        { AB => "ATEST", CD => "CBAR", default => "DEFAULT" });
626
    is($illrq_obj->id_prefix, "TEST-", "id_prefix: branch");
642
    is($illrq_obj->id_prefix, "TEST-", "id_prefix: branch");
627
    $config->set_series('getPrefixes',
643
    $config->set_series('getPrefixes',
628
                        { CPLT => "TEST", TSLT => "BAR", default => "DEFAULT" },
644
                        { HDET => "TEST", TSLT => "BAR", default => "DEFAULT" },
629
                        { AB => "ATEST", CD => "CBAR", default => "DEFAULT" });
645
                        { AB => "ATEST", CD => "CBAR", default => "DEFAULT" });
630
    is($illrq_obj->id_prefix, "", "id_prefix: default");
646
    is($illrq_obj->id_prefix, "", "id_prefix: default");
631
647
Lines 635-640 subtest 'Helpers' => sub { Link Here
635
    $illrq_obj->status('CANCREQ')->store;
651
    $illrq_obj->status('CANCREQ')->store;
636
    is($illrq_obj->requires_moderation, 'CANCREQ', "requires_moderation: Yes.");
652
    is($illrq_obj->requires_moderation, 'CANCREQ', "requires_moderation: Yes.");
637
653
654
    #send_patron_notice
655
    my $attr = Koha::MessageAttributes->find({ message_name => 'Ill_ready' });
656
    C4::Members::Messaging::SetMessagingPreference({
657
        borrowernumber => $patron->{borrowernumber},
658
        message_attribute_id => $attr->message_attribute_id,
659
        message_transport_types => ['email']
660
    });
661
    my $return_patron = $illrq_obj->send_patron_notice('ILL_PICKUP_READY');
662
    my $notice = $schema->resultset('MessageQueue')->search({
663
            letter_code => 'ILL_PICKUP_READY',
664
            message_transport_type => 'email',
665
            borrowernumber => $illrq_obj->borrowernumber
666
        })->next()->letter_code;
667
    is_deeply(
668
        $return_patron,
669
        { result => { success => ['email'], fail => [] } },
670
        "Correct return when notice created"
671
    );
672
    is($notice, 'ILL_PICKUP_READY' ,"Notice is correctly created");
673
674
    my $return_patron_fail = $illrq_obj->send_patron_notice();
675
    is_deeply(
676
        $return_patron_fail,
677
        { error => 'notice_no_type' },
678
        "Correct error when missing type"
679
    );
680
681
    #get_staff_to_address
682
    # Mock a KohaAdminEmailAddress syspref
683
    t::lib::Mocks::mock_preference(
684
        'KohaAdminEmailAddress',
685
        'kohaadmin@nowhere.com'
686
    );
687
    # No branch addresses defined and no ILLDefaultStaffEmail, so should
688
    # fall back to Koha admin address
689
    my $email_kohaadmin = $illrq_obj->get_staff_to_address;
690
    ok(
691
        $email_kohaadmin eq 'kohaadmin@nowhere.com',
692
        'get_staff_to_address falls back to Koha admin in the absence of other alternatives'
693
    );
694
    # General branch address defined, should fall back to that
695
    $builder->delete({ source => 'Branch', records => $illbrn });
696
    $illbrn = $builder->build({
697
        source => 'Branch',
698
        value => {
699
            branchcode => 'HDE',
700
            branchemail => 'branch@nowhere.com',
701
            branchillemail => "",
702
            branchreplyto => ""
703
        }
704
    });
705
    my $email_gen_branch = $illrq_obj->get_staff_to_address;
706
    ok(
707
        $email_gen_branch eq 'branch@nowhere.com',
708
        'get_staff_to_address falls back to general branch address when defined'
709
    );
710
    # ILL staff syspref address defined, should fall back to that
711
    t::lib::Mocks::mock_preference(
712
        'ILLDefaultStaffEmail',
713
        'illstaff@nowhere.com'
714
    );
715
    my $email_syspref = $illrq_obj->get_staff_to_address;
716
    ok(
717
        $email_syspref eq 'illstaff@nowhere.com',
718
        'get_staff_to_address falls back to ILLDefaultStaffEmail when defined'
719
    );
720
    # Branch ILL address defined, should use that
721
    $builder->delete({ source => 'Branch', records => $illbrn });
722
    $illbrn = $builder->build({
723
        source => 'Branch',
724
        value => {
725
            branchcode => 'HDE',
726
            branchemail => 'branch@nowhere.com',
727
            branchillemail => 'branchill@nowhere.com',
728
            branchreplyto => ""
729
        }
730
    });
731
    my $email_branch = $illrq_obj->get_staff_to_address;
732
    ok(
733
        $email_branch eq 'branchill@nowhere.com',
734
        'get_staff_to_address uses branch ILL address when defined'
735
    );
736
737
    #send_staff_notice
738
    # Specify that no staff notices should be send
739
    t::lib::Mocks::mock_preference('ILLSendStaffNotices', '');
740
    my $return_staff_cancel_fail =
741
        $illrq_obj->send_staff_notice('ILL_REQUEST_CANCEL');
742
    is_deeply(
743
        $return_staff_cancel_fail,
744
        { error => 'notice_not_enabled' },
745
        "Does not send notices that are not enabled"
746
    );
747
    # Specify that the cancel notice can be sent
748
    t::lib::Mocks::mock_preference('ILLSendStaffNotices', 'ILL_REQUEST_CANCEL');
749
    my $return_staff_cancel = $illrq_obj->send_staff_notice(
750
        'ILL_REQUEST_CANCEL'
751
    );
752
    my $cancel = $schema->resultset('MessageQueue')->search({
753
            letter_code => 'ILL_REQUEST_CANCEL',
754
            message_transport_type => 'email',
755
            to_address => 'branchill@nowhere.com'
756
        })->next()->letter_code;
757
    is_deeply(
758
        $return_staff_cancel,
759
        { success => 'notice_queued' },
760
        "Correct return when staff notice created"
761
    );
762
763
    my $return_staff_fail = $illrq_obj->send_staff_notice();
764
    is_deeply(
765
        $return_staff_fail,
766
        { error => 'notice_no_type' },
767
        "Correct error when missing type"
768
    );
769
770
    #get_notice
771
    my $not = $illrq_obj->get_notice({
772
        notice_code => 'ILL_REQUEST_CANCEL',
773
        transport   => 'email'
774
    });
775
776
    # We test the properties of the hashref separately because the random
777
    # hash ordering of the metadata means we can't test the entire thing
778
    # with is_deeply
779
    ok(
780
        $not->{module} eq 'ill',
781
        'Correct module return from get_notice'
782
    );
783
    ok(
784
        $not->{name} eq 'ILL request cancelled',
785
        'Correct name return from get_notice'
786
    );
787
    ok(
788
        $not->{message_transport_type} eq 'email',
789
        'Correct message_transport_type return from get_notice'
790
    );
791
    ok(
792
        $not->{title} eq 'Interlibrary loan request cancelled',
793
        'Correct title return from get_notice'
794
    );
795
638
    $schema->storage->txn_rollback;
796
    $schema->storage->txn_rollback;
639
};
797
};
640
798
641
- 

Return to bug 22818