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

# You must configure ck_connect.pl to connect with
# your database.
#
# You must also set up the ck_code table schema.
# and load data/ck_setup.core before this will run.

use Test;
BEGIN { plan tests => 21 };

use strict;
use warnings;
use lib 'blib/lib';
use DBI;
use DBIx::CodeKit;
require("ck_connect.pl");
ok(1);

my $dbh = ck_connect();
ok(1);

my $ckh = DBIx::CodeKit->new($dbh);
ok(1);

# Clean up old data.
$ckh->remove('regression',  1);
$ckh->remove('regression', '2');
$ckh->put('regression', 3, undef);
ok(1);

# Test basic puts.
$ckh->put('regression',  1,  'Monday');
$ckh->put('regression', '2', 'Tuesday', '');
ok(1);

# And gets.

ok( join(',', $ckh->get('regression', '1')), 'Monday,1,' );
ok( join(',', $ckh->get('regression',  2 )), 'Tuesday,2,' );

# Simple select.
my $expect;
$expect = '<select name="regression">
<option value="" selected>Coffee Date?
<option value="1">Monday
<option value="2">Tuesday
</select>
';
ok( $ckh->select('regression',
                 select_prompt => 'Coffee Date?'
                 ), $expect );

# Slave & desc methods.
$ckh->put('regression', '3', 'wednes day');
ok( join(',', $ckh->get('regression', 3)), 'wednes day,3,' );
ok( $ckh->desc('regression', 3),           'wednes day' );
ok( $ckh->ucfirst('regression', 3),        'Wednes day' );
ok( $ckh->ucwords('regression', 3),        'Wednes Day' );
ok( $ckh->data('regression', 3),           'wednes day' );
ok( $ckh->data('regression', 4),           '' );
$ckh->put('regression', '3', 'Wednesday', 3);
ok( join(',', $ckh->get('regression', 3)), 'Wednesday,3,' );


# Select options.
$expect = '<select name="regression_test" onchange="submit()">
<option value="">(None)
<option value="1">Monday
<option value="2" selected>Tuesday
</select>
';
ok( $ckh->select('regression',
                var_name     => 'regression_test',
                value        => '2',
                subset       => [ 1, '2' ],
                options      => 'onchange="submit()"',
                blank_prompt => '(None)'
                ), $expect );

# Radiobox options.
$expect = '<input type="radio" name="rt" onchange="submit()" value="">(None)<br>
<input type="radio" name="rt" onchange="submit()" value="1">Monday<br>
<input type="radio" name="rt" onchange="submit()" value="2" checked>Tuesday';
ok( $ckh->radio('regression',
                var_name     => 'rt',
                default      => '2',
                subset       => [ 1, '2' ],
                options      => 'onchange="submit()"',
                blank_prompt => '(None)'
                ), $expect);

# Select multiple options.
$expect= '<select multiple name="reg_test[]" onchange="submit()" size="10">
<option value="1">Monday
<option value="2" selected>Tuesday
<option value="3" selected>Wednesday
</select>
';
ok( $ckh->multiple('regression',
                var_name => 'reg_test',
                value    => [ '2', 3 ],
                subset   => [ 1, '2', 3 ],
                options  => 'onchange="submit()"',
                size     => 10
                ), $expect);

# Checkbox options.
$expect = '<input type="checkbox" name="checkbox_test[]" onchange="submit()" value="1" checked>Monday<br>
<input type="checkbox" name="checkbox_test[]" onchange="submit()" value="2">Tuesday<br>
<input type="checkbox" name="checkbox_test[]" onchange="submit()" value="3" checked>Wednesday';
ok( $ckh->checkbox('regression',
                var_name => 'checkbox_test',
                value    => [ '1', 3 ],
                subset   => [ 1, '2', 3 ],
                options  => 'onchange="submit()"'
                ), $expect);

# Clean up old data.
$ckh->remove('regression',  1);
$ckh->remove('regression', '2');
$ckh->put('regression', 3, '');
ok(1);

my $rows = $ckh->code_set('regression');
ok(@$rows, 0);