The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use strict;

use CPAN::Testers::Data::Addresses;
use Data::Dumper;
use File::Slurp;
use Test::More tests => 5;

my $config = 't/_DBDIR/test-config.ini';
my $output = 't/_DBDIR/output.txt';

## Test Data

my $f = 't/_DBDIR/update.txt';
my @data = (
    '2975971,02975971-b19f-3f77-b713-d32bba55d77f,200901021220,0,0,barbie@example.com,Barbie,BARBIE',           # valid - existing tester
    '2975972,02975972-b19f-3f77-b713-d32bba55d77f,200901021220,0,0,,Barbie,BARBIE',                             # missing address
    '2975973,02975973-b19f-3f77-b713-d32bba55d77f,200901021220,0,0,barbie@example.com,,BARBIE',                 # missing name
    '2975974,02975974-b19f-3f77-b713-d32bba55d77f,200901021220,0,0,,,',                                         # missing address, name and display
    '2975975,02975975-b19f-3f77-b713-d32bba55d77f,200901021220,0,0,newtester@example.com,New Tester,NEWTESTER', # valid - new tester
    '2975971,02975971-b19f-3f77-b713-d32bba55d77f,200901021220,1,1,barbie@example.com,Barbie,BARBIE',           # valid - existing tester - wuth ids
    '2975971,02975971-b19f-3f77-b713-d32bba55d77f,,1,1,barbie@example.com,Barbie,BARBIE',                       # valid - missing date
    '2975971,,200901021220,1,1,barbie@example.com,Barbie,BARBIE',                                               # valid - missin guid
    ',,,1,1,barbie@example.com,Barbie,BARBIE',                                                                  # valid - no existing report
);

#            my ($reportid,$guid,$fulldate,$addressid,$testerid,$address,$name,$pause,$display,$match) = split(',');

SKIP: {
    skip "Unable to locate config file [$config]", 5   unless(-f $config);

    ### Prepare object
    my $obj;
    unlink($output)  if(-f $output);

    ### Test update() in more depth
    my $data = join("\n",@data);
    write_file($f,$data);
    $obj = CPAN::Testers::Data::Addresses->new(config => $config, output => $output, update => $f);

    # run update
    my $dbh = $obj->dbh;
    my @ct1 = $dbh->get_query('array','select count(*) from tester_profile');
    $obj->process;
    my @ct2 = $dbh->get_query('array','select count(*) from tester_profile');
    is($ct2[0]->[0] - $ct1[0]->[0], 1, '.. 2 address added');

    $obj = undef;

    # check output file
    my $content = read_file($output);
    like($content,qr/6 addresses mapped/s,'.. valid mapped addresses');
    like($content,qr/1 new testers/s,'.. new testers');
    like($content,qr/1 addresses added/s,'.. addresses added');
    like($content,qr/3 bogus lines/s,'.. bogus lines');
}