#!/usr/bin/perl use strict; use warnings; use Test::More tests => 15; use File::Spec; use lib File::Spec->catdir(File::Spec->curdir(), "t", "lib"); use CGI::Application::NetNewsIface::Test::MockNNTP; use CGI::Application::NetNewsIface::Test::Data1; use DBI; use CGI::Application::NetNewsIface::Cache::DBI; use CGI::Application::NetNewsIface; my $db_file = File::Spec->catfile("t", "data", "testdb.sqlite"); my $dsn = "dbi:SQLite:dbname=$db_file"; sub create_db { unlink($db_file); my $app = CGI::Application::NetNewsIface->new( PARAMS => { 'nntp_server' => "nntp.shlomifish.org", 'articles_per_page' => 10, 'dsn' => $dsn, }, ); $app->init_cache__sqlite(); } sub normalize_thread { my ($thread, $coords) = @_; my $f; $f = sub { my $sub = shift; return { 'idx' => $sub->{idx}, (exists($sub->{subs}) ? ('subs' => [ map { $f->($_); } @{$sub->{'subs'}} ]) : () ) }; }; return [$f->($thread), $coords]; } { local $Net::NNTP::groups = Data1::get_groups(); { my $nntp = Net::NNTP->new("nntp.shlomifish.org"); create_db(); my $cache = CGI::Application::NetNewsIface::Cache::DBI->new( { 'nntp' => $nntp, 'dsn' => $dsn, }, ); # TEST ok ($cache, "Cache was initialized"); } { my $nntp = Net::NNTP->new("nntp.shlomifish.org"); create_db(); my $cache = CGI::Application::NetNewsIface::Cache::DBI->new( { 'nntp' => $nntp, 'dsn' => $dsn, }, ); # TEST is ($cache->select("perl.qa"), 0, "select() worked"); } { my $nntp = Net::NNTP->new("nntp.shlomifish.org"); create_db(); my $cache = CGI::Application::NetNewsIface::Cache::DBI->new( { 'nntp' => $nntp, 'dsn' => $dsn, }, ); # TEST is ($cache->select("perl.qa"), 0, "select() worked"); # TEST is ($cache->get_index_of_id( "44439745.6060604\@modperlcookbook.org" ), 11, "get_index_of_id() - 1" ); # TEST is ($cache->get_index_of_id( "20060418012117.GA6582\@yi.org", ), 16, "get_index_of_id() - 2" ); # TEST is ($cache->get_index_of_id( "20060418073833.GB1833\@klangraum" ), 25, "Existence of the article with the last index" ); # TEST is ($cache->select("perl.advocacy"), 0, "select(\"perl.advocacy\") worked"); # TEST is ($cache->get_index_of_id( "FE10499CE029B841A9DAAF12E5A52A1B011D9094\@XCH-NW-3V1.nw.nos.boeing.com", ), 2, "get_index_of_id() in perl.advocacy - 1" ); # TEST is ($cache->get_index_of_id( "x7d5g44iyg.fsf\@mail.sysarch.com", ), 4, "get_index_of_id() in perl.advocacy - 2" ); # TEST is ($cache->select("perl.qa"), 0, "select(\"perl.qa\") worked"); # TEST is ($cache->_get_parent(5), 4, "_get_parent() - 1", ); # TEST is ($cache->_get_parent(16), 13, "_get_parent() - 2", ); # TEST is ($cache->_get_parent(1), 0, "_get_parent() - 3", ); { my ($thread, $coords) = $cache->get_thread(2); # TEST is_deeply (normalize_thread($thread, $coords), [ # The thread { 'idx' => 1, 'subs' => [ { 'idx' => 2, 'subs' => [ { 'idx' => 3, } ], }, ], }, # The coords [0], ], "get_thread() - Try 1", ); # TEST is ($thread->{'subject'}, "Generator for Modules-Installing Makefiles", "Top-level thread item has data", ); } } } 1;