From 43d848c662017b9a4e59c7de134735cb5564df9c Mon Sep 17 00:00:00 2001
From: Julian Maurice <julian.maurice@biblibre.com>
Date: Wed, 18 Dec 2013 10:58:36 +0100
Subject: [PATCH] Bug 10952: comments fixes and unit tests
- Remove unit tests for ParseSearchHistoryCookie, which doesn't exist
anymore
- Add unit tests for ParseSearchHistorySession and
SetSearchHistorySession
- Remove/Modify comments about search history cookie
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Tests fixed and moved, and comments tidied up
---
C4/Auth.pm | 2 +-
opac/opac-search-history.pl | 7 ++--
opac/opac-search.pl | 4 +-
t/db_dependent/Auth_ParseSearchHistoryCookie.t | 43 ---------------------
t/db_dependent/Auth_SearchHistorySession.t | 52 ++++++++++++++++++++++++++
5 files changed, 57 insertions(+), 51 deletions(-)
delete mode 100644 t/db_dependent/Auth_ParseSearchHistoryCookie.t
create mode 100644 t/db_dependent/Auth_SearchHistorySession.t
diff --git a/C4/Auth.pm b/C4/Auth.pm
index 0d4daec..7bc7bd9 100644
--- a/C4/Auth.pm
+++ b/C4/Auth.pm
@@ -260,7 +260,7 @@ sub get_template_and_user {
$template->param(ShowOpacRecentSearchLink => 1);
}
- # And if there's a cookie with searches performed when the user was not logged in,
+ # And if there are searches performed when the user was not logged in,
# we add them to the logged-in search history
my @recentSearches = ParseSearchHistorySession($in->{'query'});
if (@recentSearches) {
diff --git a/opac/opac-search-history.pl b/opac/opac-search-history.pl
index 4c02ba8..760b52f 100755
--- a/opac/opac-search-history.pl
+++ b/opac/opac-search-history.pl
@@ -44,18 +44,17 @@ my ($template, $loggedinuser, $cookie)= get_template_and_user({template_name =>
debug => 1,
});
-# If the user is not logged in, we deal with the cookie
+# If the user is not logged in, we deal with the session
if (!$loggedinuser) {
# Deleting search history
if ($cgi->param('action') && $cgi->param('action') eq 'delete') {
- # Deleting cookie's content
+ # Deleting session's search history
SetSearchHistorySession($cgi, []);
- # Redirecting to this same url with the cookie in the headers so it's deleted immediately
+ # Redirecting to this same url so the user won't see the search history link in the header
my $uri = $cgi->url();
print $cgi->redirect(-uri => $uri);
-
# Showing search history
} else {
diff --git a/opac/opac-search.pl b/opac/opac-search.pl
index 00cd8e3..617d67e 100755
--- a/opac/opac-search.pl
+++ b/opac/opac-search.pl
@@ -614,7 +614,6 @@ for (my $i=0;$i<@servers;$i++) {
}
# Opac search history
- my $newsearchcookie;
if (C4::Context->preference('EnableOpacSearchHistory')) {
my @recentSearches = ParseSearchHistorySession($cgi);
@@ -638,11 +637,10 @@ for (my $i=0;$i<@servers;$i++) {
}
shift @recentSearches if (@recentSearches > 15);
- # Pushing the cookie back
SetSearchHistorySession($cgi, \@recentSearches);
}
else {
- # To the session (the user is logged in)
+ # To the database (the user is logged in)
if (!$offset) {
AddSearchHistory($borrowernumber, $cgi->cookie("CGISESSID"), $query_desc_history, $query_cgi_history, $total);
$template->param(ShowOpacRecentSearchLink => 1);
diff --git a/t/db_dependent/Auth_ParseSearchHistoryCookie.t b/t/db_dependent/Auth_ParseSearchHistoryCookie.t
deleted file mode 100644
index 507ac91..0000000
--- a/t/db_dependent/Auth_ParseSearchHistoryCookie.t
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-use Test::More tests => 3;
-
-use_ok('C4::Auth', qw/ParseSearchHistoryCookie/);
-
-my $valid_cookie = "%5B%7B%22time%22%3A1374978877%2C%22query_cgi%22%3A%22idx%3D%26q%3Dhistory%26branch_group_limit%3D%22%2C%22total%22%3A2%2C%22query_desc%22%3A%22kw%2Cwrdl%3A%20history%2C%20%22%7D%5D";
-my $expected_recent_searches = [
- {
- 'time' => 1374978877,
- 'query_cgi' => 'idx=&q=history&branch_group_limit=',
- 'total' => 2,
- 'query_desc' => 'kw,wrdl: history, '
- }
-];
-
-my $input = CookieSimulator->new($valid_cookie);
-my @recent_searches = ParseSearchHistoryCookie($input);
-is_deeply(\@recent_searches, $expected_recent_searches, 'parsed valid search history cookie value');
-
-# simulate bit of a Storable-based search history cookie
-my $invalid_cookie = "%04%08%0812345";
-$input = CookieSimulator->new($invalid_cookie);
-@recent_searches = ParseSearchHistoryCookie($input);
-is_deeply(\@recent_searches, [], 'got back empty search history list if given invalid cookie');
-
-package CookieSimulator;
-
-sub new {
- my ($class, $str) = @_;
- my $val = [ $str ];
- return bless $val, $class;
-}
-
-sub cookie {
- my $self = shift;
- return $self->[0];
-}
-
-1;
diff --git a/t/db_dependent/Auth_SearchHistorySession.t b/t/db_dependent/Auth_SearchHistorySession.t
new file mode 100644
index 0000000..1e0a0ea
--- /dev/null
+++ b/t/db_dependent/Auth_SearchHistorySession.t
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4;
+
+use_ok('C4::Auth', qw/ParseSearchHistorySession SetSearchHistorySession get_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 = get_session("");
+$session->flush;
+my $input = new CookieSimulator({CGISESSID => $session->id});
+
+my @recent_searches = ParseSearchHistorySession($input);
+is_deeply(\@recent_searches, [], 'at start, there is no recent searches');
+
+SetSearchHistorySession($input, $expected_recent_searches);
+@recent_searches = ParseSearchHistorySession($input);
+is_deeply(\@recent_searches, $expected_recent_searches, 'recent searches set and retrieved successfully');
+
+SetSearchHistorySession($input, []);
+@recent_searches = ParseSearchHistorySession($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};
+}
+
+1;
--
1.8.3.2