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;

# -------------------------------------------------------------------
# Library Modules

use lib qw(t/lib);
use Test::More tests => 9;

use CPAN::Testers::WWW::Reports::Mailer;

use TestObject;

# -------------------------------------------------------------------
# Variables

my $CONFIG = 't/_DBDIR/preferences.ini';

my %prefs = (
    LBROCARD => {
        'version'   => 'LATEST',
        'ignored'   => 0,
        'perl'      => 'ALL',
        'report'    => '1',
        'tuple'     => 'FIRST',
        'platform'  => 'ALL',
        'patches'   => 0,
        'grades'    => {
            'FAIL'      => 1
        }
    },
    NOONE => {
        'active'    => 0,
        'version'   => 'LATEST',
        'ignored'   => 0,
        'perl'      => 'ALL',
        'report'    => '1',
        'tuple'     => 'FIRST',
        'platform'  => 'ALL',
        'patches'   => 0,
        'grades'    => {
            'FAIL'      => 1
        }
    },
    BARBIE => {
        'active'    => 3,
        'version'   => 'LATEST',
        'ignored'   => 0,
        'perl'      => 'ALL',
        'report'    => '3',
        'tuple'     => 'FIRST',
        'platform'  => 'ALL',
        'patches'   => 0,
        'grades'    => {
            'ALL'       => 1
        }
    },
    SAPER => {
        'version'   => 'LATEST',
        'active'    => '3',
        'ignored'   => 0,
        'perl'      => 'ALL',
        'report'    => '1',
        'tuple'     => 'FIRST',
        'platform'  => 'ALL',
        'patches'   => 0,
        'grades'    => {
            'FAIL'      => 1
        }
    },
);

# -------------------------------------------------------------------
# Tests

SKIP: {
    skip "No supported databases available", 9  unless(-f $CONFIG);

    ok( my $obj = TestObject->load(), "got object" );


    is_deeply($obj->_get_prefs('LBROCARD','-'),                     $prefs{LBROCARD},   'found author prefs - LBROCARD');
    is_deeply($obj->_get_prefs('SAPER','Acme-CPANAuthors-French'),  $prefs{SAPER},      'found author prefs - SAPER');

#use Data::Dumper;
#print STDERR Dumper($obj->_get_prefs('LBROCARD','-'));
#print STDERR Dumper($obj->_get_prefs('SAPER','Acme-CPANAuthors-French','-'));

    my $row  = {};
    my $hash = {
        'version'   => 'LATEST',
        'ignored'   => 0,
        'perl'      => 'ALL',
        'report'    => 1,
        'tuple'     => 'FIRST',
        'platform'  => 'ALL',
        'patches'   => 0,
        'grades'    => {
            'FAIL'      => 1
        }
    };

    is_deeply($obj->_parse_prefs($row), $hash, 'default prefs parse');
#print STDERR Dumper($obj->_parse_prefs($row));

    $row = {
        grade       => 'PASS,FAIL,UNKNOWN,NA',
        ignored     => 1,
        report      => 0,
        tuple       => 'ALL',
        version     => 'ALL',
        patches     => 1,
        perl        => '5.8.8',
        platform    => 'Linux'
    };
    $hash = {
        'version'   => 'ALL',
        'ignored'   => 1,
        'perl'      => '5.8.8',
        'report'    => 0,
        'tuple'     => 'ALL',
        'platform'  => 'Linux',
        'patches'   => 1,
        'grades'    => {
            'PASS'      => 1,
            'FAIL'      => 1,
            'UNKNOWN'   => 1,
            'NA'        => 1
        }
    };

    is_deeply($obj->_parse_prefs($row), $hash, 'default prefs parse');
#print STDERR Dumper($obj->_parse_prefs($row));

    is_deeply($obj->_get_prefs('NOONE'),               $prefs{NOONE},  'author not found - NOONE');
    is_deeply($obj->_get_prefs('BARBIE'),              $prefs{BARBIE}, 'found author prefs - BARBIE');
    is_deeply($obj->_get_prefs('SAPER'),               $prefs{SAPER},  'found author prefs - SAPER');
    is_deeply($obj->_get_prefs('SAPER','Fake-Distro'), $prefs{SAPER},  'found author prefs - SAPER - for unset Distro');
}