Bug 8995: (QA follow-up) Mock required sysprefs in the tests
[koha.git] / t / db_dependent / Koha_ExternalContent_RecordedBooks.t
1 use Modern::Perl;
2
3 use t::lib::Mocks;
4 use t::lib::TestBuilder;
5 use Test::More tests => 3;                      # last test to print
6 use C4::Auth;
7 use Koha::Database;
8
9 use Module::Load::Conditional qw( can_load );
10 SKIP: {
11     skip "cannot filnd WebService::ILS::RecordedBooks::PartnerPatron", 3
12       unless can_load( modules => {'WebService::ILS::RecordedBooks::PartnerPatron' => undef} );
13
14     use_ok('Koha::ExternalContent::RecordedBooks');
15
16     my $ocd_user_email = $ENV{RECORDEDBOOKS_TEST_USER_EMAIL};
17     SKIP: {
18         skip "Env RECORDEDBOOKS_TEST_USER_EMAIL not set", 2 unless $ocd_user_email;
19
20         my $ocd_secret = $ENV{RECORDEDBOOKS_TEST_CLIENT_SECRET}
21           || C4::Context->preference('RecordedBooksClientSecret');
22         my $ocd_library_id = $ENV{RECORDEDBOOKS_TEST_LIBRARY_ID}
23           || C4::Context->preference('RecordedBooksLibraryID');
24         my $ocd_domain = $ENV{RECORDEDBOOKS_TEST_DOMAIN}
25           || C4::Context->preference('RecordedBooksDomain');
26         skip "Env RECORDEDBOOKS_TEST_CLIENT_SECRET RECORDEDBOOKS_TEST_LIBRARY_ID RECORDEDBOOKS_TEST_DOMAIN not set", 2
27           unless $ocd_secret && $ocd_library_id && $ocd_domain;
28
29         my $schema = Koha::Database->schema;
30         $schema->storage->txn_begin;
31         my $builder = t::lib::TestBuilder->new();
32
33         t::lib::Mocks::mock_preference('RecordedBooksClientSecret', $ocd_secret);
34         t::lib::Mocks::mock_preference('RecordedBooksLibraryID', $ocd_library_id);
35         t::lib::Mocks::mock_preference('RecordedBooksDomain', $ocd_domain);
36
37         my $patron = $builder->build({
38             source => 'Borrower',
39             value => {
40                 email => $ocd_user_email,
41             }
42         });
43
44         my $session = C4::Auth::get_session("");
45         $session->param('number', $patron->{borrowernumber});
46         $session->flush;
47         my $client = Koha::ExternalContent::RecordedBooks->new({koha_session_id => $session->id});
48
49         my $user_agent_string = $client->user_agent->agent();
50         ok ($user_agent_string =~ m/^Koha/, 'User Agent string is set')
51           or diag("User Agent string: $user_agent_string");
52
53         ok ($client->search({query => "school"}), 'search()');
54     }
55 }