ba41b7da79
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>
55 lines
1.5 KiB
Perl
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};
|
|
}
|
|
|