Koha/t/Search/History.t
Jonathan Druart ba41b7da79 Bug 10807: Add an authority search history for the OPAC
Like biblio, this feature provides an authority search history.
This history is available for connected and disconnected user.
If the user is not logged in Koha, the history is stored in an
anonymous user sessin.

The search history feature is now factorized in a new module.

This patch adds:
- 1 new db field search_history.type. It permits to distinguish the
  search type (biblio or authority).
- 1 new module C4::Search::History. It deals with 2 different storages:
  DB or cookie
- 2 new UT files: t/Search/History.t and t/db_dependent/Search/History.t
- 1 new behavior: the 'Search history' link (on the top-right corner of
  the screen) is always displayed.

Test plan:
 1/ Switch on the 'EnableOpacSearchHistory' syspref.
 2/ Go on the opac and log out.
 3/ Launch some biblio and authority searches.
 4/ Go on your search history page.
 5/ Check that all yours searches are displayed.
 6/ Click on some links and check that results are consistent.
 7/ Delete your biblio history searches.
 8/ Delete your authority searches history searches.
 9/ Launch some biblio and authority searches
10/ Delete all your history (cross on the top-right corner)
11/ Check that all your history search is empty.
12/ Launch some biblio and authority searches.
13/ Login to your account.
14/ Check that all previous searches are displayed.
15/ Launch some biblio and authority searches.
16/ Check that these previous searches are displayed under "Current
session".
17/ Play with the 4 delete links (current / previous and biblio /
authority).

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
All patches together pass QA script and tests.
Also, new tests in t/db_dependent/ pass.

Tested in all 4 OPAC themes, being logged in and anonymous.
Anonymous search history will be appended to personal search
history after logging in.
Also verified that cleanup_database still purges search history,
now also including the authority searchs.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2014-05-05 02:32:27 +00:00

55 lines
1.5 KiB
Perl

#!/usr/bin/env perl
use Modern::Perl;
use Test::More tests => 6;
use URI::Escape;
use JSON qw( decode_json );
use_ok('Koha::DateUtils');
use_ok('C4::Search::History');
use_ok('C4::Auth', qw/get_session/ );
# Test session
my $expected_recent_searches = [
{
'time' => 1374978877,
'query_cgi' => 'idx=&q=history&branch_group_limit=',
'total' => 2,
'query_desc' => 'kw,wrdl: history, '
}
];
# Create new session and put its id into CGISESSID cookie
my $session = C4::Auth::get_session("");
$session->flush;
my $input = new CookieSimulator({CGISESSID => $session->id});
my @recent_searches = C4::Search::History::get_from_session({ cgi => $input });
is_deeply(\@recent_searches, [], 'at start, there is no recent searches');
C4::Search::History::set_to_session({ cgi => $input, search_history => $expected_recent_searches });
@recent_searches = C4::Search::History::get_from_session({ cgi => $input });
is_deeply(\@recent_searches, $expected_recent_searches, 'recent searches set and retrieved successfully');
C4::Search::History::set_to_session({ cgi => $input, search_history => [] });
@recent_searches = C4::Search::History::get_from_session({ cgi => $input });
is_deeply(\@recent_searches, [], 'recent searches emptied successfully');
# Delete session
$session->delete;
$session->flush;
package CookieSimulator;
sub new {
my ($class, $hashref) = @_;
my $val = $hashref;
return bless $val, $class;
}
sub cookie {
my ($self, $name) = @_;
return $self->{$name};
}