Bug 19489: (QA follow-up) Update test to use objects and module methods for creating...
[koha.git] / t / Images.t
index c35d5bd..338a903 100644 (file)
@@ -1,54 +1,71 @@
 #!/usr/bin/perl
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
 #
-#Testing C4 Images
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
+
+use Modern::Perl;
 
-use strict;
-use warnings;
-use Test::More tests => 7;
+use Test::More;
 use Test::MockModule;
 
+use Module::Load::Conditional qw/check_install/;
+
 BEGIN {
-    use_ok('C4::Images');
+    if ( check_install( module => 'Test::DBIx::Class' ) ) {
+        plan tests => 8;
+    } else {
+        plan skip_all => "Need Test::DBIx::Class"
+    }
 }
 
-my $module = new Test::MockModule('C4::Context');
-$module->mock(
-    '_new_dbh',
-    sub {
-        my $dbh = DBI->connect( 'DBI:Mock:', '', '' )
-          || die "Cannot create handle: $DBI::errstr\n";
-        return $dbh;
-    }
+use_ok('C4::Images');
+
+use Test::DBIx::Class;
+
+# Make the code in the module use our mocked Koha::Schema/Koha::Database
+my $db = Test::MockModule->new('Koha::Database');
+$db->mock(
+    # Schema() gives us the DB connection set up by Test::DBIx::Class
+    _new_schema => sub { return Schema(); }
 );
+
+my $biblionumber = 2;
 my $images = [
-    [ 'imagenumber', 'biblionumber', 'mimetype', 'imagefile', 'thumbnail' ],
-    [ 1, 2, 'gif',  'red',  001, 000 ],
-    [ 3, 2, 'jpeg', 'blue', 111, 110 ]
+    [ 1, $biblionumber, 'gif',  'imagefile1', 'thumbnail1' ],
+    [ 3, $biblionumber, 'jpeg', 'imagefile3', 'thumbnail3' ],
 ];
-my $dbh = C4::Context->dbh();
+fixtures_ok [
+    Biblioimage => [
+        [ 'imagenumber', 'biblionumber', 'mimetype', 'imagefile', 'thumbnail' ],
+        @$images,
+    ],
+], 'add fixtures';
 
-$dbh->{mock_add_resultset} = $images;
-
-my $image = C4::Images::RetrieveImage();
+my $image = C4::Images::RetrieveImage(1);
 
 is( $image->{'imagenumber'}, 1, 'First imagenumber is 1' );
 
-is( $image->{'mimetype'}, 'gif', 'First mimetype is red' );
-
-is( $image->{'thumbnail'}, 001, 'First thumbnail is 001' );
+is( $image->{'mimetype'}, 'gif', 'First mimetype is gif' );
 
-$image = C4::Images::RetrieveImage();
+is( $image->{'thumbnail'}, 'thumbnail1', 'First thumbnail is correct' );
 
-$image = C4::Images::RetrieveImage();
-
-$dbh->{mock_add_resultset} = $images;
-
-my @imagenumbers = C4::Images::ListImagesForBiblio();
+my @imagenumbers = C4::Images::ListImagesForBiblio($biblionumber);
 
 is( $imagenumbers[0], 1, 'imagenumber is 1' );
 
 is( $imagenumbers[1], 3, 'imagenumber is 3' );
 
-$dbh->{mock_add_resultset} = $images;
-
 is( $imagenumbers[4], undef, 'imagenumber undef' );
+