Bug 17950: Merge.t: Improve variable handling at top level
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Mon, 23 Jan 2017 10:40:48 +0000 (11:40 +0100)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 17 Feb 2017 11:41:48 +0000 (11:41 +0000)
This patch does:
[1] Remove unused $dbh.
[2] Move all mocking statements to one sub.
[3] Promote a few lexicals to globals when used in the subtests.

Test plan:
Run t/db_dependent/Authorities/Merge.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Mark Tompsett <mtompset@hotmail.com>
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
t/db_dependent/Authorities/Merge.t

index 628dff0..726bad6 100755 (executable)
@@ -28,20 +28,11 @@ t::lib::Mocks::mock_preference( 'marcflavour', $marcflavour ) if $marcflavour;
 
 my $schema  = Koha::Database->new->schema;
 $schema->storage->txn_begin;
-my $dbh = C4::Context->dbh;
 
-# Some advanced mocking :)
-my ( @zebrarecords, $index );
-my $context_mod = Test::MockModule->new( 'C4::Context' );
-my $search_mod = Test::MockModule->new( 'C4::Search' );
-my $zoom_mod = Test::MockModule->new( 'ZOOM::Query::CCL2RPN', no_auto => 1 );
-my $conn_obj = Test::MockObject->new;
-my $zoom_obj = Test::MockObject->new;
-my $zoom_record_obj = Test::MockObject->new;
-set_mocks();
-
-# Framework operations
-my ( $authtype1, $authtype2 ) = modify_framework();
+# Global variables, mocking and framework modifications
+our ( @zebrarecords, $index );
+my $mocks = set_mocks();
+our ( $authtype1, $authtype2 ) = modify_framework();
 
 subtest 'Test merge A1 to A2 (within same authtype)' => sub {
 # Tests originate from bug 11700
@@ -229,19 +220,29 @@ sub set_mocks {
     # Mock ZOOM objects: They do nothing actually
     # Get new_record_from_zebra to return the records
 
-    $context_mod->mock( 'Zconn', sub { $conn_obj; } );
-    $search_mod->mock( 'new_record_from_zebra', sub {
+    my $mocks;
+    $mocks->{context_mod} = Test::MockModule->new( 'C4::Context' );
+    $mocks->{search_mod} = Test::MockModule->new( 'C4::Search' );
+    $mocks->{zoom_mod} = Test::MockModule->new( 'ZOOM::Query::CCL2RPN', no_auto => 1 );
+    $mocks->{conn_obj} = Test::MockObject->new;
+    $mocks->{zoom_obj} = Test::MockObject->new;
+    $mocks->{zoom_record_obj} = Test::MockObject->new;
+
+    $mocks->{context_mod}->mock( 'Zconn', sub { $mocks->{conn_obj}; } );
+    $mocks->{search_mod}->mock( 'new_record_from_zebra', sub {
          return if $index >= @zebrarecords;
          return $zebrarecords[ $index++ ];
     });
-    $zoom_mod->mock( 'new', sub {} );
-
-    $conn_obj->mock( 'search', sub { $zoom_obj; } );
-    $zoom_obj->mock( 'destroy', sub {} );
-    $zoom_obj->mock( 'record', sub { $zoom_record_obj; } );
-    $zoom_obj->mock( 'search', sub {} );
-    $zoom_obj->mock( 'size', sub { @zebrarecords } );
-    $zoom_record_obj->mock( 'raw', sub {} );
+    $mocks->{zoom_mod}->mock( 'new', sub {} );
+
+    $mocks->{conn_obj}->mock( 'search', sub { $mocks->{zoom_obj}; } );
+    $mocks->{zoom_obj}->mock( 'destroy', sub {} );
+    $mocks->{zoom_obj}->mock( 'record', sub { $mocks->{zoom_record_obj}; } );
+    $mocks->{zoom_obj}->mock( 'search', sub {} );
+    $mocks->{zoom_obj}->mock( 'size', sub { @zebrarecords } );
+    $mocks->{zoom_record_obj}->mock( 'raw', sub {} );
+
+    return $mocks;
 }
 
 sub modify_framework {