The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -T

use strict;
use warnings;

use Carp qw/croak/;
use File::Temp;

BEGIN {
    eval "use DBD::SQLite";
    $@ and croak 'DBD::SQLite is a required dependancy';

    # give alternate path to the DB
    $ENV{ACME_QUOTEDB_PATH} = 
          File::Temp->new( UNLINK => 0,
                           EXLOCK => 0,
                           SUFFIX => '.dat',
                     );
}

use Test::More tests => 9;
use File::Basename qw/dirname/;
use File::Spec;
use DBI;
use ACME::QuoteDB;
use ACME::QuoteDB::LoadDB;

{ # prove it's not using the provided db path
  my $def_db = File::Spec->catfile( (dirname(__FILE__), '..', 'lib', 'ACME',
                            'QuoteDB', 'DB'), 'quotes.db'
               );
  if ( -e $def_db ) { 
    ok unlink $def_db;
  } 
  else {
    ok 'already gone';
  }
}

ok -z $ENV{ACME_QUOTEDB_PATH};
 
{
  my $q = File::Spec->catfile((dirname(__FILE__),'data'), 
      'simpsons_quotes.tsv.csv'
  );

  my $load_db = ACME::QuoteDB::LoadDB->new({
                              file        => $q,
                              file_format => 'tsv',
                              create_db   => 1,
                              delimiter   => "\t",
                              attribution => 'The Simpsons',
                              category    => 'Humor',
                              rating      => 6,
                              #verbose     =>1
                          });
  
  isa_ok $load_db, 'ACME::QuoteDB::LoadDB';
  $load_db->data_to_db;
  ok $load_db->success;
  is $load_db->success, 1;

   
  my $sq = ACME::QuoteDB->new;
  isa_ok $sq, 'ACME::QuoteDB';
  
  # expected attribution list from our data
  my @expected_attribution_list = (
           'Apu Nahasapemapetilon',
           'Chief Wiggum',
           'Comic Book Guy',
           'Grandpa Simpson',
           'Ralph Wiggum',
          );
  
  is( $sq->list_attr_names, join "\n", sort @expected_attribution_list);

  $load_db = undef;
}
ok ! -z $ENV{ACME_QUOTEDB_PATH};

my $dbh = DBI->connect('dbi:SQLite:dbname='.$ENV{ACME_QUOTEDB_PATH},'','');
my $count = $dbh->selectrow_hashref('SELECT COUNT(*) AS COUNT FROM quote');
is $count->{COUNT}, 29 ;