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

(-)a/t/db_dependent/Illrequests.t (-16 / +173 lines)
Lines 26-31 use Koha::Patrons; Link Here
26
use Koha::ItemTypes;
26
use Koha::ItemTypes;
27
use Koha::Items;
27
use Koha::Items;
28
use Koha::Libraries;
28
use Koha::Libraries;
29
use Koha::MessageAttributes;
30
use Koha::MessageAttribute;
31
use Koha::Notice::Templates;
29
use Koha::AuthorisedValueCategories;
32
use Koha::AuthorisedValueCategories;
30
use Koha::AuthorisedValues;
33
use Koha::AuthorisedValues;
31
use t::lib::Mocks;
34
use t::lib::Mocks;
Lines 513-519 subtest 'Backend testing (mocks)' => sub { Link Here
513
516
514
subtest 'Backend core methods' => sub {
517
subtest 'Backend core methods' => sub {
515
518
516
    plan tests => 19;
519
    plan tests => 18;
517
520
518
    $schema->storage->txn_begin;
521
    $schema->storage->txn_begin;
519
522
Lines 704-723 subtest 'Backend core methods' => sub { Link Here
704
    }) }
707
    }) }
705
        "Generic confirm: missing to dies OK.";
708
        "Generic confirm: missing to dies OK.";
706
709
707
    dies_ok { $illrq->generic_confirm({
708
        current_branchcode => $illbrn->{branchcode},
709
        partners => $partner1->{email},
710
        stage => 'draft'
711
    }) }
712
        "Generic confirm: missing from dies OK.";
713
714
    $schema->storage->txn_rollback;
710
    $schema->storage->txn_rollback;
715
};
711
};
716
712
717
713
718
subtest 'Helpers' => sub {
714
subtest 'Helpers' => sub {
719
715
720
    plan tests => 7;
716
    plan tests => 21;
721
717
722
    $schema->storage->txn_begin;
718
    $schema->storage->txn_begin;
723
719
Lines 725-730 subtest 'Helpers' => sub { Link Here
725
    my $backend = Test::MockObject->new;
721
    my $backend = Test::MockObject->new;
726
    $backend->set_isa('Koha::Illbackends::Mock');
722
    $backend->set_isa('Koha::Illbackends::Mock');
727
    $backend->set_always('name', 'Mock');
723
    $backend->set_always('name', 'Mock');
724
    $backend->mock(
725
        'metadata',
726
        sub {
727
            my ( $self, $rq ) = @_;
728
            return {
729
                title => 'mytitle',
730
                author => 'myauthor'
731
            }
732
        }
733
    );
728
734
729
    my $config = Test::MockObject->new;
735
    my $config = Test::MockObject->new;
730
    $config->set_always('backend_dir', "/tmp");
736
    $config->set_always('backend_dir', "/tmp");
Lines 733-741 subtest 'Helpers' => sub { Link Here
733
        source => 'Borrower',
739
        source => 'Borrower',
734
        value => { categorycode => "A" }
740
        value => { categorycode => "A" }
735
    });
741
    });
742
    # Create a mocked branch with no email addressed defined
743
    my $illbrn = $builder->build({
744
        source => 'Branch',
745
        value => {
746
            branchcode => 'HDE',
747
            branchemail => "",
748
            branchillemail => "",
749
            branchreplyto => ""
750
        }
751
    });
736
    my $illrq = $builder->build({
752
    my $illrq = $builder->build({
737
        source => 'Illrequest',
753
        source => 'Illrequest',
738
        value => { branchcode => "CPL", borrowernumber => $patron->{borrowernumber} }
754
        value => { branchcode => "HDE", borrowernumber => $patron->{borrowernumber} }
739
    });
755
    });
740
    my $illrq_obj = Koha::Illrequests->find($illrq->{illrequest_id});
756
    my $illrq_obj = Koha::Illrequests->find($illrq->{illrequest_id});
741
    $illrq_obj->_config($config);
757
    $illrq_obj->_config($config);
Lines 743-754 subtest 'Helpers' => sub { Link Here
743
759
744
    # getPrefix
760
    # getPrefix
745
    $config->set_series('getPrefixes',
761
    $config->set_series('getPrefixes',
746
                        { CPL => "TEST", TSL => "BAR", default => "DEFAULT" },
762
                        { HDE => "TEST", TSL => "BAR", default => "DEFAULT" },
747
                        { A => "ATEST", C => "CBAR", default => "DEFAULT" });
763
                        { A => "ATEST", C => "CBAR", default => "DEFAULT" });
748
    is($illrq_obj->getPrefix({ brw_cat => "UNKNOWN", branch => "CPL" }), "TEST",
764
    is($illrq_obj->getPrefix({ brw_cat => "UNKNOWN", branch => "HDE" }), "TEST",
749
       "getPrefix: branch");
765
       "getPrefix: branch");
750
    $config->set_series('getPrefixes',
766
    $config->set_series('getPrefixes',
751
                        { CPL => "TEST", TSL => "BAR", default => "DEFAULT" },
767
                        { HDE => "TEST", TSL => "BAR", default => "DEFAULT" },
752
                        { A => "ATEST", C => "CBAR", default => "DEFAULT" });
768
                        { A => "ATEST", C => "CBAR", default => "DEFAULT" });
753
    is($illrq_obj->getPrefix({ branch => "UNKNOWN" }), "",
769
    is($illrq_obj->getPrefix({ branch => "UNKNOWN" }), "",
754
       "getPrefix: default");
770
       "getPrefix: default");
Lines 758-768 subtest 'Helpers' => sub { Link Here
758
774
759
    # id_prefix
775
    # id_prefix
760
    $config->set_series('getPrefixes',
776
    $config->set_series('getPrefixes',
761
                        { CPL => "TEST", TSL => "BAR", default => "DEFAULT" },
777
                        { HDE => "TEST", TSL => "BAR", default => "DEFAULT" },
762
                        { AB => "ATEST", CD => "CBAR", default => "DEFAULT" });
778
                        { AB => "ATEST", CD => "CBAR", default => "DEFAULT" });
763
    is($illrq_obj->id_prefix, "TEST-", "id_prefix: branch");
779
    is($illrq_obj->id_prefix, "TEST-", "id_prefix: branch");
764
    $config->set_series('getPrefixes',
780
    $config->set_series('getPrefixes',
765
                        { CPLT => "TEST", TSLT => "BAR", default => "DEFAULT" },
781
                        { HDET => "TEST", TSLT => "BAR", default => "DEFAULT" },
766
                        { AB => "ATEST", CD => "CBAR", default => "DEFAULT" });
782
                        { AB => "ATEST", CD => "CBAR", default => "DEFAULT" });
767
    is($illrq_obj->id_prefix, "", "id_prefix: default");
783
    is($illrq_obj->id_prefix, "", "id_prefix: default");
768
784
Lines 772-777 subtest 'Helpers' => sub { Link Here
772
    $illrq_obj->status('CANCREQ')->store;
788
    $illrq_obj->status('CANCREQ')->store;
773
    is($illrq_obj->requires_moderation, 'CANCREQ', "requires_moderation: Yes.");
789
    is($illrq_obj->requires_moderation, 'CANCREQ', "requires_moderation: Yes.");
774
790
791
    #send_patron_notice
792
    my $attr = Koha::MessageAttributes->find({ message_name => 'Ill_ready' });
793
    C4::Members::Messaging::SetMessagingPreference({
794
        borrowernumber => $patron->{borrowernumber},
795
        message_attribute_id => $attr->message_attribute_id,
796
        message_transport_types => ['email']
797
    });
798
    my $return_patron = $illrq_obj->send_patron_notice('ILL_PICKUP_READY');
799
    my $notice = $schema->resultset('MessageQueue')->search({
800
            letter_code => 'ILL_PICKUP_READY',
801
            message_transport_type => 'email',
802
            borrowernumber => $illrq_obj->borrowernumber
803
        })->next()->letter_code;
804
    is_deeply(
805
        $return_patron,
806
        { result => { success => ['email'], fail => [] } },
807
        "Correct return when notice created"
808
    );
809
    is($notice, 'ILL_PICKUP_READY' ,"Notice is correctly created");
810
811
    my $return_patron_fail = $illrq_obj->send_patron_notice();
812
    is_deeply(
813
        $return_patron_fail,
814
        { error => 'notice_no_type' },
815
        "Correct error when missing type"
816
    );
817
818
    #get_staff_to_address
819
    # Mock a KohaAdminEmailAddress syspref
820
    t::lib::Mocks::mock_preference(
821
        'KohaAdminEmailAddress',
822
        'kohaadmin@nowhere.com'
823
    );
824
    # No branch addresses defined and no ILLDefaultStaffEmail, so should
825
    # fall back to Koha admin address
826
    my $email_kohaadmin = $illrq_obj->get_staff_to_address;
827
    ok(
828
        $email_kohaadmin eq 'kohaadmin@nowhere.com',
829
        'get_staff_to_address falls back to Koha admin in the absence of other alternatives'
830
    );
831
    # General branch address defined, should fall back to that
832
    $builder->delete({ source => 'Branch', records => $illbrn });
833
    $illbrn = $builder->build({
834
        source => 'Branch',
835
        value => {
836
            branchcode => 'HDE',
837
            branchemail => 'branch@nowhere.com',
838
            branchillemail => "",
839
            branchreplyto => ""
840
        }
841
    });
842
    my $email_gen_branch = $illrq_obj->get_staff_to_address;
843
    ok(
844
        $email_gen_branch eq 'branch@nowhere.com',
845
        'get_staff_to_address falls back to general branch address when defined'
846
    );
847
    # ILL staff syspref address defined, should fall back to that
848
    t::lib::Mocks::mock_preference(
849
        'ILLDefaultStaffEmail',
850
        'illstaff@nowhere.com'
851
    );
852
    my $email_syspref = $illrq_obj->get_staff_to_address;
853
    ok(
854
        $email_syspref eq 'illstaff@nowhere.com',
855
        'get_staff_to_address falls back to ILLDefaultStaffEmail when defined'
856
    );
857
    # Branch ILL address defined, should use that
858
    $builder->delete({ source => 'Branch', records => $illbrn });
859
    $illbrn = $builder->build({
860
        source => 'Branch',
861
        value => {
862
            branchcode => 'HDE',
863
            branchemail => 'branch@nowhere.com',
864
            branchillemail => 'branchill@nowhere.com',
865
            branchreplyto => ""
866
        }
867
    });
868
    my $email_branch = $illrq_obj->get_staff_to_address;
869
    ok(
870
        $email_branch eq 'branchill@nowhere.com',
871
        'get_staff_to_address uses branch ILL address when defined'
872
    );
873
874
    #send_staff_notice
875
    # Specify that no staff notices should be send
876
    t::lib::Mocks::mock_preference('ILLSendStaffNotices', '');
877
    my $return_staff_cancel_fail =
878
        $illrq_obj->send_staff_notice('ILL_REQUEST_CANCEL');
879
    is_deeply(
880
        $return_staff_cancel_fail,
881
        { error => 'notice_not_enabled' },
882
        "Does not send notices that are not enabled"
883
    );
884
    # Specify that the cancel notice can be sent
885
    t::lib::Mocks::mock_preference('ILLSendStaffNotices', 'ILL_REQUEST_CANCEL');
886
    my $return_staff_cancel = $illrq_obj->send_staff_notice(
887
        'ILL_REQUEST_CANCEL'
888
    );
889
    my $cancel = $schema->resultset('MessageQueue')->search({
890
            letter_code => 'ILL_REQUEST_CANCEL',
891
            message_transport_type => 'email',
892
            to_address => 'branchill@nowhere.com'
893
        })->next()->letter_code;
894
    is_deeply(
895
        $return_staff_cancel,
896
        { success => 'notice_queued' },
897
        "Correct return when staff notice created"
898
    );
899
900
    my $return_staff_fail = $illrq_obj->send_staff_notice();
901
    is_deeply(
902
        $return_staff_fail,
903
        { error => 'notice_no_type' },
904
        "Correct error when missing type"
905
    );
906
907
    #get_notice
908
    my $not = $illrq_obj->get_notice({
909
        notice_code => 'ILL_REQUEST_CANCEL',
910
        transport   => 'email'
911
    });
912
913
    # We test the properties of the hashref separately because the random
914
    # hash ordering of the metadata means we can't test the entire thing
915
    # with is_deeply
916
    ok(
917
        $not->{module} eq 'ill',
918
        'Correct module return from get_notice'
919
    );
920
    ok(
921
        $not->{name} eq 'ILL request cancelled',
922
        'Correct name return from get_notice'
923
    );
924
    ok(
925
        $not->{message_transport_type} eq 'email',
926
        'Correct message_transport_type return from get_notice'
927
    );
928
    ok(
929
        $not->{title} eq 'Interlibrary loan request cancelled',
930
        'Correct title return from get_notice'
931
    );
932
775
    $schema->storage->txn_rollback;
933
    $schema->storage->txn_rollback;
776
};
934
};
777
935
778
- 

Return to bug 22818