Bug 13278: t/Search.t shouldn't depend on the DB
authorTomas Cohen Arazi <tomascohen@gmail.com>
Tue, 18 Nov 2014 04:05:30 +0000 (01:05 -0300)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Wed, 19 Nov 2014 21:11:54 +0000 (18:11 -0300)
To reproduce:
- Stop your MySQL server:
  $ sudo service mysql stop
- Run
  $ prove t/Search.t
=> FAIL: some tests fail because of mysql stopped

To test (MySQL still stopped)
- Apply the patch
- Run
  $ prove t/Search.t
=> SUCCESS: tests pass because the ycan be loaded regardless of
            the absence of the DB server
- Sign off :-D

Regards

Signed-off-by: Magnus Enger <digitalutvikling@gmail.com>
Turned off MySQL and ran the tests before and after the patch.
Works as advertised.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
t/Search.t

index 286d36a..69ed79f 100755 (executable)
 use Modern::Perl;
 
 use Test::More tests => 3;
-
-BEGIN {
-    use_ok('C4::Search');
-    can_ok('C4::Search',
-        qw/_build_initial_query/);
-}
+use Test::MockModule;
+use DBD::Mock;
+
+# Mock the DB connexion and C4::Context
+my $context = new Test::MockModule('C4::Context');
+$context->mock( '_new_dbh', sub {
+        my $dbh = DBI->connect( 'DBI:Mock:', '', '' )
+          || die "Cannot create handle: $DBI::errstr\n";
+        return $dbh;
+});
+
+use_ok('C4::Search');
+can_ok('C4::Search',
+    qw/_build_initial_query/);
 
 subtest "_build_initial_query tests" => sub {