From 296e364e26792b5218f90e25afa8fe2ce2ebdf49 Mon Sep 17 00:00:00 2001 From: Mason James Date: Fri, 6 Jul 2012 15:43:06 +1200 Subject: [PATCH] Bug 5327 - Unit tests required for all C4 modules Content-Type: text/plain; charset="utf-8" http://koha-community.org renamed: Koha.t -> db_dependent/Koha.t Signed-off-by: Mason James --- t/Koha.t | 31 ------------- t/db_dependent/Koha.t | 120 ++++++++---------------------------------------- 2 files changed, 20 insertions(+), 131 deletions(-) delete mode 100755 t/Koha.t mode change 100644 => 100755 t/db_dependent/Koha.t diff --git a/t/Koha.t b/t/Koha.t deleted file mode 100755 index 025ab98..0000000 --- a/t/Koha.t +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/perl -use strict; -use warnings; - -use Test::More tests => 8; - -use_ok('C4::Koha'); - -# -# test that &slashifyDate returns correct (non-US) date -# -my $date = "01/01/2002"; -my $newdate = &slashifyDate("2002-01-01"); -my $isbn13 = "9780330356473"; -my $isbn13D = "978-0-330-35647-3"; -my $isbn10 = "033035647X"; -my $isbn10D = "0-330-35647-X"; - -ok($date eq $newdate, 'slashifyDate'); - -my $undef = undef; -is(xml_escape($undef), '', 'xml_escape() returns empty string on undef input'); -my $str = q{'"&<>'}; -is(xml_escape($str), ''"&<>'', 'xml_escape() works as expected'); -is($str, q{'"&<>'}, '... and does not change input in place'); - -is(C4::Koha::_isbn_cleanup('0-590-35340-3'), '0590353403', '_isbn_cleanup removes hyphens'); -is(C4::Koha::_isbn_cleanup('0590353403 (pbk.)'), '0590353403', '_isbn_cleanup removes parenthetical'); -is(C4::Koha::_isbn_cleanup('978-0-321-49694-2'), '0321496949', '_isbn_cleanup converts ISBN-13 to ISBN-10'); - - diff --git a/t/db_dependent/Koha.t b/t/db_dependent/Koha.t old mode 100644 new mode 100755 index e53e936..025ab98 --- a/t/db_dependent/Koha.t +++ b/t/db_dependent/Koha.t @@ -1,111 +1,31 @@ #!/usr/bin/perl -# -# This is to test C4/Koha -# It requires a working Koha database with the sample data - use strict; use warnings; -use C4::Context; - -use Test::More tests => 4; -use DateTime::Format::MySQL; - -eval {use Test::Deep;}; - -BEGIN { - use_ok('C4::Koha', qw( :DEFAULT GetDailyQuote )); - use_ok('C4::Members'); -} - -my $dbh = C4::Context->dbh; - -subtest 'Authorized Values Tests' => sub { - plan tests => 6; - - my $data = { - category => 'CATEGORY', - authorised_value => 'AUTHORISED_VALUE', - lib => 'LIB', - lib_opac => 'LIBOPAC', - imageurl => 'IMAGEURL' - }; - - -# Insert an entry into authorised_value table - my $query = "INSERT INTO authorised_values (category, authorised_value, lib, lib_opac, imageurl) VALUES (?,?,?,?,?);"; - my $sth = $dbh->prepare($query); - my $insert_success = $sth->execute($data->{category}, $data->{authorised_value}, $data->{lib}, $data->{lib_opac}, $data->{imageurl}); - ok($insert_success, "Insert data in database"); - - -# Tests - SKIP: { - skip "INSERT failed", 5 unless $insert_success; - is ( GetAuthorisedValueByCode($data->{category}, $data->{authorised_value}), $data->{lib}, "GetAuthorisedValueByCode" ); - is ( GetKohaImageurlFromAuthorisedValues($data->{category}, $data->{lib}), $data->{imageurl}, "GetKohaImageurlFromAuthorisedValues" ); +use Test::More tests => 8; - my $sortdet=C4::Members::GetSortDetails("lost", "3"); - is ($sortdet, "Lost and Paid For", "lost and paid works"); +use_ok('C4::Koha'); - my $sortdet2=C4::Members::GetSortDetails("loc", "child"); - is ($sortdet2, "Children's Area", "Child area works"); - - my $sortdet3=C4::Members::GetSortDetails("withdrawn", "1"); - is ($sortdet3, "Withdrawn", "Withdrawn works"); - } - -# Clean up - if($insert_success){ - $query = "DELETE FROM authorised_values WHERE category=? AND authorised_value=? AND lib=? AND lib_opac=? AND imageurl=?;"; - $sth = $dbh->prepare($query); - $sth->execute($data->{category}, $data->{authorised_value}, $data->{lib}, $data->{lib_opac}, $data->{imageurl}); - } -}; -### test for C4::Koha->GetDailyQuote() -SKIP: - { - skip "Test::Deep required to run the GetDailyQuote tests.", 1 if $@; - - subtest 'Daily Quotes Test' => sub { - plan tests => 4; - - SKIP: { - - skip "C4::Koha can't \'GetDailyQuote\'!", 3 unless can_ok('C4::Koha','GetDailyQuote'); - - my $expected_quote = { - id => 3, - source => 'Abraham Lincoln', - text => 'Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.', - timestamp => re('\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}'), #'0000-00-00 00:00:00', - }; - -# test quote retrieval based on id - - my $quote = GetDailyQuote('id'=>3); - cmp_deeply ($quote, $expected_quote, "Got a quote based on id.") or - diag('Be sure to run this test on a clean install of sample data.'); - -# test random quote retrieval - - $quote = GetDailyQuote('random'=>1); - ok ($quote, "Got a random quote."); +# +# test that &slashifyDate returns correct (non-US) date +# +my $date = "01/01/2002"; +my $newdate = &slashifyDate("2002-01-01"); +my $isbn13 = "9780330356473"; +my $isbn13D = "978-0-330-35647-3"; +my $isbn10 = "033035647X"; +my $isbn10D = "0-330-35647-X"; -# test quote retrieval based on today's date +ok($date eq $newdate, 'slashifyDate'); - my $query = 'UPDATE quotes SET timestamp = ? WHERE id = ?'; - my $sth = C4::Context->dbh->prepare($query); - $sth->execute(DateTime::Format::MySQL->format_datetime(DateTime->now), $expected_quote->{'id'}); +my $undef = undef; +is(xml_escape($undef), '', 'xml_escape() returns empty string on undef input'); +my $str = q{'"&<>'}; +is(xml_escape($str), ''"&<>'', 'xml_escape() works as expected'); +is($str, q{'"&<>'}, '... and does not change input in place'); - DateTime::Format::MySQL->format_datetime(DateTime->now) =~ m/(\d{4}-\d{2}-\d{2})/; - $expected_quote->{'timestamp'} = re("^$1"); +is(C4::Koha::_isbn_cleanup('0-590-35340-3'), '0590353403', '_isbn_cleanup removes hyphens'); +is(C4::Koha::_isbn_cleanup('0590353403 (pbk.)'), '0590353403', '_isbn_cleanup removes parenthetical'); +is(C4::Koha::_isbn_cleanup('978-0-321-49694-2'), '0321496949', '_isbn_cleanup converts ISBN-13 to ISBN-10'); -# $expected_quote->{'timestamp'} = DateTime::Format::MySQL->format_datetime(DateTime->now); # update the timestamp of expected quote data - $quote = GetDailyQuote(); # this is the "default" mode of selection - cmp_deeply ($quote, $expected_quote, "Got a quote based on today's date.") or - diag('Be sure to run this test on a clean install of sample data.'); - } - }; -} -- 1.7.2.5