Bug 21798: Fix another test
[koha.git] / t / db_dependent / NewsChannels.t
index fb32df5..928ddd5 100644 (file)
@@ -1,24 +1,23 @@
 #!/usr/bin/perl
 
 use Modern::Perl;
-use C4::Branch qw(GetBranchName);
+use Koha::Database;
 use Koha::DateUtils;
+use Koha::Libraries;
 
-use Test::More tests => 12;
+use Test::More tests => 14;
 
 BEGIN {
     use_ok('C4::NewsChannels');
 }
 
+my $schema = Koha::Database->new->schema;
+$schema->storage->txn_begin;
 my $dbh = C4::Context->dbh;
 
-# Start transaction
-$dbh->{AutoCommit} = 0;
-$dbh->{RaiseError} = 1;
-
 # Add LIB1, if it doesn't exist.
 my $addbra = 'LIB1';
-if ( !GetBranchName($addbra) ) {
+unless ( Koha::Libraries->find($addbra) ) {
     $dbh->do( q{ INSERT INTO branches (branchcode,branchname) VALUES (?,?) },
         undef, ( $addbra, "$addbra branch" ) );
 }
@@ -29,7 +28,6 @@ my $addcat = 'CAT1';
     my $sth = $dbh->prepare( q{ SELECT categorycode FROM categories WHERE categorycode = ? } );
     $sth->execute ( $addcat );
     if ( not defined $sth->fetchrow () ) {
-        diag("Category $addcat not found, inserting");
         $dbh->do( q{ INSERT INTO categories (categorycode,description) VALUES (?,?) },
             undef, ( $addcat, "$addcat description") );
     }
@@ -47,7 +45,6 @@ my $brwrnmbr;
 
     # Not found, let us insert it.
     if ( not defined $brwrnmbr ) {
-        diag("Borrower $addbrwr not found, inserting");
         $dbh->do( q{ INSERT INTO borrowers (surname, address, city, branchcode, categorycode) VALUES (?, ?, ?, ?, ?) },
             undef, ($addbrwr, '(test) address', '(test) city', $addbra, $addcat) );
 
@@ -65,15 +62,16 @@ ok ( defined $brwrnmbr );
 
 # Test add_opac_new
 my $rv = add_opac_new();    # intentionally bad
-ok( $rv == 0, 'Correctly failed on no parameter!' );
+is( $rv, 0, 'Correctly failed on no parameter!' );
 
 my $timestamp = '2000-01-01';
 my ( $timestamp1, $timestamp2 ) = ( $timestamp, $timestamp );
+my $timestamp3 = '2000-01-02';
 my ( $title1, $new1, $lang1, $expirationdate1, $number1 ) =
   ( 'News Title', '<p>We have some exciting news!</p>', q{}, '2999-12-30', 1 );
 my $href_entry1 = {
     title          => $title1,
-    new            => $new1,
+    content        => $new1,
     lang           => $lang1,
     expirationdate => $expirationdate1,
     timestamp      => $timestamp1,
@@ -82,13 +80,13 @@ my $href_entry1 = {
 };
 
 $rv = add_opac_new($href_entry1);
-ok( $rv == 1, 'Successfully added the first dummy news item!' );
+is( $rv, 1, 'Successfully added the first dummy news item!' );
 
 my ( $title2, $new2, $lang2, $expirationdate2, $number2 ) =
   ( 'News Title2', '<p>We have some exciting news!</p>', q{}, '2999-12-31', 1 );
 my $href_entry2 = {
     title          => $title2,
-    new            => $new2,
+    content        => $new2,
     lang           => $lang2,
     expirationdate => $expirationdate2,
     timestamp      => $timestamp2,
@@ -97,42 +95,56 @@ my $href_entry2 = {
     branchcode     => 'LIB1',
 };
 $rv = add_opac_new($href_entry2);
-ok( $rv == 1, 'Successfully added the second dummy news item!' );
+is( $rv, 1, 'Successfully added the second dummy news item!' );
+
+my ( $title3, $new3, $lang3, $number3 ) =
+  ( 'News Title3', '<p>News without expiration date</p>', q{}, 1 );
+my $href_entry3 = {
+    title          => $title3,
+    content        => $new3,
+    lang           => $lang3,
+    timestamp      => $timestamp3,
+    number         => $number3,
+    borrowernumber => $brwrnmbr,
+    branchcode     => 'LIB1',
+};
+$rv = add_opac_new($href_entry3);
+is( $rv, 1, 'Successfully added the third dummy news item without expiration date!' );
 
 # We need to determine the idnew in a non-MySQLism way.
 # This should be good enough.
 my $query =
 q{ SELECT idnew from opac_news WHERE timestamp='2000-01-01' AND expirationdate='2999-12-30'; };
-my $sth = $dbh->prepare($query);
-$sth->execute();
-my $idnew1 = $sth->fetchrow;
+my ( $idnew1 ) = $dbh->selectrow_array( $query );
 $query =
 q{ SELECT idnew from opac_news WHERE timestamp='2000-01-01' AND expirationdate='2999-12-31'; };
-$sth = $dbh->prepare($query);
-$sth->execute();
-my $idnew2 = $sth->fetchrow;
+my ( $idnew2 ) = $dbh->selectrow_array( $query );
+
+$query =
+q{ SELECT idnew from opac_news WHERE timestamp='2000-01-02'; };
+my ( $idnew3 ) = $dbh->selectrow_array( $query );
 
 # Test upd_opac_new
 $rv = upd_opac_new();    # intentionally bad parmeters
-ok( $rv == 0, 'Correctly failed on no parameter!' );
+is( $rv, 0, 'Correctly failed on no parameter!' );
 
 $new2                 = '<p>Update! There is no news!</p>';
-$href_entry2->{new}   = $new2;
+$href_entry2->{content}   = $new2;
 $href_entry2->{idnew} = $idnew2;
 $rv                   = upd_opac_new($href_entry2);
-ok( $rv == 1, 'Successfully updated second dummy news item!' );
+is( $rv, 1, 'Successfully updated second dummy news item!' );
 
 # Test get_opac_new (single news item)
-$timestamp1      = output_pref( { dt => dt_from_string( $timestamp1 ), dateonly => 1, dateformat => 'iso' } );
-$expirationdate1 = output_pref( { dt => dt_from_string( $expirationdate1 ), dateonly => 1, dateformat => 'iso' } );
-$timestamp2      = output_pref( { dt => dt_from_string( $timestamp2 ), dateonly => 1, dateformat => 'iso' } );
-$expirationdate2 = output_pref( { dt => dt_from_string( $expirationdate2) , dateonly => 1, dateformat => 'iso' } );
+$timestamp1      = output_pref( { dt => dt_from_string( $timestamp1 ), dateonly => 1 } );
+$expirationdate1 = output_pref( { dt => dt_from_string( $expirationdate1 ), dateonly => 1 } );
+$timestamp2      = output_pref( { dt => dt_from_string( $timestamp2 ), dateonly => 1 } );
+$expirationdate2 = output_pref( { dt => dt_from_string( $expirationdate2) , dateonly => 1 } );
 
 is_deeply(
     get_opac_new($idnew1),
     {
         title          => $title1,
-        new            => $new1,
+        content        => $new1,
         lang           => $lang1,
         expirationdate => $expirationdate1,
         timestamp      => $timestamp1,
@@ -155,7 +167,7 @@ is_deeply(
     get_opac_new($idnew2),
     {  
         title          => $title2,
-        new            => $new2,
+        content        => $new2,
         lang           => $lang2,
         expirationdate => $expirationdate2,
         timestamp      => $timestamp2,
@@ -169,6 +181,10 @@ is_deeply(
     'got back expected news item via get_opac_new - ID 2'
 );
 
+# Test get_opac_new (single news item without expiration date)
+my $news3 = get_opac_new($idnew3);
+is($news3->{ expirationdate }, undef, "Expiration date should be empty");
+
 # Test get_opac_news (multiple news items)
 my ( $opac_news_count, $arrayref_opac_news ) = get_opac_news( 0, q{}, 'LIB1' );
 
@@ -209,5 +225,3 @@ subtest 'Regression tests on author title, firstname, and surname.', sub {
     ok($check==3,'Both with and without author data tested');
     done_testing();
 };
-
-$dbh->rollback;